在 Web 开发过程中,我们经常需要在多个浏览器中测试应用程序和网站的布局。由于几乎不可能单独运行所有这些浏览器,因此诸如测试员不能完美运行且无法在 Windows 7 上运行,如果能够为这些浏览器运行虚拟机以获得“原生”体验就好了。
目前,我正在尝试使用虚拟 Windows XP跑步IE7。我自己的设置是Windows 7 RC1 64位。我们的大多数网站和应用程序都是使用 Windows hosts 文件中的映射在本地开发的。
问题:
当导航至http://我的网站.localhost在虚拟机中,查询的是虚拟机的主机文件,而不是虚拟机上的实际操作系统。此外,当添加完全相同的映射时,浏览器(显然)仍会导航到“虚拟本地主机”。
- 有没有办法让虚拟机查询 Windows 7 hosts 文件?
- 有没有办法使虚拟机的本地主机与实际的 Windows 7 本地主机相同?
答案1
请在开始之前阅读下面的全部说明,并检查按照说明撤消操作需要做什么。这是我的记忆,我现在使用的是 Mac。
我假设您使用 VMware,并且您的 VM [虚拟机的通常缩写] 处于 NAT 网络模式。
我使用术语“主机系统”来表示运行 VMware 的操作系统安装,使用术语“客户系统”来表示在 VMware 内部运行的系统,这与 VMware 的通常用语一致。
第一部分:在VMware模拟的NAT网络(正常情况下为网络8)上找到主机系统的IP地址:
在宿主机上打开cmd.exe,输入:
ipconfig /全部
记下 VMware NAT 接口的 IP 地址
第二部分:使 hosts 文件统一
更改主机系统上的 hosts 文件 %systemroot%\System32\Drivers\Etc\hosts,以便它使用 VMware NAT 适配器的 IP 地址而不是 127.0.0.1 作为本地网站的 IP 地址。
确保 Web 服务器监听该 IP 地址。
第三部分:使 hosts 文件可用
在主机系统上的命令行中:
rmtshare \\name-of-host-system\hostspath=%systemroot%\System32\Drivers\Etc /grant Everyone:r
确保该路径中没有敏感信息。
第四部分:获取 hosts 文件
在客户系统上创建一个批处理文件 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 进行类似脚本进行多平台测试。
答案2
配置虚拟机以使用桥接网络而不是 NAT(如果尚未配置)。现在虚拟机与主机位于同一网络上。
将来宾 VM 的主机文件配置为与您的工作站(VM 主机)相同。
即:
[VM HOST 的 IP] mywebsite.localhost
答案3
正确答案已存在于 Superuserhttps://superuser.com/questions/144453/virtualbox-guest-os-accessing-local-server-on-host-os- 但我在这里总结一下:
就像每台计算机引用自身的魔法地址一样,127.0.0.1
客户操作系统引用其主机的魔法地址也是一样,至少在 VirtualBox 世界中是这样。我设置 VirtualBox VM 的过程是这样的:它可以访问主机操作系统本地提供的网站:localhost
10.0.2.2
- 下载并安装 VirtualBox 和扩展包https://www.virtualbox.org/wiki/Downloads
- 下载并安装客户操作系统(最有可能来自 Microsoft)https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/- 截至撰写本文时,您不需要编辑任何预配置的设置(通过双击橙色立方体文件来安装 VM
.ovf
) - 安装访客添加项
- 更改权限并编辑 hosts 文件,
C:\Windows\System32\Drivers\etc\hosts
并重复你对主机操作系统所做的任何修改,将其替换127.0.0.1
为10.0.2.2
,例如,你可以添加如下行10.0.2.2 local.dev.example.com
- 启动 Web 浏览器并点击您在步骤 4 中屏蔽的 URL(
local.dev.example.com
)- 它将加载主机操作系统提供的页面
如果您不破解主机文件,您可以直接10.0.2.2
在客户操作系统中使用。希望对您有所帮助!
答案4
由于您可以从虚拟机内部访问 Windows 7 文件系统,因此似乎可以设置 VM,使其在启动期间将 Windows 7 主机文件复制到 VM 的主机文件。不过,这是一个理论上的答案,而不是一个实际的答案,因为我没有可用的 Windows 7 来尝试。