#環境
- Vagrant 1.7.2
- CentOS release 6.6 (Final)
- ruby 2.2.0p0
- Rails 4.2.1
#症状
ローカル開発環境上のhttp://localhost:3000がホストマシンから開けない
#やったこと
- iptablesの設定
- Vagrantfileの設定
- rails severのオプション変更
###1. iptablesの設定
/etc/sysconfig/iptables に以下を加える。
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT
保存して
service iptables save
を実行。
###2. Vagrantfileの設定
テキストエディタでVagrantfileを開き、以下を加える。
config.vm.network :forwarded_port, guest: 3000, host: 3000
google上で見つかる記事のほとんどがこれやって解決してたんだけどどうもうまくいかなくて、さらに検索した結果こんな記事が
Vagrant で Ruby on Rails 4 の環境構築
3.3 rails serverのデフォルトホスト
Rackの変更 により、rails serverコマンドを実行した際のデフォルトのホストが0.0.0.0からlocalhostに変更されました。この変更は標準的なローカルでの開発ワークフローにほとんど影響を与えないはずです。http://127.0.0.1:3000 および http://localhost:3000 の動作はどちらも以前と同じであるからです。
ただし、今回の変更により、別のPCからRailsサーバーへのアクセスは以前と同じようにはできなくなります。たとえば、development環境が仮想マシン上にあり、ホストマシンからこのdevelopment環境にアクセスする場合などがこれに該当します。 このような場合、サーバーを起動する際にrails server -b 0.0.0.0とすることで、以前と同じ動作を再現できます。
以前の動作に戻す場合は、必ずファイアウォールを適切に設定し、自社ネットワーク内の信頼できるPCだけが開発用サーバーにアクセスできるようにしてください。
とのこと
###3. rails severのオプション変更
$ bundle exec rails server -b 0.0.0.0
として以前のバージョンと同じ動作を再現。
これで仮想マシンのローカルホストにホストからアクセスできるはず。
#参考
Vagrantの仮想環境でrails serverで動いているアプリケーションにMacのブラウザからアクセスしてみる
Vagrant で Ruby on Rails 4 の環境構築