之前在https://www.jianshu.com/p/94e43753f80a上已经部署好生产环境,现在需要配置nginx。
步骤1:安装 Nginx + Passenger 快方法:用套件安装
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
$ sudo apt install -y apt-transport-https ca-certificates
# Add our APT repository
$ sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main > /etc/apt/sources.list.d/passenger.list'
$ sudo apt update
# Install Passenger + Nginx
$ sudo apt install -y nginx-extras passenger
打开你的浏览器,输入 服务器 IP 地址,应该就可以看到默认的 Nginx 网页了:Welcome to nginx on Ubuntu!
Nginx启动和重开用法:
$ sudo service nginx start
$ sudo service nginx stop
$ sudo service nginx restart
步骤2:设定 Nginx
编辑 /etc/nginx/nginx.conf,去掉注释打开以下一行:
include /etc/nginx/passenger.conf;
在 /etc/nginx/nginx.conf最上方新增一行:
env PATH;
少这一行的话,等会 Rails 会找不到 nodejs 的路径,在 nginx error log 中会有 Message from application: There was an error while trying to load the gem ‘uglifier’. Gem Load Error is: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. 的错误。
新增 /etc/nginx/sites-enabled/your_project_name.conf
server {
listen 80;
server_name huangpeidong.xin; //你的域名,如果没有域名,就用ip
root /home/hpd/ieltsbro_production/hpd_ieltsbro/public; //你的工程的public目录
passenger_enabled on;
passenger_min_instances 1;
location ~ ^/assets/ {
expires 1y;
add_header Cache-Control public;
add_header ETag "";
break;
}
}
以上设定包括设定Assets静态档案成为永不过期(Rails的Assets Pipeline会加上版本号,所以不需要担心)、设定Passenger至少开一个Process。其中server_name your_domain.com请会换成你的domain。如果Domain name还没注册好,可以先用服务器IP地址。但是如果你的服务器上有多个Rails专案或网站,就必须用不同domain来区分。
如果有多个domain连到同一个服务器,可以用空白区隔,例如:
server_name huangpeidong.xin www.huangpeidong.xin;
这样三个 domain 都会连到同一个 Rails 了。
最后执行sudo service nginx restart便会启用Nginx设定。如果之后你的Rails有任何修改要重新加载,但是并不想把Nginx整个重开,请在你的Rails应用程式目录下执行touch tmp/restart.txt即可,这样Passenger就会知道要重新加载Rails,而不需要重开Nginx。
参考文章:http://blog.csdn.net/ximi_qin287624952/article/details/70169614