Pumaをソケット通信にしつつデーモン化する

Linux

ぬにょす(挨拶)。

rails s した際に起動するサーバーであるところのPumaをゴニョゴニョします。

スポンサーリンク

Puma側の設定

Railsプロジェクトディレクトリ配下の config/puma.rb を編集します。

## port をコメントアウト #port ENV.fetch("PORT") { 3000 } ## 追記ここから rails_root = Dir.pwd bind "unix://" + File.join(rails_root, 'tmp', 'sockets', 'puma.sock') pidfile File.join(rails_root, 'tmp', 'pids', 'puma.pid') state_path File.join(rails_root, 'tmp', 'pids', 'puma.state') stdout_redirect( File.join(rails_root, 'log', 'puma.log'), File.join(rails_root, 'log', 'puma-error.log'), true ) daemonize ## ここまで
Code language: Ruby (ruby)

Railsプロジェクトディレクトリで rails s するとPumaがデーモンとしてバックグラウンドで動きます。

$ bundle exec rails s => Booting Puma => Rails 5.2.2.1 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.12.1 (ruby 2.4.1-p111), codename: Llamas in Pajamas * Min threads: 5, max threads: 5 * Environment: development * Daemonizing...
Code language: plaintext (plaintext)

Pumaを止めたい時は ps ax | grep puma や cat tmp/pids/puma.pid などでプロセスIDを調べて kill します。

Nginx側の設定

設定例を参考にして編集します。

upstream puma { server unix:///home/hogehoge/hello-rails/tmp/sockets/puma.sock; } server { server_name example.com; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://puma; } }
Code language: Nginx (nginx)

Nginxを再起動します。

$ sudo nginx -t $ sudo systemctl reload nginx.service
Code language: plaintext (plaintext)

ブラウザでアクセスしたら、前と変わりなくRailsページが表示されました。

コメント