为什么选择ref="/tag/2028/" style="color:#E3A3CF;font-weight:bold;">Ruby on Rails配合Nginx
如果你正在开发一个基于Ruby on Rails的应用,并打算部署到线上,Nginx是个不错的选择。它轻量、稳定,还能有效处理静态资源和反向代理请求。很多小型博客、电商后台甚至创业项目都用这套组合,就像家里装修选了耐用又好看的瓷砖一样踏实。
安装Ruby on Rails环境
先确保系统中已安装Ruby版本管理工具,比如rbenv或RVM。以Ubuntu为例:
sudo apt update
sudo apt install git curl libssl-dev libreadline-dev zlib1g-dev -y
\curl -sSL https://get.rvm.io | bash
source ~/.rvm/scripts/rvm
rvm install 3.1.0
rvm use 3.1.0 --default
gem install rails -v 7.0.4这样就装好了Rails开发所需的基础环境。
创建Rails应用并启动测试
新建一个项目试试看:
rails new myblog --database=postgresql
cd myblog
bin/rails server -b 0.0.0.0 -p 3000现在打开浏览器访问 http://你的服务器IP:3000,能看到Rails欢迎页,说明应用跑起来了。
安装与配置Nginx
Nginx负责把外部请求转发给Rails后端。继续在终端执行:
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx接着配置站点文件:
sudo nano /etc/nginx/sites-available/rails_app填入以下内容:
server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}启用配置:
sudo ln -s /etc/nginx/sites-available/rails_app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx这时候再访问你的服务器IP,不用加:3000端口,也能看到Rails页面了。
用Puma作为应用服务器更稳妥
Rails默认用的是WEBrick,不适合生产环境。推荐改用Puma,在config/puma.rb里设置好线程和worker数量:
workers 2
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
threads threads_count, threads_count
bind "tcp://0.0.0.0:3000"
environment "production"然后通过命令启动:
RAILS_ENV=production bundle exec puma -C config/puma.rb记得先预编译资产:
RAILS_ENV=production bin/rails assets:precompileNginx会自动把静态文件请求直接处理,不经过Puma,效率更高。
常见问题小贴士
如果页面显示502 Bad Gateway,大概率是Puma没起来或者端口不通。检查日志最直接:
tail -f log/production.log另外别忘了开放防火墙端口:
sudo ufw allow 'Nginx Full'
sudo ufw allow 22这套搭配用熟了,换服务器也能半小时内重新搭一套出来,适合个人项目快速上线。