---
title: "使用virtualbox轻松实现服务器虚拟化[译]"
url: "https://lerry.me/post/2014/12/easy-server-virtualization-using-virtualbox"
date: 2014-12-31T15:38:00.000Z
updated: 2026-08-31T08:27:05.122Z
tags:
  - "VirtualBox"
  - "开机启动"
language: zh-CN
---

# 使用virtualbox轻松实现服务器虚拟化[译]

现在市面上有很多种虚拟化解决方案，商业化或开源的，小公司到大企业。

本文将描述，如何通过VirtualBox在基于Debian的服务器上安装一个无图形化界面的虚拟化服务，并托管多个其他基于Debian的服务器[译者注，实际上VirtualBox支持的系统很多，包括Windows]。我们将使用phpVirtualBox来管理Virtualbox，它是一个开源的，用ajax实现的VirtualBox用户界面，用PHP写成(PHP是最好的语言？)。

1) 物理服务器配备
我们选了一台 I7 的服务器，32G内存，2块1T的系统盘，4块数据盘用来存储虚拟机镜像文件。

1) 安装基本系统
我们就使用Debian 最新测试版(jessie)的默认安装就可以了，不需要图形界面，只需要一个SSH服务就可以了。注意选择配置磁盘的使用，我们选了软RAID(RAID1)来管理系统盘和数据盘。

2) 安装VirtualBox
你可以在这里下载 VirtualBox：https://www.virtualbox.org/wiki/Linux_Downloads 。因为没有给  jessie (就是Debian Testing) 用的deb包，我们就选了给 wheezy(Debian 7)的(virtualbox-4.3_4.3.6-91406~Debian~wheezy_amd64.deb)，安装很简单

```
sudo dpkg -i virtualbox-4.3_4.3.6-91406~Debian~wheezy_amd64.deb
```

3) 安装vboxweb-service

默认的VirtualBox安装是不允许vboxweb-service 启动的，但是我们的phpVirtualBox需要用到这个服务。

首先我们新建一个系统用户，叫vbox

```
sudo useradd -m vbox
sudo passwd vbox
```

创建文件 /etc/default/virtualbox ，并加上这一行

```
VBOXWEB_USER=vbox #注意这里是刚才你创建的用户，如果不是vbox请替换成正确的
```

这样 VirtualBox 的 SOAP API 就会以 vbox 这个用户运行。

运行下面的命令让vboxweb-service随系统启动，并启动它。

```
sudo update-rc.d vboxweb-service defaults
sudo /etc/init.d/vboxweb-service start
```

你也可以安装一下 Oracle 的扩展包 就可以通过RDP协议(就是windows远程桌面用的协议)访问虚拟机的终端啦。扩展包还是从这个地址下载：https://www.virtualbox.org/wiki/Downloads 。比如我下载的是  Oracle_VM_VirtualBox_Extension_Pack-4.3.6-91406.vbox-extpack，就这样安装

```
sudo VBoxManage extpack install  Oracle_VM_VirtualBox_Extension_Pack-4.3.6-91406.vbox-extpack
```

4) 安装phpVirtualBOX

先安装依赖包(注意，目的是安装一个带php的web环境，如果你用nginx也是可以的)

```
sudo apt-get install apache2  apache2-utils apache2.2-bin apache2 apache2-doc apache2-suexec libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libapr1 php5-common php5-mysql  php-pear wget
```

从这里下载phpVirtualBox的安装包， http://sourceforge.net/projects/phpvirtualbox/ ，比如 phpvirtualbox-4.3-1.zip。
因为我们这台服务器上没有托管其他网站，我们可以把 /var/www/html 目录清空，并把phpVirtualBox解压到这里

```
cd /var/www/html
cp config.php-example config.php
vi config.php
```

修改下面的内容，

```
var $username = 'vbox'; # 这个是上面你创建的用户
var $password = 'thePasswordYouUsed'; # 这是那个用户的密码
```

现在在浏览器中访问 http://服务器ip/ 应该就可以看到界面了，默认的用户名和密码都是 admin。
登陆以后可以点击 File > Change Password 修改密码

5)添加虚拟机镜像，并设置开机自启

这里你既可以创建一个新的虚拟机，也可以导入已有的。我已经有好几个导出成OVA格式的虚拟机镜像了，所以可以很方便的通过phpVirtualBox导入。注意我们选择的网络类型是 bridged network (桥接) ，为了开始远程显示，我们可以这么设置

![Image](https://r2.lerry.me/next-blog/uploads/2014-12-31/display.png)

设置虚拟机的开机自启是这样的
在 /etc/default/virtualbox 下面追加两行

```
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.conf
```

然后修改权限

```
sudo chgrp vbox /etc/vbox
sudo chmod 1775 /etc/vbox
```

编辑 /etc/vbox/autostart.conf 包含下列内容

```
# Default policy is to deny starting a VM, the other option is “allow”.
default_policy = deny
# user vbox is allowed to start virtual machines but starting them
# will be delayed for 10 seconds
#注意这里的vbox是你之前创建的用户
vbox = {
allow = true
startup_delay = 10
}
```

以 vbox 用户的身份，设置自启动数据路径

```
VBoxManage setproperty autostartdbpath /etc/vbox
```

同样以 vbox 用户的身份，设置你要自启动的虚拟机

```
VBoxManage modifyvm 虚拟机名称 --autostart-enabled on
```

运行之后，在/etc/vbox 路径下你应该会看到一个 名为 vbox.start 的文件

 重启 vboxautostart-service 服务

```
service vboxautostart-service stop
service vboxautostart-service start
```

来源：[blog.datascouting.com](http://blog.datascouting.com/?p=158)
