概要
新たなサービスを立ち上げるならRubyもRailsも最新が良いよね〜ということで、
- Ruby 2.2.2
- Rails 4.2.1
で環境を作り、Webrickを起動してhttp://#{ip}:3000
でアクセスしよ〜と思ったところ、
なぜか、アクセスできなかったので、その時の対応方法を書きます。
結果から言いますと
Rails 4.2系から、rails s
を実行すると、デフォルトlocalhost
しか受け付けなくなるので、
rails s -b 0.0.0.0
とオプションを指定すると外部からアクセスできるようになります。
紆余曲折しました
EC2で構築しているもんで、最初ははいはいSecurity groupsの設定でしょ知ってる
とか思ってたけど、思いっきり3000番空いてたのではまりました。
だいぶはまったんですが、下記コマンドでピーーーンときました。
$ lsof -i:3000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 1545 ec2-user 9u IPv4 13515 0t0 TCP localhost.localdomain:hbci (LISTEN)
ここのNAMEがlocalhost.localdomain:hbci (LISTEN)
となってたんでついでに下記コマンドでも確認
$ netstat -tanp | grep LISTEN tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN 2151/ruby
外部からアクセスできないのは、localhost
で動いてるからなのだと確認。
/etc/sysconfig/iptables
とか色々疑ったけど、デフォルト設定がlocalhost
になっていただけでした。
$ rails s -d -b 0.0.0.0 $ netstat -tanp | grep LISTEN tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 1652/ruby $ lsof -i:3000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 1702 ec2-user 9u IPv4 14009 0t0 TCP *:hbci (LISTEN)