使用虚拟Windows机器浏览本地网站:是否有可能?

在我们的网站开发过程中,我们经常需要在几个浏览器上testing我们的应用程序和网站的布局。 由于独立运行所有这些浏览器几乎是不可能的,而且诸如IETester这样的应用程序不能完美地工作,并且不能在Windows 7上运行,所以能够为这些浏览器运行虚拟机以便具有“本地”经验。

目前,我正在尝试使用运行IE7虚拟Windows XP 。 我自己的设置是Windows 7 RC1 64位 。 我们的大多数网站和应用程序都是在本地使用Windows主机文件中的映射开发的。

问题:

从虚拟机内导航到http://mywebsite.localhost时 ,将查询虚拟机的主机文件,而不是虚拟机上的实际操作系统。 另外,当添加完全相同的映射时,浏览器(显然)仍然导航到“虚拟本地主机”。

  • 有没有办法让虚拟机查询Windows 7主机文件?
  • 有没有办法使虚拟机的本地主机与实际的Windows 7本地主机相同?

在开始之前请阅读下面的全部说明,并检查你将不得不做的事情。 这是从内存中,我现在使用一个Mac。

我假设你使用VMware和你的VM(虚拟机的常用缩写)在NAT组网模式下。

按照常用的VMware说法,我使用术语“主机系统”来表示运行VMware的操作系统安装和用于在VMware内部运行的系统的客户系统。

第一部分:在VMware模拟的NATnetworking(通常为networking8)上查找主机系统的IP地址:

在主机上打开cmd.exe并input:

ipconfig / all

记下VMware NAT接口的IP地址

第二部分:使主持人文件统一

更改主机系统上的hosts文件%systemroot%\ System32 \ Drivers \ Etc \ hosts,以便它使用VMware NAT适配器的IP地址而不是127.0.0.1作为本地网站。

确保Web服务器侦听该IP地址。

第三部分:使主机文件可用

在主机系统上,在命令行中:

rmtshare \\name-of-host-system\hostspath=%systemroot%\System32\Drivers\Etc /grant Everyone:r 

确保在该path中没有敏感信息。

第四部分:获取hosts文件

在客户系统上创build一个batch filec:\ hostsfile \ vm_hosts_copy.bat,其中包含以下内容:

 copy \\name-of-host-system\hostspath\hosts %systemroot%\System32\Drivers\Etc 

将其导入您的registry中:

 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run] "CopyHostsFile"="c:\hostsfile\cm_hosts_copy.bat" 

如果完成了这一切,则应该能够使用主机系统和所有访客系统上的相同主机文件。 来宾系统上的主机文件将在每次重新启动时得到更新。 您只需要在主机系统上的常用位置%systemroot%\ System32 \ Drivers \ Etc \ hosts下进行更改。

您可以在所有的Windows VM上使用它,在大多数Unix系统上使用smbclient和/etc/rc.local进行多平台testing。

configuration您的虚拟机使用桥接networking,而不是NAT(如果尚未这样做)。 现在虚拟机与主机在同一个networking上。

将来宾虚拟机的主机文件configuration为与您的工作站(VM主机)相同。

即:
[VM主机的IP] mywebsite.localhost

正确的答案已经存在在超级用户https://superuser.com/questions/144453/virtualbox-guest-os-accessing-local-server-on-host-os – 但我会在这里总结:

就像127.0.0.1localhost是每台计算机自身10.0.2.2的魔法地址一样, 10.0.2.2是guest虚拟机操作系统引用其主机的魔法地址,至less在VirtualBox世界中是这样。 我build立一个VirtualBox虚拟机的过程可以击中在主机操作系统上本地提供的网站:

  1. 下载并安装VirtualBox和扩展包https://www.virtualbox.org/wiki/Downloads
  2. 下载并安装客户操作系统,很可能来自Microsoft https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ – 截至撰写本文时,您不需要编辑任何预先configuration的设置(通过双击橙色立方体.ovf文件来安装VM)
  3. 安装客人补充
  4. 更改主机文件C:\Windows\System32\Drivers\etc\hosts权限并重复所有为主机操作系统所做的黑客攻击,用10.0.2.2replace127.0.0.1 ,例如,您可以添加一行10.0.2.2 local.dev.example.com
  5. 启动networking浏览器并点击您在步骤4( local.dev.example.com )中屏蔽的URL – 它应该加载由主机OS提供的页面

如果你没有破解你的主机文件,你可以直接在客户机操作系统中使用10.0.2.2 。 希望有所帮助!

横向sorting,但如果您要使用大量虚拟机进行testing,请在主机上设置一个DNS服务器,并使用testing区域转发到常规DNS服务器。 然后改变主机使用本地DNS服务器,虚拟机应该遵循。

安德斯

由于您可以从虚拟机中访问Windows 7文件系统,因此您可以设置虚拟机,以便在启动过程中将Windows 7主机文件复制到虚拟机的主机文件。 这是一个理论上的而不是实际的答案,因为我没有Windows 7的可用。

您应该以某种方式安排您的虚拟机通过DNS或lmhostsfunction“互相”查看。 我也会避免在本地主机中使用pc名称,你可以使用任何后缀或不像mypc.local

主LMHOSTS文件始终位于%systemroot%\ System32 \ Drivers \ Etc目录中。 使用Microsoft TCP / IP,您可以从本地和远程计算机中包含其他LMHOSTS文件。

用户可以通过networking从远程计算机导入LMHOSTS文件

  • 在LMHOSTS文件中使用#INCLUDE语句
  • 单击Microsoft TCP / IP属性对话框的WINS地址选项卡上的导入LMHOSTS。

另请参阅此MS KB文章。

有没有办法使虚拟机的本地主机与实际的Windows 7本地主机相同?

上面的这些让我觉得你可能正在碰撞一个概念性的速度撞击。 您的虚拟机不会(也不应该)将其主机视为本地主机。 这是networking上不同的逻辑设备。

本地主机是一个保留的术语,它总是指向127.0.0.1。 试图颠覆它似乎很像打破大锤头,使其成为一个手杖(而不是使用一根棍子)。

正是由于这个原因,DNS和主机文件才存在。

我只是把鱿鱼或其他代理在主机上,并让所有的客人使用它作为代理,所以本地主机将是主机的本地主机和主机的主机文件将被兑现。