在我们的网站开发过程中,我们经常需要在几个浏览器上testing我们的应用程序和网站的布局。 由于独立运行所有这些浏览器几乎是不可能的,而且诸如IETester这样的应用程序不能完美地工作,并且不能在Windows 7上运行,所以能够为这些浏览器运行虚拟机以便具有“本地”经验。
目前,我正在尝试使用运行IE7的虚拟Windows XP 。 我自己的设置是Windows 7 RC1 64位 。 我们的大多数网站和应用程序都是在本地使用Windows主机文件中的映射开发的。
问题:
从虚拟机内导航到http://mywebsite.localhost时 ,将查询虚拟机的主机文件,而不是虚拟机上的实际操作系统。 另外,当添加完全相同的映射时,浏览器(显然)仍然导航到“虚拟本地主机”。
在开始之前请阅读下面的全部说明,并检查你将不得不做的事情。 这是从内存中,我现在使用一个Mac。
我假设你使用VMware和你的VM(虚拟机的常用缩写)在NAT组网模式下。
按照常用的VMware说法,我使用术语“主机系统”来表示运行VMware的操作系统安装和用于在VMware内部运行的系统的客户系统。
在主机上打开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中没有敏感信息。
在客户系统上创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.1
或localhost
是每台计算机自身10.0.2.2
的魔法地址一样, 10.0.2.2
是guest虚拟机操作系统引用其主机的魔法地址,至less在VirtualBox世界中是这样。 我build立一个VirtualBox虚拟机的过程可以击中在主机操作系统上本地提供的网站:
.ovf
文件来安装VM) C:\Windows\System32\Drivers\etc\hosts
权限并重复所有为主机操作系统所做的黑客攻击,用10.0.2.2
replace127.0.0.1
,例如,您可以添加一行10.0.2.2 local.dev.example.com
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文件
另请参阅此MS KB文章。
有没有办法使虚拟机的本地主机与实际的Windows 7本地主机相同?
上面的这些让我觉得你可能正在碰撞一个概念性的速度撞击。 您的虚拟机不会(也不应该)将其主机视为本地主机。 这是networking上不同的逻辑设备。
本地主机是一个保留的术语,它总是指向127.0.0.1。 试图颠覆它似乎很像打破大锤头,使其成为一个手杖(而不是使用一根棍子)。
正是由于这个原因,DNS和主机文件才存在。
我只是把鱿鱼或其他代理在主机上,并让所有的客人使用它作为代理,所以本地主机将是主机的本地主机和主机的主机文件将被兑现。