環境
- Ruby 2.6.6
- Rails 6.0.3
エラー内容
Railsアプリのディレクトリ上でローカルサーバーを起動したところ、以下のようなエラーが発生し、アプリにアクセスできない状況になってしまった。
このエラーの内容は、サーバーはすでに実行されているというもの。
ターミナル
$ rails s
=> Booting Puma
=> Rails 6.0.3 application starting in development
=> Run `rails server --help` for more startup options
A server is already running. Check /your_project_path/tmp/pids/server.pid.
Exiting
原因、仮説
エラーが発生した原因は、ローカルサーバーを停止する前に誤ってターミナルを閉じてしまったことにありそう。
ターミナルを閉じた後もローカルサーバーが動いている状態になっているため、ローカルサーバーが動いているプロセスを終了させれば解決しそう。
解決方法
まず、ローカルサーバーが動くプロセスのIDを調べるために、ターミナルで以下のコマンドを実行する。
ターミナル
$ lsof -i:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Google 15466 username 22u IPv6 0xda4848d42daa87b7 0t0 TCP localhost:55152->localhost:hbci (ESTABLISHED)
ruby 33412 username 14u IPv4 0xda4848cf62d8e48f 0t0 TCP localhost:hbci (LISTEN)
ruby 33412 username 15u IPv6 0xda4848d42dab0577 0t0 TCP localhost:hbci (LISTEN)
ruby 33412 username 31u IPv6 0xda4848d42daaaa17 0t0 TCP localhost:hbci->localhost:54993 (CLOSED)
ruby 33412 username 36u IPv6 0xda4848d42daab7d7 0t0 TCP localhost:hbci->localhost:55102 (CLOSED)
ruby 33412 username 37u IPv6 0xda4848d42daabeb7 0t0 TCP localhost:hbci->localhost:55147 (CLOSED)
ruby 33412 username 38u IPv6 0xda4848d42daada37 0t0 TCP localhost:hbci->localhost:55152 (ESTABLISHED)
ローカルサーバーが動いているプロセスのID(PID)は、COMMANDの値がrubyの33412
です。
なお、tmp/pids/server.pid.
のファイルを開くことでも確認することができます。
tmp/pids/server.pid.
33412
そして、ローカルサーバーのプロセスを終了させるために、ターミナルで以下のコマンドを実行する。
ターミナル
$ kill -9 33412
これで再度ローカルサーバーを起動することができるようになります。