Edited at

Vagrant CentOS上のlocalhost:3000がホストから開けない

More than 3 years have passed since last update.


環境


  • Vagrant 1.7.2

  • CentOS release 6.6 (Final)

  • ruby 2.2.0p0

  • Rails 4.2.1


症状

ローカル開発環境上のhttp://localhost:3000がホストマシンから開けない


やったこと


  1. iptablesの設定

  2. Vagrantfileの設定

  3. rails severのオプション変更


1. iptablesの設定

/etc/sysconfig/iptables に以下を加える。

iptables

-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT



保存して



service iptables save



を実行。


2. Vagrantfileの設定

テキストエディタでVagrantfileを開き、以下を加える。

Vagrant file

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 の環境構築