概要
新たなサービスを立ち上げるなら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)