生活知识集
第二套高阶模板 · 更大气的阅读体验

Ruby on Rails配合Nginx搭建Web服务的实用指南

发布时间:2025-12-13 20:58:28 阅读:210 次

为什么选择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:precompile

Nginx会自动把静态文件请求直接处理,不经过Puma,效率更高。

常见问题小贴士

如果页面显示502 Bad Gateway,大概率是Puma没起来或者端口不通。检查日志最直接:

tail -f log/production.log

另外别忘了开放防火墙端口:

sudo ufw allow 'Nginx Full'
sudo ufw allow 22

这套搭配用熟了,换服务器也能半小时内重新搭一套出来,适合个人项目快速上线。