把网站服务器塞进VirtualBox


只能怪我永不消逝的好奇心,我最近又想试试一个叫做Plone的基于Python的CMS了。可是手头没有多余的服务器来装Plone需要的Zope Application Server,如果装在自己的Ubuntu本本上,又觉得可能影响现有软件,而且头一次接触Python世界,心里没底。

于是我在VirtualBox里新建了一个虚拟机,并开始安装Ubuntu Server。第一次运行失败了,错误信息是什么”no kernel for your CPU”,Google了一下,原来需要开启PAE/Nx支持才行的:

然后顺利完成Ubuntu Server的安装,这里不须细说了。

我打算先弄好LAMP在虚拟机上,然后在另一个虚拟机上尝试ZOPE。接下来的问题的做端口转发,因为虚拟机上的GuestOS是通过NAT连接到我的本本的,好比一台电脑通过路由器上网一样。方法比较麻烦:

VBoxManage setextradata “Linux Guest”
“VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol” TCP
VBoxManage setextradata “Linux Guest”
“VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort” 80
VBoxManage setextradata “Linux Guest”
“VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort” 8000

目前似乎只有敲命令了。上面的是样本:”Linux Guest”是你VirtualBox里面虚拟机的名字,”pcnet”是虚拟网卡的名字(缺省),其它只要照猫画虎即可。注意一点就是HostPort必须是大于1024的,这是因为Linux的安全机制规定<1024的端口只能被root用户使用(当然,如果您开机就root的话……)。

这样通过端口映射,已经可以访问到虚拟机上的HTTP服务了。

下一步是为Virtual Machine上面设置Virtual Host,够拗口的吧……

由于访问是在Host OS上面,所以在Host OS里设置几个域名:

sudo vim /etc/hosts

添加

127.0.0.1  vh1.localhost

127.0.0.1  vh2.localhost

然后在Guest OS上面修改Apache2配置,添加VH记录:

<VirtualHost *:80>

ServerName vh1.localhost

DocumentRoot /path/to/your/website

</VirtualHost>

重新启动Guest OS上面的Apache2服务。最后在Host OS上用FireFox访问 http://vh1.localhost:8000,应该能看到你配置的网站了。

,

2 responses to “把网站服务器塞进VirtualBox”