gosho-techplayのblog

自作サイトを制作した際の実装方法などを備忘録としてまとめています。

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でサーバーを起動させてください。