Pumaを使ってデーモン化&自動起動設定したRailsをNginXと連携する。

pumaデーモン化の自動起動は必須。

rails側をまず自動起動させておく必要がある。この記事にまとめてある。
hamakichitaro.hatenablog.com

pumaにソケットを定義しておく。config/puma.rb

bind "unix:///<プロジェクトルートをフルパス指定>/tmp/sockets/puma.sock"

nginxをインストール

sudo apt-get update
sudo apt-get install nginx

nginxに、ソケット経由で連携するよう設定する。/etc/nginx/conf.d/puma.conf

upstream <アプリ名> {
    # Path to Puma SOCK file, as defined previously
    server unix://<プロジェクトルートをフルパス指定>/tmp/sockets/puma.sock       fail_timeout=0;
    # 例  unix:///home/username/web-app/tmp/sockets/puma.sock
  }

server {
    listen 80;
    server_name <IPアドレスまたはホスト名で指定>;   #nginxでリクエストを受け付ける窓口

    root <プロジェクトルートをフルパス指定>/public;


    location / {
        proxy_pass http://localhost:3000;         #railsサービスを指定。例は、nginxと同じサーバーのポート3000でrailsがサービスしている。
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
    }

    error_page 500 502 503 504 /500.html;
    client_max_body_size 4G;
    keepalive_timeout 10;
}

nginxを再起動

sudo service nginx restart

参考サイト

qiita.com