【Railsエラー集】A server is already running.
こんにちは。
Kei(@kei__247)です。
朝から作業をスタートすようと思ったら、早速エラーに遭遇したのでメモがてらnoteを残しておきます。
A server is already running.となった背景
【背景】
・前日、Railsサーバーを落とさずにPCを閉じていた
・朝になって、http://localhost:3000でアクセスしようと思ったら、サイトが表示されない
・rails sでエラー発生
今回のエラーが発生するまでの経緯はこんな感じです。
・前日、Railsサーバーを落とさずにPCを閉じていた
ことが今回のエラーの原因だと思います。
実際はこんなエラー表示となりました。
rails s
=> Booting Puma
=> Rails 6.1.4 application starting in development
=> Run `bin/rails server --help` for more startup options
A server is already running. Check (プロジェクトまでのパス)/tmp/pids/server.pid.
Exiting
エラー解決方法【server.pidを削除する】
結論からお話すると、「server.pidを削除する」して、再度rails sコマンドを入力するとエラーは解決できるかと思います。
tmp/pids/server.pid ← これを削除する
server.pidファイルを削除して、新しいターミナルでrails sコマンドを実行してみてください。
おそらくエラーは解消されているかと思います。
少し深掘りしておくと、railsサーバーの「開始」「停止」に伴って、以下のような作業が行われています。
・サーバー開始:server.pidが生成される
・サーバー停止:server.pidが削除される
実際に、サーバーの開始(rails s)とctrl + cでファイル(server.pid)の変化を確認してみてください。
A server is already running.となってしまった原因の推測
あくまで、僕個人の推測ですが、今回のエラーが発生した理由はこんな感じかなと推測しています。
【推測】
・サーバーの停止忘れ
→server.pidが削除されずに残った
・server.pidは保持されたまま、サーバーは内部的にダウンした。
→サイトは表示されない。
・朝イチにrails sコマンド入力
→server.pidが存在するので、エラー発生
まとめ
エラー解決方法【server.pidを削除する】
今回のエラーをきっかけにアプリケーション関連のサーバーについても少し勉強してみました。
もし興味のある方は参考がてらに読んでみてください。
サーバー関連ブログ
>>>【Puma】Rails 5.2 + Puma + Nginx のデプロイ設定
>>>リバースプロキシとプロキシの違いとは?それぞれのサーバーの仕組みは?
>>>ソケットとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典