#はじめに
railsチュートリアル第8章
ターミナル上でrails serverと入力しました。
その後、Errno::EADDRINUSEと表示されて、サーバーが立ち上がりませんでした。
#開発環境
MacBook Pro
プロセッサ2 GHz クアッドコアIntel Core i5
メモリ16GB
cloud9
rails 6.0.3
#作業
$ rails server
ローカルサーバーが立ち上がらず、下記のエラーメッセージが表示される。
=> Booting Puma
=> Rails 6.0.3 application starting in development
=> Run `rails server --help` for more startup options
[11359] Puma starting in cluster mode...
[11359] * Version 4.3.6 (ruby 2.6.3-p62), codename: Mysterious Traveller
[11359] * Min threads: 5, max threads: 5
[11359] * Environment: development
[11359] * Process workers: 2
[11359] * Preloading application
Exiting
一部省略
Address already in use - bind(2) for "127.0.0.1" port 8080 (Errno::EADDRINUSE)
ポート8080がすでに使用されているとのこと。
$ lsof -i -P | grep 8080
ポート8080の使用状況を確認する。
lsofコマンド→オープンしているファイルを一覧表示するコマンド。
-i→ネットワークソケット(接続口)を対象にする。
-P→ポート名のかわりにポート番号を表示する。
grepコマンド→ファイル中の文字列を検索する。
ruby 4849 ubuntu 13u IPv4 39704 0t0 TCP localhost:8080 (LISTEN)
ruby 4849 ubuntu 14u IPv6 39705 0t0 TCP ip6-localhost:8080 (LISTEN)
ruby 4850 ubuntu 13u IPv4 39704 0t0 TCP localhost:8080 (LISTEN)
ruby 4850 ubuntu 14u IPv6 39705 0t0 TCP ip6-localhost:8080 (LISTEN)
4849と4850のプロセスが動いていました。
#解決方法
$ kill -9 4849
$ kill -9 4850
動いているプロセスを終了させる。
killコマンド→指定したプロセスIDのプロセスを終了させる。
−9→強制終了。
#原因
過去にローカルサーバーをcontrol+Cコマンドで終了させることを失念した可能性が高い。
その後、無事にサーバーが立ち上がりました。
ご覧いただきありがとうございました。