質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

2回答

3371閲覧

仮想環境内のLinuxで作ったRailsの初期画面をMacのブラウザで見られない

anvinon

総合スコア38

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

1グッド

2クリップ

投稿2016/09/11 05:34

編集2016/09/11 10:54

###開発環境

  • ホストOS MacOS X 10.11 El Capitan
  • ゲストOS CentOS 7.0
  • Vagrant 1.8.5
  • Ruby 2.2.5
  • Ruby on Rails 4.2.7.1

*RubyとRuby on Railsは、2つともバージョンを揃えて念の為にホストOSとゲストOS両方にインストール済み

###実現したいこと
MacとVagrantで管理しているVMの共有ディレクトリでWebアプリ開発(実際の開発は、Mac上のAtomで行う)を行い、Webアプリを走らせるのはVM上で、動作確認はMacのブラウザで行うための環境を構築したい。

###発生している問題・エラーメッセージ
上記の通り、環境構築中なのですが(まだ実際の開発に入れていない)、最後の「試しにサンプルプログラムをrails newコマンドを打って確認」をしたところでつまづいてしまいました。初期画面を見ることが出来ません。

なお、私が指す初期画面とは、こちらです。
初期画面

###試したことその1
まず、
#07 Webページを表示させてみよう | Vagrant入門 - プログラミングならドットインストール
の通り共有ディレクトリのVagrantfileを編集して、以下の部分のコメントを外しました。

ruby

1config.vm.network :private_network, ip: "192.168.33.10"

この作業で、VM上のCentOSの /var/www/html に簡単なindex.htmlを作って配置するとちゃんとhttp://192.168.33.10で見ることができています(ポートの指定は特にしていません)。

しかし、こちらのサイトの通り設定しても見ることが出来ていません。具体的には、以下のとおりです。

###試したことその2

  1. 再びVagrantfileの設定を行う

config.vm.network "forwarded_port", guest: 3000, host: 3000
を加えました。現時点でのVagrantfileの中身は以下のとおりです。

ruby

1# -*- mode: ruby -*- 2# vi: set ft=ruby : 3 4# All Vagrant configuration is done below. The "2" in Vagrant.configure 5# configures the configuration version (we support older styles for 6# backwards compatibility). Please don't change it unless you know what 7# you're doing. 8Vagrant.configure("2") do |config| 9 # The most common configuration options are documented and commented below. 10 # For a complete reference, please see the online documentation at 11 # https://docs.vagrantup.com. 12 13 # Every Vagrant development environment requires a box. You can search for 14 # boxes at https://atlas.hashicorp.com/search. 15 config.vm.box = "centos70" 16 17 # Disable automatic box update checking. If you disable this, then 18 # boxes will only be checked for updates when the user runs 19 # `vagrant box outdated`. This is not recommended. 20 # config.vm.box_check_update = false 21 22 # Create a forwarded port mapping which allows access to a specific port 23 # within the machine from a port on the host machine. In the example below, 24 # accessing "localhost:8080" will access port 80 on the guest machine. 25 config.vm.network "forwarded_port", guest: 3000, host: 3000 26 27 # Create a private network, which allows host-only access to the machine 28 # using a specific IP. 29 config.vm.network "private_network", ip: "192.168.33.10" 30 31 # Create a public network, which generally matched to bridged network. 32 # Bridged networks make the machine appear as another physical device on 33 # your network. 34 # config.vm.network "public_network" 35 36 # Share an additional folder to the guest VM. The first argument is 37 # the path on the host to the actual folder. The second argument is 38 # the path on the guest to mount the folder. And the optional third 39 # argument is a set of non-required options. 40 # config.vm.synced_folder "../data", "/vagrant_data" 41 42 # Provider-specific configuration so you can fine-tune various 43 # backing providers for Vagrant. These expose provider-specific options. 44 # Example for VirtualBox: 45 # 46 # config.vm.provider "virtualbox" do |vb| 47 # # Display the VirtualBox GUI when booting the machine 48 # vb.gui = true 49 # 50 # # Customize the amount of memory on the VM: 51 # vb.memory = "1024" 52 # end 53 # 54 # View the documentation for the provider you are using for more 55 # information on available options. 56 57 # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies 58 # such as FTP and Heroku are also available. See the documentation at 59 # https://docs.vagrantup.com/v2/push/atlas.html for more information. 60 # config.push.define "atlas" do |push| 61 # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME" 62 # end 63 64 # Enable provisioning with a shell script. Additional provisioners such as 65 # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the 66 # documentation for more information about their specific syntax and use. 67 # config.vm.provision "shell", inline: <<-SHELL 68 # apt-get update 69 # apt-get install -y apache2 70 # SHELL 71end 72
  1. ファイアーウォールの設定

上記のサイトでは、iptablesの設定を行っていますが、CentOS 7.0をVM内で使っているということもあり、以下のとおりに設定してあります。

bash

1[vagrant@localhost ~]$ sudo systemctl is-enabled firewalld 2disabled

以上の状態で、

bash

1[vagrant@localhost html]$ rails new work 2[vagrant@localhost html]$ cd work 3[vagrant@localhost html]$ rails s

(* なお、/vagrantと/var/www/html にはシンボリックリンクをはってあります)
と打ち、いざhttp://localhost:3000/worksを開いても、
エラー状態

となってしまいます。ポートか、URLが間違っているのでしょうか?どなたか解決策をご存知のかた、ご教示いただければ幸いです。どうぞ宜しくお願いします。

shinoharat2👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

rails実行を以下のようにしてみてはどうでしょうか。

sh

1$ rails s -b 192.168.33.10 2 3または 4 5$ rails s -b 0

バインドアドレスを指定しないと127.0.0.1にバインドされるため、rails実行マシン上からlocalhost:3000にしかアクセスできない状態となります。

【補足】

forwarded_portの設定があるのでMac上のlocalhost:3000へのアクセスは仮想マシンにフォワードされますが、フォワード先が192.168.33.10:3000となって、仮想マシン上のlocalhost:3000にはアクセスできないと考えられます。

投稿2016/09/11 08:13

編集2016/09/11 08:21
tkmtmkt

総合スコア1800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

anvinon

2016/09/11 08:27

ご回答有り難うございます。 早速、 $ rails s -b 192.168.33.10 を試したところ、初期画面を見ることが出来ました!ありがとうございます!! 途方に暮れていたので本当にありがたいです。 環境構築中に -b のオプションは見かけたので、なんのことだろうと思っていました。ただ、検索してみても、検索の仕方が悪かったのか、うまく求める答えが見つからなかったのでそのまま次のステップに進んでしまいました。まさか、こういう意味だったのは・・・。「バインド」という単語の意味がわからないので、この後検索してみます。 ありがとうございました。
anvinon

2016/09/11 10:41

さきほどはありがとうございました。もう一つ質問があるので、もしよろしければご回答いただけますと幸いです。 今回は、バインドして接続ができましたが、今後もこのまま(http://192.168.33.10:3000のまま)で開発を続けても大丈夫でしょうか?もし、http://localhost:3000に変更したほうが良ければ、設定方法を教えていただきたいのですが・・・。以下、自分で変更を試した方法ですが、http://localhost:3000では初期画面が表示されませんでした。 vagrantfileの config.vm.network "private_network", ip: "192.168.33.10" こちらを config.vm.network "private_network", ip: "localhost" もしくは config.vm.network "private_network", ip: "127.0.0.1" に設定してみました。結果は初期画面が表示されませんでした。 もしよろしければご回答いただけますと幸いです。よろしくお願いいたします。
guest

0

http://192.168.33.10:3000 はどうですか?

投稿2016/09/11 06:29

YasuoTabira

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

anvinon

2016/09/11 06:35

ご回答有り難うございます。以下のとおりでした。(画像をアップロードできないので、コピー・アンド・ペーストで失礼致します) このサイトにアクセスできません 192.168.33.10 で接続が拒否されました。 次をお試しください: 接続を確認する プロキシとファイアウォールを確認する ERR_CONNECTION_REFUSED 再読み込み
YasuoTabira

2016/09/11 06:47

/var/www/htmlのindex.htmlが表示された時は http://localhost/ でしたでしょうか? まだ表示されますか? (ファイヤーウォールとかセキュリティソフトが原因ではないかどうかの確認です)
anvinon

2016/09/11 07:49

ご回答有り難うございます。 >/var/www/htmlのindex.htmlが表示された時は http://localhost/ でしたでしょうか? いえ、192.168.33.10(ポート指定無し)でした。 >まだ表示されますか? 一旦 index.html は消してしまったのでもう一度作りなおしたところ、正常に表示されました。以下、踏んだ手順です。 *Control + Cで一旦Webrickをストップしてから、以下 [vagrant@localhost work]$ pwd /var/www/html/work [vagrant@localhost work]$ cd .. [vagrant@localhost html]$ vi index.html [vagrant@localhost html]$ ls index.html vagrantfile work work2 *この後にブラウザ(Google Chrome)で http://192.168.33.10/ を開いたところ、問題なく表示されました。
anvinon

2016/09/11 07:56

>*Control + Cで一旦Webrickをストップしてから、以下 これは、タブ式のターミナルを使っていないため、index.htmlを作りなおす作業をするために一旦ストップしました。 引き続きご教示いただければ幸いです。どうぞ宜しくお願い致します。
YasuoTabira

2016/09/11 08:00

ポートを指定しなかった場合は80番になるので、http://192.168.33.10:80/ になります。ということは192.168.33.10へ80番ポートのネットワークは繋がっていますね。 では、vagrant内部からサーバへは接続できますでしょうか? vagrantにsshログインしたコンソールから wget http://localhost:3000 を実行するとどのような結果になりますか? (3000番ポートのサービスが起動しているかどうかの確認です)
anvinon

2016/09/11 08:22

度々のご回答、恐れ入ります。また、ありがとうございます。 以下の結果になりました。 [vagrant@localhost work]$ wget http://localhost:3000 --2016-09-11 10:12:23-- http://localhost:3000/ localhost (localhost) をDNSに問いあわせています... ::1, 127.0.0.1 localhost (localhost)|::1|:3000 に接続しています... 失敗しました: 接続を拒否されました. localhost (localhost)|127.0.0.1|:3000 に接続しています... 失敗しました: 接続を拒否されました. 次の一手は、ファイアーウォールの設定ミスかな、と思いファイアーウォールについて検索しようと思っていたところ、tkmtmkt様の方法で無事起動できました。 ここまでお付き合いいただき、誠にありがとうございました!!
tkmtmkt

2016/09/11 10:03

解決済みのためどうでもいいかもしれませんが、上記コマンドで接続失敗は通常であれば考えられないので、「rails s」を実行していない状態で上記コマンドを実行したと推測されますがどうでしょう? 上記コマンドは「そもそもきちんとWEBアクセスできる状態でプログラム動いているのか?」を確認しているものなので、プログラムを動かしていない状態で実行したら失敗するのは正常な動作です。 上記コマンドはプログラムを動かしているターミナルとは別のターミナルを開いてから、仮想マシンに接続して実行するものです。 どこまで説明すべきなのか考えるのはなかなか難しいものであるなと思ってしまいました。
anvinon

2016/09/11 10:26

WEBのエンジニアになろうとしているので、ネットワークの知識は欠かせないと思いますし、ご指摘ありがとうございます。 まず、バインドさせずに、 [vagrant@localhost work]$ rails s => Booting WEBrick => Rails 4.2.7.1 application starting in development on http://localhost:3000 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server [2016-09-11 12:10:53] INFO WEBrick 1.3.1 [2016-09-11 12:10:53] INFO ruby 2.2.5 (2016-04-26) [x86_64-linux] [2016-09-11 12:10:53] INFO WEBrick::HTTPServer#start: pid=5231 port=3000 の状態にし、ターミナルの別のタブ(タブ式のターミナルをダウンロードしました)を立ち上げ、もう一度試してみました。 [vagrant@localhost work]$ wget http://localhost:3000 --2016-09-11 12:11:25-- http://localhost:3000/ localhost (localhost) をDNSに問いあわせています... ::1, 127.0.0.1 localhost (localhost)|::1|:3000 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 14935 (15K) [text/html] `index.html.1' に保存中 100%[==================================================================================================================================================================>] 14,935 --.-K/s 時間 0.001s 2016-09-11 12:11:26 (22.8 MB/s) - `index.html.1' へ保存完了 [14935/14935] 無事に通りました! tkmtmkt様のご指摘のとおりでした。ありがとうございます。もう一つ質問があるので、もしよろしければご回答頂ければ幸いです。頂いたご回答のコメントをつけさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問