事象
Rails Server
を使用している際、通常は Ctrl + C
を使用して終了しますが、サーバーが正常に終了しない場合があります。再度 bin/rails s
コマンドで Rails Server
を起動しようとすると、以下のようなエラーが発生することがあります。
% bin/rails s
=> Booting Puma
=> Rails 7.0.4.3 application starting in development
=> Run `bin/rails server --help` for more startup options
A server is already running. Check /path/to/your/project/tmp/pids/server.pid
Exiting
こちらのエラーメッセージは Rails Server
が既に実行中であることを示しており、正常に終了していない、或いは異常終了して プロセスID(PID)
ファイルが残っていると表示されます。Rails
はサーバーを起動するとき tmp/pids/server.pid
ファイルに現在実行中のサーバープロセスの PID
を記録します。このファイルが存在すると新たにサーバーを起動しようとするとき、既にサーバーが実行中であると判断され、上記のエラーメッセージが表示されてサーバーの起動が中止されます。
対処法
今回のエラーを解消するためには、エラーメッセージに表示されているパスにある server.pid
ファイルを削除します。
rm /path/to/your/project/tmp/pids/server.pid
PID
ファイルを削除しても問題が解決しない場合、lsof
コマンドを使用して該当するポート(通常は Rails
のデフォルトである3000番ポート)を使用しているプロセスを見つけて終了させることができます。
lsof -i :3000
このコマンドは、3000番ポートを使用しているプロセスのリストを表示します。出力結果から PID
を探します。そして見つけた プロセスID
を使用してプロセスを終了させます。
kill -9 <PID>
<PID>
は前のコマンドで見つけた プロセスID
に置き換えます。-9オプション
はプロセスを強制終了させるために使用されます。
自らの備忘録のために投稿してますが、なにかお役に立てましたら幸いです!
また、なにか間違ってましたらご指摘いただけますと幸いです!