Help us understand the problem. What is going on with this article?

Vagrant(CentOS7) + Rails環境でホストのブラウザからサーバ接続できなかった時の対処

More than 1 year has passed since last update.

大まかな流れ

Vagrantの中にRails環境を導入

Mysql,Railsの導入はできた

いざRailsを走らす

ローカル環境ではアクセスすることができたが,ホストOSでのブラウザ接続が出来なかった← これが問題

※環境構築について:Vagrant 1.8 + CentOS 7 + VirtualBox 5 + Ruby on Rails + Mysqlで開発環境構築を参照しながら行いました.(すごくわかりやすい説明でやりやすかったです.)

問題点について

  • Railsが動いているにもかかわらずローカルのみで動き,ホストサーバに接続できなかった.

実際の画面はこんな感じ
screenshot.png

解決方法

行った解決方法①

Railsの起動方法を変えてみた.
Rails var4.2以降では通常の起動ではローカルのみの起動となってしまうので
オプションで -bとIPアドレス(基本的に0.0.0.0)
rails s -b 0.0.0.0

結果
screenshot.png

ダメでした...

原因

そもそも3000番ポートが空いてなかった.

行った解決方法②

VagrantFileを書き換えてみる.
まずゲストの3000番ポートとホストの3000番ポートを開くように設定ファイルをvagrantfileを編集する.

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # config.vm.network "forwarded_port", guest: 80, host: 8080
  #以下にこの文章を付け足す
  config.vm.network :forwarded_port, guest: 3000, host: 3000

次にVagrantfile に適当なIPアドレスの割り当て設定をしてみる.

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  #以下にこの文章を付け足す
  config.vm.network :private_network, ip: "192.168.33.10"

Vagrantfileを編集したあとvagrant reloadで設定を読み込む`

参考サイト:Vagrantの仮想環境でrails serverで動いているアプリケーションにMacのブラウザからアクセスしてみる

結果
screenshot.png

ダメでした...
サイトで調べてみると,ほとんどの人がここまででちゃんとホスト側のブラウザからアクセスできているみたいです...

行った解決方法③

サイトを次々調べていくうちに1つだけ違った方法があったので紹介.
Firewalld(iptablesのCentOS7用)をオフにする.

vagrant ssh内で

$ sudo systemctl stop firewalld.service
# firewalld を無効にする
$ sudo systemctl mask firewalld.service
$ sudo systemctl list-unit-files | grep firewalld
# OS 起動時もfirewalldが起動しないようにする

を実行し,Railsを走らせる...

参考サイト:開発のわだち(3):自分の開発環境を作る【2】

結果
rails_first_view.png

!!!!
ついにホストのブラウザからサーバアクセすることが出来ました!

解決方法①と解決方法②,解決方法③を組み合わせることでサーバアクセスが出来ました.

おしまい.

Ago0727
web系の言語を勉強中 主に発生したエラーについて記述しています.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした