railsサーバーが起動しない。
rails s ができない現象の解決方法を5つまとめました。
こちらの方法で、rails sが正常に起動するようになります。
エラー画面がこんな感じです
❯ rails s
=> Booting Puma
=> Rails 5.0.7.2 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
A server is already running. Check プロジェクト名/tmp/pids/server.pid.
Exiting
解決策1 サーバーの切り忘れ
開いてるターミナルを全部終了して、rails sでサーバー起動をする
基本的には、どこかのターミナルでrails sが動きっぱなし、サーバーが起動している状態がほとんどなので、
そう言った場合は1つずつ「コントロール+C」を押して、サーバー停止させるか、ターミナルを消してしまいましょう。
解決策2 lsof -wni tcp:3000
$ lsof -wni tcp:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 28295 user 21u IPv4 0x77d8a30cabb79cc9 0t0 TCP 127.0.0.1:hbci (LISTEN)
ruby 28295 user 22u IPv6 0x77d8a30cac93f9f9 0t0 TCP [::1]:hbci (LISTEN)
# 「COMMAND」に「ruby」と書いてある行のPIDをコピーして処理を停止(今回は28295)
$ kill -9 28295
$ rails s
基本的に、これを試せばなおります。
僕はこれで治らなかった経験はありません笑
解決策3 ps aux | grep rails でプロセス削除
$ rails s
=> Booting Puma
=> Rails 5.0.7.2 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
A server is already running. Check プロジェクト名/tmp/pids/server.pid.
Exiting
$ ps aux | grep rails
user 28321 s001 S+ 0:00.00 grep rails
$ kill -9 28321
$ rails s
→ 解決
rails サーバーのプロセスを終了させる方法です。
実は、僕はこの方法で解決できたことがありません。
もしこの方法で直せた方や、原因が分かる方がいらっしゃればご教授願いますっ
解決策4 rm /tmp/pids/server.pid でパスを指定して削除
$ rm /tmp/pids/server.pid
$ rails s
→ 解決
このファイルの場所は[アプリ名]/tmp/pids/server.pidに入っているので、パスを指定して削除します。
本来、サーバーを終了するとこのファイルは削除されますが、残ったままでエラーになっている可能性があるみたい。
※ server.pidはサーバー起動や終了で勝手に作られたり削除されたりするので、普段は気にしなくて良いです。
まとめ
以上が、A server is already runningの解決方法でした!
基本的には、どこかのターミナルでrails sが動きっぱなしでサーバーが起動できないパターンが多いです。
それでも起動がうまくいかない!っていう方は解決策2の方法を試してもらえれば、基本的には治ると思います!