今回は、railsを使っている際に
ターミナルで「$ rails s」ができなくなり困ったため解消法を書きます。
#Ruby on Railsで編集中に
スクールの事前学習で、Ruby on Railにて学習に、
いつも通り変更後、ターミナルでサーバーを立ち上げようとした時です。
$ rails s
でエンターを押すと、立ち上げに成功するのですが、今回は下記のようなエラーが出てきました。
Address already in use - bind(2) for "127.0.0.1" port 8080 (Errno::EADDRINUSE)
、、、、あれれ???おかしいぞ!!!と(笑)解決方法はどうすればいい???
(おそらく駆け出しエンジニアさんも同じエラーで困ってるはず、、、)
と思い調べました!!
#解消法の手順
No | 手順 | 詳細 |
---|---|---|
1 | $ sudo lsof -i:〇〇〇〇 | エラーで表示された番号を〇に入れる。 |
2 | LISTEN部分を確認 | (LISTEN)と書いてある行のPAID数字を確認する。 |
3 | $ kill 〇〇〇〇 | 3で確認した数字を〇にいれて止める。(KILLコマンド) |
4 | 完了 | 解消済み。rails sを再度やってみましょう。 |
#①$ sudo lsof -i:〇〇〇〇
上記の様なエラーが出たら、下記のコードを打ちます。
エラーの文に「port 〇〇〇〇」とあるのでその数字を入力しエンター。(8080の部分です。)
$ sudo lsof -i:8080 ⇦この部分です。
#②LISTEN部分(PIDの番号)の確認 ①でエンターを実行すると、下記のような画面が表示されます。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 7930 ec2-user 14u IPv4 34779 0t0 TCP localhost:webcache (LISTEN)
ruby 7930 ec2-user 15u IPv6 34780 0t0 TCP localhost6:webcache (LISTEN)
ここで注目する箇所としては、
「COMMAND」と「PID」の箇所です。
これを見ると、Rubyで起動した状態になっていました。
なぜこうなったかはよくわからないのですが、、、、
#③$ kill 〇〇〇〇(killコマンドの実行)
それに対して起動を止めるために、PAIDの番号をKILLコマンドで止めます。
$ kill 7930
#④再度rails sを実行で元通り。
再度、サーバーを立ち上げたところ元通りに起動することができました。
もし同じ状況になった方がいたらぜひ試してください。
#参考文献
侍えんじにあ 成長日記
以上、たにーでした。