rails s(server)が起動失敗したときの備忘
rails sでサーバーを起動させようとしたところ、エラーで立ち上がりませんでした。
=> Booting Puma => Rails 6.0.4.4 application starting in development => Run `rails server --help` for more startup options A server is already running. Check /XXXXXXXXXX/tmp/pids/server.pid. Exiting
「すでにサーバーが立ち上がっている」というメッセージです。
エラーの原因 サーバーが立ち上がっているかどうかの判断には、「プロセス」の有無を参考にしています。「プロセス」とは、PC内でメモリを消費して実行中のプログラムのことです。 通常ならサーバーを切断させたときにプロセスも消えるはずですが、何らかの理由で消えなかったんですね。
エラーの解決方法 プロセスが不正に残ってしまっているので、残ったプロセスを削除すればOKです。
エラーコードの中に、プロセスファイルの場所が記載されています。
A server is already running. Check /XXXXXXXXXX/tmp/pids/server.pid.
/XXXXXXXXXX/tmp/pids/server.pidの部分です。 これを削除すればOK。
$ rm /XXXXXXXXXX/tmp/pids/server.pid
上記解決後、pumaでもエラーが発生
Puma starting in single mode... * Puma version: 5.6.5 (ruby 3.1.2-p20) ("Birdie's Version") * Min threads: 5 * Max threads: 5 * Environment: development * PID: 424707 Exiting /home/shogo123198/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/puma-5.6.5/lib/puma/binder.rb:425:in `add_unix_listener': There is already a server bound to: /var/www/XXXXXXXXXX/tmp/sockets/puma.sock (RuntimeError)
こちらも上記同様でサーバーを切断させたときにプロセスも消えるはずですが、何らかの理由で消えなかったんですね。
エラーの解決方法 プロセスが不正に残ってしまっているので、残ったプロセスを削除すればOKです。
エラーコードの中に、プロセスファイルの場所が記載されています。
There is already a server bound to: /var/www/XXXXXXXXXX/tmp/sockets/puma.sock (RuntimeError)
/var/www/XXXXXXXXXX/tmp/sockets/puma.sock の部分です。 これを削除すればOK。
$ rm /var/www/XXXXXXXXXX/tmp/sockets/puma.sock
そのあと、rails sでサーバーを起動させてください。