デプロイ後、pumaを再起動する方法は?

Rails、Puma、Capistrano3を使っています。 gem capistrano3-puma もインストールしています。PumaはPuma Jungle https://github.com/puma/puma/tree/master/tools/jungle/upstartで始めてみました。

デプロイ中にPumaを再起動するにはどうすればよいですか?

ソリューション

以下のコマンドを使用して手動で再起動することができます。

bundle exec pumactl -P /home/deploy/.pids/puma.pid restart

正しいpidのパスを指していることを確認してください。

解説 (2)

プロダクション

本番でcapistranoを使用する場合は、以下のようになります。

cap production deploy:restart

開発版です。

開発環境であれば、pidの検索を開始することができます。

ps aux | grep puma

このようなものが表示されると思います。

user 11654  0.0 13.4 870204 137016 ?       Sl   Jul07   0:39 puma 2.13.4 (tcp://0.0.0.0:3000) [NameOfYourApp]

ユーザー名の横にある数字、この場合は 11654 がpumaサーバーのプロセスID(PID)です。このプロセスを手動で終了させ、サーバーを再起動させることができます。次のコマンドを実行してください。

kill -s 15 11654

このコマンドは kill the process with id 11654 using signal SIGTERM (code 15) と言っています。SIGTERMはプロセスを殺す 'kindly' すべてのファイル、接続を閉じ、バッファをきれいにする、などです。

最後にこのコマンドを実行します。

puma -e development -p 3000 -d

Pumaが再び開発モードで起動し、ポート3000でリッスンし、実行がデーモン化されます。

解説 (0)

私の知る限り、capistrano3-puma gem を使用している場合、デプロイ後に明示的に puma を再起動する必要はないようです。タスク add_default_hooks があり、デプロイ後に puma:smart_restart を実行します。

タスクの一覧は cap -vT で見ることができます。cap puma:restart`でうまくいくと思います。

解説 (1)