実行環境など
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通信にも成功した。
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モード」