Nginx + Passenger + Rails
最近开发一个 Rails 项目,项目 Demo 已经初步完成,需要部署到服务器。平时都是使用 Rails 自带 WebBrick, 或者使用 thin,很少配置 production 环境的。今天实践了一遍,虽然也遇到了几个坑,过程还算顺利。
相关软件版本
- Ubuntu Server 14.04
- Ruby 2.0.0-p481
- Passenger 4.0.46
总体步骤
- 安装 Passenger
- 安装 Nginx
- 配置 Nginx
安装 Passenger
gem install passenger
安装 Nginx
不可以使用官方的 Nginx,为跟 Passenger 集成,需要单独设置编译。不过你不用为“设置” “编译”苦恼,因为已经有编译安装脚本。
rvmsudo passenger-install-nginx-modul
按着提示内容进行选择就行,我的原则就是“能默认就默认”,一路回车就好。
编译可能需要一段时间,大约几分钟吧。
安装命令
在这里我就遇到了一个坑,本来现在就能打 Nginx 就能看到默认页面了。
sudo service nginx start
or
sudo /etc/init.d/nginx stop
但是输入以上命令,不能启用 Nginx,提示类似 “no service named nginx"
不问为什么,但求结果,google了一下,找到了解决方式。
wget -O init-deb.sh http://library.linode.com/assets/660-init-deb.sh
sudo mv init-deb.sh /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/update-rc.d -f nginx defaults
现在就能通过命令控制 Nginx 了
sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx start
sudo /etc/init.d/nginx restart
配置 Nginx
sudo v /opt/nginx/conf/nginx.conf
配置倒是很简洁,主要是因为我要求也简单,能用即可:)
server {
listen 80;
server_name localhost;
passenger_enabled on;
root /path/to/your_app/public;
}
具体为什么指向 public 页面,我也不知道。重要的是it works