如何通过VirtualBox获取apache服务站点?

本教程教我如何在Windows 7主机上的VirtualBox中创建Ubuntu Server(12.10,64位)VM,安装Apache并让它通过主机的浏览器访问虚拟域中的站点。

花了一天时间和许多尝试(虽然看起来我按照指示进行了布置,但我总是做错了)我终于做到了。

我觉得Ubuntu是一个比Windows更无缝的开发环境,所以我想在Ubuntu上做同样的事情。 所以,这一次,我在Ubuntu主机上的VirtualBox中创建了一个Ubuntu Server VM,安装了Apache并对其进行了配置。 但是当我通过虚拟域访问该站点时,我收到“ 未找到服务器 ”错误。

是的,我确实修改了/etc/hosts文件,正如教程中提到的 (适用于Windows 7)。 但我无法让它发挥作用。 不知道出了什么问题。 谁知道我还应该做什么?

编辑:如果我不够清楚,请问。 我愿意澄清一下。

如果您需要允许物理网络中的其他计算机访问VM,或者VM需要Internet访问,请使用桥接网络。 否则,坚持只有主机的网络。

  1. 停止VM并在VirtualBox(OSE)管理器中打开它的设置

  2. 转到“ 网络”选项卡

  3. 根据您的选择选择网络模式(桥接网络或仅限主机)

    如果要使用桥接网络,则必须在名称:____________中选择正确的网络适配器。 对于有线连接,您可以选择名为eth0 。 无线连接通常被命名为wlan0 (数字可能会有所不同)。

  4. 保存设置

  5. 启动Ubuntu VM

  6. 启动时,您可以通过运行以下方式收集IP地址:

     sudo ifconfig 

    输出应该类似于:

     eth0 Link encap:Ethernet HWaddr 08:00:27:f4:c3:7b inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fef4:c37b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:20 errors:0 dropped:0 overruns:0 frame:0 TX packets:25 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3244 (3.2 KB) TX bytes:2512 (2.5 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 

    在上面的输出中, 192.168.1.4 (在第二行)是可以在Ubuntu主机系统中用于访问VM的IP地址。

  7. 现在在Ubuntu主机中打开hosts文件:

     sudo gedit /etc/hosts 

    (如果您不想使用gedit ,请将该单词替换为您喜欢的编辑器的名称。例如vimnano 。)

    文件打开后,添加此行并保存

     192.168.1.4 my-dummy-site.com 
  8. 打开主机上的任何浏览器,然后访问my-dummy-site.com访问您的网站,直接从VirtualBox提供。

(特别感谢@iSeth 的帮助 。完全基于这个答案 ,位不一样。)

只有root才能打开端口<1024,因此如果普通用户正在运行VirtualBox,它将不会在Host上打开端口80并将其转发给Guest。

您可以通过运行以下命令允许程序打开特权端口:

setcap 'cap_net_bind_service=+ep' /path/to/executable

我不知道VirtualBox可执行文件的路径,但你可以很容易地找出它在ps auxf的输出中搜索类似于“VirtualBox”的东西。