LoginSignup
3
2

More than 3 years have passed since last update.

【Rails】サーバ起動時、Address already in use と表示される

Last updated at Posted at 2019-06-09

経緯:
railsを使ってサーバを起動する際に時々直面するエラーなので何が起こっているエラーなのかと対処法をまとめてみようと思いました。
間違いがあればご指摘いただければ嬉しいです。

エラー内容

$ rails s
=> 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
Exiting

--省略--

 Address already in use - bind(2) for "::1" port 3000 (Errno::EADDRINUSE)

記のエラーAddress already in use - bind(2) for "::1" port 3000に着目して頂くとポート3000はすでに使われていますよと警告されているのが分かります。

では、この3000のポートを使っているプロセスを見つけてあげて接続を切ってあげれば解決できそうですね。

ポートを使用しているプロセスを見つけて接続を切る

#port:3000を使用している実行中のプロセスを見つける
$ lsof -i :3000

COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
com.docke 50404 a-33   32u  IPv4 0x6a977ba10ee7a7a1      0t0  TCP *:hbci (LISTEN)
com.docke 50404 a-33   34u  IPv6 0x6a977ba0ec0720e1      0t0  TCP localhost:hbci (LISTEN)

lsofコマンドとは

プロセスが開いているファイルを表示するコマンド
-iオプションでネットワークソケットの指定をすることができます。
(今回ははport:3000を指定しています)
PIDというのがプロセスIDになります。

#PIDを指定してポートを切る
$ kill -9 [PIDの番号]

-9オプションは強制的にという意味があります。
なので指定したプロセスを強制的に切ってくれます。

最後に、立ち上がるか確認

$ rails s
=> 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://localhost:3000
Use Ctrl-C to stop

 成功です。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2