rails6 nginx + pumaを使用する

rails6 nginx + pumaを使用する

rails6でnginx + pumaを使用するまでの手順を記述してます。nginxのバージョンは1.18.0を使用してます。

環境

  • OS CentOS Linux release 7.9.2009 (Core)
  • Ruby 2.7.2
  • Rails 6.1.1
  • nginx 1.18.0
  • rbenv 1.1.2-40-g62d7798

puma設定

まずは、railsのwebアプリケーションサーバーである「puma」を設定します。

「config」ディレクトリ配下にある「puma.rb」を以下のように編集します。

これで、pumaのsockファイルのパスが指定できます。

UNIXドメインソケットによるプロセス間の通信となるため
「port ENV.fetch(“PORT”) { 3000 }」はコメントアウトしておきます。

設定が終われば、pumaをproduction環境で起動すれば
「tmp/sockets/puma.sock」が作成されます。

puma.sockが作成される。

nginx設定

「/etc/nginx/conf.d」に任意の名前で「forpuma.conf」というファイルを以下の名称で作成します。

「/etc/nginx」ディレクトリ配下にある「nginx.conf」のユーザーを変更しておきます。ここでは、railsの実行ユーザーに変更してます。
※これをやらないと権限でエラーとなります。

「nginx.conf」を編集します。

port80を使用する場合は、デフォルトの方のポートを変更しておきます。

「/etc/nginx/conf.d/default.conf」

nginxを再起動します。

確認

先にプリコンパイル処理を実行しておきます。

railsを起動します。

これで、ブラウザから http://server_nameに指定したIPにアクセスすると、railsのTOPページが表示されます。

1対多(rails)

nginxが1つに対して、railsを複数設定する場合はnginxのラウンドロビンを使用することで可能になります。

ipごとに切り分ける場合は「ip_hash;」を追加します。