Web開発プロセスでは、アプリケーションとWebサイトのレイアウトを複数のブラウザーでテストする必要があることがよくあります。これらのブラウザをすべてスタンドアロンで実行することはほぼ不可能であり、 IETester などのアプリケーションは問題なく動作せず、Windows 7で実行できないため、これらのブラウザで仮想マシンを実行できると便利です。 「ネイティブ」な体験をするために。
現在、Virtual Windows XP running IE7を使用してこれを試しています。私自身のセットアップはWindows 7 RC164ビットです。当社のWebサイトとアプリケーションのほとんどは、Windowsホストファイルのマッピングを使用してローカルで開発されています。
問題:
仮想マシン内から http://mywebsite.localhost に移動すると、仮想マシン上の実際のOSではなく、仮想マシンのホストファイルが照会されます。また、まったく同じマッピングが追加された場合でも、ブラウザは(明らかに)「仮想ローカルホスト」に移動します。
開始する前に以下の手順全体を読み、それらに従うことを元に戻すために何をする必要があるかを確認してください。これはメモリからのものです。今はMacを使用しています。
VMwareを使用し、VMネットワークモードでNAT [仮想マシンの通常の略語]]を使用していることを前提としています。
通常のVMwareの用語に従って、VMwareを実行するオペレーティングシステムのインストールにはホストシステムという用語を使用し、VMware内で実行するシステムにはゲストシステムという用語を使用します。
ホストマシンでcmd.exeを開き、次のように入力します。
ipconfig/all
VMware NATインターフェイスのIPアドレスを書き留めます
ホストシステムのhostsファイル%systemroot%\ System32\Drivers\Etc\hostsを変更して、ローカルホストに127.0.0.1ではなくVMware NATアダプターのIPアドレスを使用するようにします。 Webサイト。
WebサーバーがそのIPアドレスでリッスンしていることを確認してください。
ホストシステムのコマンドラインで:
rmtshare \\name-of-Host-system\hostspath=%systemroot%\System32\Drivers\Etc /grant Everyone:r
そのパスに機密情報がないことを確認してください。
ゲストシステム上に、次の内容のバッチファイルc:\ hostsfile\vm_hosts_copy.batを作成します。
copy \\name-of-Host-system\hostspath\hosts %systemroot%\System32\Drivers\Etc
これをレジストリにインポートします。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"CopyHostsFile"="c:\hostsfile\cm_hosts_copy.bat"
これがすべて完了すると、ホストシステムとすべてのゲストシステムで同じhostsファイルを操作できるようになります。ゲストシステムのhostsファイルは、再起動するたびに更新されます。ホストシステムの通常の場所、%systemroot%\ System32\Drivers\Etc\hostsで変更するだけです。
これは、すべてのWindows VMで使用でき、マルチプラットフォームテスト用のほとんどのUnixシステムでsmbclientおよび/etc/rc.localを使用した類似のスクリプトを使用できます。
NATの代わりにブリッジネットワークを使用するようにVMを構成します(まだ行っていない場合)。これで、VMはホストと同じネットワーク上にあります。
ゲストVMのホストファイルをワークステーションと同じになるように構成します(VMホスト)。
すなわち:
[IP of VM Host] mywebsite.localhost
これに対する正解はすでにスーパーユーザーに存在します https://superuser.com/questions/144453/virtualbox-guest-os-accessing-local-server-on-Host-os -しかし私はここに要約します:
127.0.0.1
またはlocalhost
が各コンピューターがそれ自体を参照するためのマジックアドレスであるように、10.0.2.2
は、少なくともVirtualBox内でゲストOSがそのホストを参照するためのマジックアドレスです。世界。ホストOSでローカルに提供されるWebサイトにアクセスできるVirtualBox VMを設定するための私のプロセスは次のとおりです。
.ovf
ファイルをダブルクリックしてVM)をインストールします)C:\Windows\System32\Drivers\etc\hosts
の権限を変更して編集し、ホストOSに対して行ったハッキングを繰り返します。たとえば、127.0.0.1
を10.0.2.2
に置き換えます。 10.0.2.2 local.dev.example.com
のような行を追加できますlocal.dev.example.com
)を押します-ホストOSによって提供されるページが読み込まれますホストファイルをハッキングしない場合は、ゲストOSで直接10.0.2.2
を使用できます。お役に立てば幸いです。
横向きですが、テストに多数のVMを使用する場合は、通常のDNSサーバーに転送するテストゾーンを使用してホスト上にDNSサーバーをセットアップします。次に、ローカルDNSサーバーを使用するようにホストを変更すると、VMがそれに続くはずです。
アンダース
仮想マシン内からWindows7ファイルシステムにアクセスできるため、起動時にWindows7ホストファイルをVMのホストファイルにコピーするようにVM)を設定できるようです。ただし、Windows 7を試してみることができないため、これは実際的な答えではなく理論的な答えです。
Squidまたは別のプロキシをホストマシンに配置し、すべてのゲストにそれをプロキシとして使用させるので、localhostがホストのlocalhostになり、ホストのhostsファイルが尊重されます。
仮想マシンのローカルホストを実際のWindows7ローカルホストと同じにする方法はありますか?
上記はあなたが概念的なスピードバンプを打っているかもしれないと私に思わせます。あなたのVMはそのホストをローカルホストとは考えません(そしてそうすべきではありません)。それはネットワーク上の別の論理デバイスです。
Localhostは一種の予約用語であり、常に127.0.0.1を指します。転覆しようとすると、(棒を使うだけでなく)頭をスレッジハンマーから切り離して杖にするのとよく似ています。
DNSファイルとホストファイルはまさにこの理由で存在します。