DesignAssembler

備忘録に近い

rails sが通らない

rails sを打つと以下のエラーが出ました。

`bind': Address already in use - bind(2) for 0.0.0.0:3000


3000番ポート使われてるみたいです。

1.立ち上がってる別のrailsサーバーを落とす

以下のコマンドで立ち上がってるrubyプロセスを確認してください。

$ ps -ax | grep ruby

あったらこんな感じで表示されます

34032 ttys025    0:04.26 /Users/suechan/.rbenv/versions/2.1.1/bin/ruby bin/rails s -p 3001
34126 ttys030    0:00.00 grep ruby

もしあればそのプロセスを確認しrailsサーバーであればkillします。なければrails以外の別サービスが3000番ポートを使用していますのでそれを切ります。

2.3000番ポートを使用している他のプロセスをキルする

以下のコマンドで3000番ポートを使用しているサービスを確認してください

$ lsof -i:3000

あったらこんな感じで表示されます

COMMAND     PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
VBoxHeadl 32467 suechan  19u  IPv4 0xad7de19b83724065      0t0  TCP *:hbci (LISTEN)

ここではvirtualboxのプロセスが生きてるので、virtualboxを落とします。(終了作業したがいいです)


3.別ポートで立ち上げる

一番手っ取り早いですが根本的な解決ではありません。

以下のように打てば別ポートで立ち上がります。

$ rails s -p 3001

これで3001番ポートでwebrickが起動します。

※注意
1024番以前のポート開放にはroot権限が必要になるので、例えばポートを80と指定した時には以下のようなエラーが出ます

`bind': Permission denied - bind(2) for 0.0.0.0:80

もし80番で起動したければ

$ sudo rails s -p 80

としてください。


タイトルに見覚えがhyottokoaloha.hatenablog.com