【Rails】Address already in use – bind(2) for “0.0.0.0” port 3000 でサーバーが起動しない!【エラー解消】

ruby-on-rails

こんにちは。たなか(@tanaka_ricecake)です。

Ruby on RailsでWebアプリケーションサービスの開発をしています。

開発中以下のようなエラーに遭遇したので、内容と解決方法をご紹介します。

Address already in use – bind(2) for “0.0.0.0” port 3000 でサーバーが起動しない!

rails s時にエラーメッセージ

rails sでwebサーバー起動の際、以下のようなエラーメッセージが表示されました。

/usr/local/bundle/gems/puma-3.12.1/lib/puma/binder.rb:273:in `initialize': Address already in use - bind(2) for "0.0.0.0" port 3000 (Errno::EADDRINUSE)

 

Address already in use – bind でサーバーが起動しない! 解決方法

同じポートを使っているプロセスを確認する!

エラーメッセージを見ると、既にport番号3000番のプロセスが立ち上がっているよと言っているようでした。

lsofコマンドでポート3000番がいるか確認できます。

ちなみにlsofは「list open files」の略で、Port番号などを利用して開いているファイルの情報を表示するコマンドです。

$ lsof -i:3000
COMMAND    PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
com.docke 1534 xxx   25u  IPv4 0xe99140d7a247xxxx      0t0  TCP *:hbci (LISTEN)
com.docke 1534 xxx   26u  IPv6 0xe99140d78bc7xxxx     0t0  TCP localhost:hbci (LISTEN)

 

やはり3000番ポートを使っているプロセスがあるようでした。

killコマンドを使って黙らせていきます。

$ kill -9 1534

 

再びlsofコマンドで確認すると、プロセスを停止できたことを確認できました。

再びコンテナにログインしつつrails sを叩くと……

 

# rails s -b 0.0.0.0
=> Booting Puma
=> Rails 5.2.3 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop/* Your code... */

 

無事にサーバーが起動しました!いぇい!

Address already in use – bind(2) for “0.0.0.0” port 3000 でサーバーが起動しない! まとめ

ruby-on-rails

ということで今回はAddress already in use – bind(2) for “0.0.0.0” port 3000 でサーバーが起動しないときの解消方法についてご紹介しました。

Railsを触り初めて1年半くらいですが、まだまだ余裕でこういうの躓きますね。

とはいえエラーメッセージから内容を読み取り、被疑箇所を炙り出すスピードはどんどん早くなってきています。

こうやってブログにしたためてノウハウを溜め込み、ちょっとずつRailsつよつよエンジニアになれるよう頑張ります。

今回はここまで。

コメントを残す

メールアドレスが公開されることはありません。