如何让Apache通过VirtualBox服务网站?


8

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

花费了一天的时间,并进行了许多尝试(尽管似乎我按照指示中的说明进行操作,但我总是做错了事情),最终我做到了。

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

是的,我确实/etc/hosts按照本教程的说明修改了该文件(适用于Windows 7)。但是我无法使它工作。不知道怎么了 有人知道我还要做什么吗?

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


您要使用计算机(例如用于开发)还是网络中的其他服务器?
戴维森

该服务器安装在虚拟机中(使用virtualbox),我想从主机上的浏览器访问该服务器提供的测试网站。希望很清楚。我已经将答案发布了(但是只能在2天后将其标记为已回答)。
its_me 2012年

1
当然,我已经赞成您的回答了(很好)。我只是想建议您添加仅主机和桥接(用于Internet访问)。另外,如果要从外部访问VM,则另一个答案是桥接环境中的要求。让别人清楚地
知道

Answers:


5

如果您需要允许物理网络中的其他计算机访问您的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帮助。完全基于这样的回答,有点是不一样的。)


1
此解决方案应该起作用。我正在尝试使用此配置的开发服务器。此外,桥接和仅主机均可同时使用。桥接不允许主机访问您自己的服务器(据我所知)。并且仅主机不允许访问Internet(因此没有更新)。我通常都使用这两种方式
Davisein 2012年

1
@Davisein错误。桥接网络模式允许您从主机访问您的虚拟机,同时还使其(VM)访问主机使用的Internet连接。:)
its_me 2013年

真正。我不会删除我之前的评论,以使您看起来不奇怪,但这是错误的。如此处所述virtualbox.org/manual/ch06.html,不允许主机与来宾计算机通话的系统是NAT 。
戴维森

确保IPTables不会阻止连接...
Ethereal

我按照以下说明操作到了T。如果在Ubuntu VM上打开浏览器,则它可以解析dns并提供my-dummy-site.com。但是,如果我在Ubuntu VM外部(在装有我的VM的Windows 10机器上)打开浏览器,则无法解析my-dummy-site.com。但是它能够解析IP 192.168.1.118!可能是什么问题呢?
克里斯·尼尔森

0

只能root打开小于1024的端口,因此,如果普通用户正在运行VirtualBox,它将不会在主机上打开端口80并将其转发给来宾。

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

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

我不知道VirtualBox可执行文件的路径,但是您可以很容易地弄清楚该文件在的输出中搜索类似于“ VirtualBox”的内容ps auxf


我会尝试的,并告诉您。同时,您说过“只有root可以打开<1024的端口”,但是我仍然能够使其正常工作(请在下面查看我的解决方案)。
its_me 2012年

@its_me,因为您的解决方案利用了桥接网络。
埃里克·卡瓦略

啊好吧。感谢您的澄清埃里克。:)
its_me
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.