LoginSignup
1
9

More than 5 years have passed since last update.

Nginx + unicorn + Rails本番環境構築メモ

Last updated at Posted at 2018-10-16

実行環境など

CentOS Linux release 7.5.1804 (Core)
Rails 5.2.1
ruby 2.5.1p57

let's encrypt でssl証明書取得済み
ドメイン設定済み

【CentOS 7】Nginx + Unicorn で Rails アプリケーションを本番環境で立ち上げる方法

基本的にはこの記事に書かれている方法にしたがって設定していけば正常に起動できた。
【CentOS 7】Nginx + Unicorn で Rails アプリケーションを本番環境で立ち上げる方法

以下では、他に個人的に行った操作を記述する。

unicornの起動でつまずく

$ rake unicorn:startこのコマンドでは起動に失敗し、エラーメッセージにしたがって下記のコマンドを実行することで無事起動した。

$ bundle exec rake unicorn:start

sslの設定

/etc/nginx/conf.d/rails(default).confを下記のように編集することで取得したドメインを用いたssl通信にも成功した。

/etc/nginx/conf.d/rails.conf
upstream unicorn {
    server  unix:{Railsアプリケーションのあるディレクトリ}/tmp/unicorn.sock;
}
server {
    listen       80;
    server_name {取得したドメイン名};
    return      301 https://$host$request_uri;
}

server {
    listen      443 ssl;
    server_name {取得したドメイン名};
    ssl_certificate /etc/letsencrypt/live/{取得したドメイン名}/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/{取得したドメイン名}/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    access_log  /var/log/nginx/ssl-access.log  main;
    error_log   /var/log/nginx/ssl-error.log;
    root {Railsアプリケーションのあるディレクトリ}/public;
    include /etc/nginx/mime.types;

    client_max_body_size 100m;
    error_page  404              /404.html;
    error_page  500 502 503 504  /500.html;
    try_files   $uri/index.html $uri @unicorn;

    location @unicorn {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_pass http://unicorn;
    }
}

追記

nginxの起動が行えない

この方法に従って本番環境構築を行ったところ、新たなエラーに遭遇したためその解決方法を追記。

$ systemctl start nginx

を実行すると、

Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.

とエラーが出てnginxの起動が行えない。

$ nginx -t

とすると

nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)

「「Permission denied」」

$ setenforce 0

のコマンドでSELinuxの動作モードをPermissiveに切り替えてあげてから

$ systemctl start nginx

実行で正常に起動。

参考サイト

【Ruby on Rails】Nginxとunicornを使ってHTTPS(SSL)対応する方法
トラブル対処の第一歩は「permissiveモード」

1
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
9