ここでは、少なくとも3つの別個のコンポーネントが動作しており、それぞれを正しく構成する必要があります。
Railsバインディングアドレス
Rails(または別のサーバーアプリケーション)が開いてネットワーク接続を受信すると、IPとポートの両方にバインドされます。着信要求がこれらの両方に一致しない場合、接続を受け入れません。からrails server --help
:
Usage: rails server [mongrel, thin etc] [options]
-p, --port=port Runs Rails on the specified port.
Default: 3000
-b, --binding=IP Binds Rails to the specified IP.
Default: localhost
...
そのため、デフォルトでは、Railsはlocalhost
(ループバック)ネットワークアダプター(と呼ばれるlo
)に送信された要求のみを受け入れます。このアダプターは同じコンピューター内からしかアクセスできないため、受け入れられる要求はDebian VM自体からのみです。テストには適切で安全ですが、実稼働や別のコンピューターからのテストには役立ちません。
Railsを他のコンピューター(Windows 7ホストを含む)からアクセスできるようにするには、Debianが持つ外部からアクセス可能なIPアドレスにバインドするようRailsに指示する必要があります(以下を参照)。
ただし、簡単な方法は、Railsに特別なIPアドレスにバインドするように指示0.0.0.0
することです。これは、ネットワークアダプターを意味します。そのため、Railsサーバーを次のように起動します。
rails server -p 80 -b 0.0.0.0
ネットワーク上でVMを見ることができるすべてのユーザーがWebサイトにアクセスできるようにします。
これは、他の2つのコンポーネントが機能していても、いまだに混乱しているものです。
VM IPアドレス
独自の個別のコンピューターであるDebian仮想マシンにブラウザーを向ける必要があります。
経験則でlocalhost
は、常に同じコンピューターを参照します。ただし、ネットワーキングの目的上、Debian VMは独自のコンピューターです。Windows 7ホストでWebブラウザーを使用している場合、localhost
常にWindows 7のみを参照します。
ここには2つのオプションがあります。
VirtualBox VMアダプターをブリッジモードに設定します(質問で説明したとおり)。これにより、Windows 7ホストと同じoutside / home / workネットワークにDebianが直接配置されます。その後、を実行してDebian VMのIPを確認できますifconfig
。eth0
またはeth<something>
アダプタのIPを探します。これをブラウザのアドレスバーに接続します。
NATアダプターとVirtualBoxポート転送を使用します。IMOこれはもっと複雑です。
Debianファイアウォール
Debianに取り組んでからしばらく経ちましたので、現在のデフォルトが何であるかはわかりませんが、上記の2つのことがうまくいかない場合は、検討する価値があるかもしれません。Debianがファイアウォールを実行している場合、別のマシンからアクセスしたいポートを開く必要があります。
お役に立てれば :)