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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Q&A

解決済

3回答

1595閲覧

VirtulBoxのRails server起動後、ホストのブラウザからアクセスできない

nonamae

総合スコア17

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

0グッド

1クリップ

投稿2019/05/22 02:39

編集2019/05/24 07:31

実現したいこと

Windows10からVirtualBox上に作成したCentOSのRailsアプリにアクセスしたい。

状況

Virtulbox上のCentOS7にRailsをインストール

CentOS

1$ rails new testApp 2$ cd testApp 3$ bin/rails db:create

の後に、

CentOS

1$ bin/rails s 2=> Booting Puma 3=> Rails 5.2.3 application starting in development 4=> Run `rails server -h` for more startup options 5Puma starting in single mode... 6* Version 3.12.1 (ruby 2.5.1-p57), codename: Llamas in Pajamas 7* Min threads: 5, max threads: 5 8* Environment: development 9* Listening on tcp://localhost:3000 10Use Ctrl-C to stop

でサーバー起動、Windows10のGoogleChromeからhttp:localhost:3000にアクセスすると

GoogleChrome

1このサイトにアクセスできません localhost で接続が拒否されました。 2次をお試しください 3 4接続を確認する 5プロキシとファイアウォールを確認する 6ERR_CONNECTION_REFUSED

と表示される。

試したこと

Virtulboxのポートフォワーディングの設定

ホストポート80 ゲストポート80
ホストポート3000 ゲストポート3000

イメージ説明

CentOSのファイアウォールの停止

$ systemctl start firewalldでファイアウォールを停止させてアクセスを試しています。

その他

rails s -b 0.0.0.0でサーバーを起動、http://0.0.0.0:3000にアクセス
rails s -b 0.0.0.0 -p 3001でサーバー起動、http://0.0.0.0:3001にアクセス
共に以下のエラー

GoogleChrome

1このサイトにアクセスできません http://0.0.0.0:3001/ 2のウェブページは一時的に停止しているか、新しいウェブアドレスに移動した可能性があります。 3ERR_ADDRESS_INVALID

補足情報(FW/ツールのバージョンなど)

CentOSから$ wget localhost:3000$ wget 0.0.0.0:3000は問題なく200 OKが返ってくるので、railsコマンドやサーバーの起動そのものはうまくいってると思います。

追加画像

イメージ説明

追加画像2

イメージ説明

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

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

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

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

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

over

2019/05/22 03:14

仮想ゲストはNAT環境で間違いないですか?
nonamae

2019/05/22 05:23

設定-ネットワーク 割当:NATネットワーク 名前:NatNetwork(上の画像のネットワーク) にしています。再度確認しましたので、間違いないかと思います。
over

2019/05/23 01:16

該当端末のhttp接続はプロキシ経由になっているということもないですか?
nonamae

2019/05/23 03:58

特にプロキシ経由にするような設定をした覚えがないのですが、確認方法はあるでしょうか。 各ブラウザの設定で、プロキシの設定は特にされていませんでした。
over

2019/05/24 00:07

承知しました。 とりあえず気になるところだけツッコミます。 ・ローカルポート80→ ゲストポート80はVirtualBoxでは不可です。(何故かは不明) 80への転送は別のポートを使用してください。ウェルノウンポート以外が望ましいです。 ・ポートフォワード設定において、ローカル側のアドレスは記載する必要ありません。ゲスト側IPのみで大丈夫です。ただしこれは、NATネットワークの場合に限ります。 ・他ご質問者様とやり取りある「NATだと接続できない」は、NATネットワークとNATにおけるポートフォワーディングの設定は別インターフェースです。 NATにおけるポートフォワーディングは該当仮想ゲストの「設定」-「ネットワーク」でNATを選択の上、「高度」を展開した以下の「ポートフォワーディング」で設定します。
nonamae

2019/05/24 05:10

返信ありがとうございます。 VirtualBoxの設定につきましては、 秀和システムから発刊されている『ITエンジニアになる!チャレンジLinux』という書籍を基に設定を行っておりました。 > ローカルポート80→ ゲストポート80はVirtualBoxでは不可です。(何故かは不明) この設定でApacheは問題なく動いていたのですが、番号変えた方がいいでしょうか。またポートフォワーディングの番号を変えた場合、ブラウザのURLのhttp://***.***.***.***:XXのXXの部分を変えるのはわかるのですが、他に変更するべき設定などはあるでしょうか > 他ご質問者様とやり取りある「NATだと接続できない」は、NATネットワークとNATにおけるポートフォワーディングの設定は別インターフェースです。 NATにおけるポートフォワーディングは該当仮想ゲストの「設定」-「ネットワーク」でNATを選択の上、「高度」を展開した以下の「ポートフォワーディング」で設定します。 はい、overさんのおっしゃる通り、NATの下の高度の設定画面のポートフォワーディングの設定から、ホストIPを127.0.0.1 ホストポートを2222 ゲストIPをブランク ゲストポートを22にしてSSHを試しているのですが、なぜかNATの設定だと繋がらない状態なんです…
over

2019/05/24 05:14

> この設定でApacheは問題なく動いていたのですが 動作しているのであれば変更する必要はないです。 > NATの下の高度の設定画面のポートフォワーディングの設定から、ホストIPを127.0.0.1 ホストポー> トを2222 ゲストIPをブランク ゲストポートを22にしてSSHを試しているのですが、なぜかNATの> 設定だと繋がらない状態なんです… ホストIPをブランク(入力しない)にしても同様ですか?
nonamae

2019/05/24 06:52

ありがとうございます。 追加画像の通り設定変更しまして、TeraTermで試したところ やはり接続が拒否されるとでてしまいます。 TeraTermのIPアドレスはWindows10からipconfigで出力した、自分のパソコンのIPを使ってます。
over

2019/05/24 07:00

Teratermの接続は2222ポートを指定していますか?
nonamae

2019/05/24 07:09

繋がりました、ありがとうございます! 出る側のポートを指定するんですね、勉強になりました。
over

2019/05/24 07:13

「出る側」という表現について意味を測りかねていますが、ポートフォワードの機能は、ご質問者様の環境のSSHを例にとると、「ローカルIP:2222へのリクエストを仮想ゲスト:22に転送する」という意味合いになります。他接続もこれで解決できそうですか?
nonamae

2019/05/24 07:32 編集

すみません、感覚的な言葉を使ってしまいました。丁寧な解説ありがとうございます。 これでいける!と思ったのですが、 3000番ポートを開いて 0.0.0.0:3000とlocalhost:3000両方で試しましたが、ダメでした。 ファイヤーウォールもちゃんと切っているのですが…
over

2019/05/24 07:39

確かRailsって、接続リクエストがあった場合、起動コンソールに状況が表示されるんではなかったでしたっけ?この理解に間違いがない場合、リクエスト自体が届いていないということになります。アップした画像はIEかEdgeですか?であればChrome等で試してください。確かIE、Edgeはlocalhost接続に対して制限があったと記憶しています。
nonamae

2019/05/24 07:46

そうですね、リクエストがあれば反応があるはずなのでおっしゃる通りだと思います。 こちらChromeで試した画面になります。
over

2019/05/24 07:55

Chromeですか・・・ だとすると何でしょう? 以下のコマンドでホストOSで3000/tcpにおける使用可否の確認願います。 > netstat -ano | find ":3000"
nonamae

2019/05/24 08:45 編集

@localhost scaffold_app]$ netstat -ano | find ":3000" find: ‘:3000’: そのようなファイルやディレクトリはありません と表示されました。が、解決しました。 解決方法はまた記載します。 長い間お付き合いいただき本当にありがとうございました!
over

2019/05/24 08:37

ああ~すいません。 実行するのはホストOSで、ホストOSをWindowsと思いこんでいました。
guest

回答3

0

自己解決

長い間親身にお付き合いいただき、すべての方にベストアンサーを贈りたいほどなのですが、回答いただいた方の方法を繋ぎ合わせて無事解決することができました。

原因

OS Ruby Rails、何かわかりませんが恐らくうまくインストールできていなかったのだと思います。

解決方法

  1. VirtualBOXの設定をすべて削除し、CentOSをインストールしなおしました。
  2. NATを使い、ホストゲストIPは指定せず、ポートを2222-22 3000-3000開放
  3. TeraTermでSSH接続を行って、Rubyなど一式をダウンロード
  4. rails new で新規作成
  5. bin/rails s -b 0.0.0.0でPUMAを起動
  6. GoogleChromeからhttp://localhost:3000/にアクセスで無事繋がりました。

すべての設定をやり直したため、具体的な問題点はわかりませんでしたが、無事サーバーに繋げることができました。親身に対応していただいた回答者の方には感謝しかありません。

ありがとうございました!

投稿2019/05/24 08:43

nonamae

総合スコア17

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

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

0

rails s -b 0.0.0.0 での起動が必要です。
rails sで起動するにあたり、-bを指定して、0.0.0.0で全てのIPアドレスからのアクセスを許可します。
類似の解答としては
https://teratail.com/questions/188287#reply-279617
があります。

投稿2019/05/22 04:49

yut148

総合スコア752

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

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

nonamae

2019/05/22 05:24

その他にも記載しているのですが rails s -b 0.0.0.0でサーバーを起動してからhttp://0.0.0.0:3000にアクセス rails s -b 0.0.0.0 -p 3001でサーバー起動してからhttp://0.0.0.0:3001にアクセス は共に試しましたが、ダメでした。
yut148

2019/05/22 05:29

失礼しました。systemctl start firewalldと書いてありましたが、systemctl stop firewalldですよね?念の為 iptables -Lで御確認いただけますでしょうか。
nonamae

2019/05/22 05:59

ご指摘の通りstopです、記載ミスです、失礼しました。 $ sudo firewalld-cmd --stateで止まっているのは確認しております。
yut148

2019/05/22 06:21

承知しました。ちょっと原因わかりにくいところです。他のブラウザでも同一結果でしょうか。
nonamae

2019/05/22 06:34

ありがとうございます。Chrome、firefox、edge、explorerでもその後テストしましたが、同じでした。
yut148

2019/05/22 06:46

正確な解答にならず申し訳ありません。ホストポートが既に他で使われている可能性はありませんでしょうか。 すなわちrails sでのポート指定を-p 3001、ホスト側からは4001、NATの設定は左記の通りで試してみてはいかがでしょうか。
nonamae

2019/05/22 07:48

回答ありがとうございます。質問なのですが、 `$ rails s -b 0.0.0.0 -p 3001` で起動 `http://0.0.0.0:4001`とブラウザに入力 Virtulboxのポートフォワーディングの設定を ホストポートを4001、ゲストポートを3001にするということでしょうか?
yut148

2019/05/22 08:00

はい。先の挙げていたスクリーンショットではホストポートとゲストポートが同一です。既にホストポートがなにかに利用されている可能性があるのではと推測しました。
nonamae

2019/05/22 08:12

教えていただいた通り、ポートフォワーディングを設定した上で試してみましたが、 このサイトにアクセスできません http://0.0.0.0:4001/ のウェブページは一時的に停止しているか、新しいウェブアドレスに移動した可能性があります。 ERR_ADDRESS_INVALID と同じようなエラーになりました。 念のため、http://0.0.0.0:3001でもアクセスしましたが、結果は変わりませんでした。
yut148

2019/05/22 08:41 編集

念の為確認ですが、ブラウザから入力しているhttp://0.0.0.0:4001/ のIPアドレスの指定部分は他の0.0.0.0以外のIPアドレスを指定していますでしょうか?
nonamae

2019/05/23 04:01

Windows10側(ホスト側)のファイアウォールもきって、 再度すべての手順を試してみましたが、結果変わらずでした。。。 ここまでくると他のパソコン買いなおすしかないのかな…
yut148

2019/05/23 05:50

お手数おかけします。下のasm氏への回答にもありますが、 >Natネットワーク だと繋がるとはどの様な状況でしょうか? sshで繋がる状況に戻せますでしょうか? sshができれば >ローカルポートフォワード も一つの妥協策ではあると思います。
nonamae

2019/05/23 23:57

ありがとうございます。 VirtualBoxの[ファイル]⇒[環境設定]⇒[ネットワーク]から ネットワークを新規に追加し、ポートフォワーディング設定を ホストIPをホストPCのIPアドレス、ゲストIPをVirtualBox上のIPアドレスに設定して、 ポート22をそれぞれ開けた状態にし、その上で、VirtualBoxの仮想マシンのCentOSの設定の[ネットワーク]から[割り当て]をNATではなくNATネットワークにした上で、名前を先ほど設定したネットワークに変更すると、SSHで接続することができます。 そちらの設定に戻せばSSHはつながります。 ローカルポートフォワードはホスト側をポート8888にした上で、 つなぐということを見たのですが、こちら何か問題があるのでしょうか。
yut148

2019/05/24 07:12

NatNetworkに関して詳しい説明ありがとう御座います。 この機能使った事がありません。 同様の事なのかも知れませんが左側、仮想マシンを選択した上で 詳細(D)(widows VirtualBOX 5.2.12r122591を想定。)にある、ネットワーク設定から、 割当(A)NAT ポートフォワーディングを指定して利用する事が多いです。 スクリーンショットを今撮りにくい環境なので他のページの引用となりますが、 https://vboxmania.net/%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e8%a8%ad%e5%ae%9a/ こちらの4つあるネットワークアダプタの箇所を設定して利用する事が多いです。 PCを買い換える事も視野に入れる前に、上記での対応も検討してみてはいかがでしょうか。
nonamae

2019/05/24 07:37

丁寧にありがとうございます! 無事SSHにはつなぐことができました。(Pumaにはつながりませんが…) NatNetworkに関しては、VirtulBoxとVirtulBox感でSSHなどつなぐことができたりするようで、 秀和システムから発刊されている『ITエンジニアになる!チャレンジLinux』という書籍を基に設定を行っておりました。
yut148

2019/05/24 11:35

やっととなりましたが進捗あって、パソコン買い直すことは避けられそうで良かったです。 NatNetworkが影響しているという事象もあるという学びが得られました。
guest

0

http://0.0.0.0がhttp://localhostの代わりになるのはLinuxの独自仕様のようです。

なので、Windows側からアクセスする際はhttp://localhost:3000を使いましょう。

ポートフォワード設定はVagrant使いだしてから詳細忘れましたが
今眺めたところ
イメージ説明
こうなっていました。

投稿2019/05/22 10:39

asm

総合スコア15147

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

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

nonamae

2019/05/23 00:20

コメントありがとうございます。 Windows側からアクセスするにhttp://localhost:3000も同時に試しているのですが、 接続できない状態です。 ネットワークの設定もasmさんと同じように NATに変更した上で、ポートフォワーディングを127.0.0.1にした上で 上記のポートプラス、ホストポート22 ゲストポート22の3か所を通して試してみましたが接続できませんでした。(SSHも繋がらなくなりました。)
asm

2019/05/23 00:56

うーん、なんだろう。 > systemctl start firewalld がstopの間違いなのは気になりますが、見当たるのはそれくらいですね sshがつながっていたならば最悪 sshのローカルフォワードでつなぐ事はできそうです。
nonamae

2019/05/23 04:00

$ sudo firewall-cmd --state で都度状態を確認しているので、Firewallで防がれているということはなさそうなのですが… ネットでNATの設定を確認しつつ、SSHで接続を試してみますがやっぱりつながりません。 Natネットワークだとつながるんですが、なにか他に原因があるのでしょうか…
asm

2019/05/24 08:24

windows側のポートを開けているかをコマンドプロンプトから「netstat -ano」で確認し 開いているプロセス(PID)がSSHのために開いているポートのPIDと変わらないことを確認 windows側のファイアウォールのログをとってドロップしていない事を確認(やりかたはググって下さい) 以上で問題なければcentos側に問題がある可能性が高いです。
nonamae

2019/05/24 08:36

ありがとうございます。解決することができました。 解決方法に関しましては別途記載します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問