Ruby&Rails---Rails5在ubuntu16.04配置nginx

之前在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

如果有遇到问题:https://stackoverflow.com/questions/28818597/nginx-and-passenger-dependencies-issue-digital-ocean-deployment

打开你的浏览器,输入 服务器 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

你可能感兴趣的:(Ruby&Rails---Rails5在ubuntu16.04配置nginx)