Ubuntu安装virtualbox-6.1并且通过phpvirtualbox管理

诸多历史原因,造成内部虚拟化比较奇特。有Kvm架构,基于webvirtmgr与ovirt管理。有基于virtualbox架构通过phpvirtualbox。宿主机有Centos7,Centos8,Ubuntu等多个版本。

一、Ubuntu宿主机安装virutalbox

今天给一个闲置机器安装了Ubuntu Server 20.02操作系统。

1.1 安装virtualbox

安装virtualbox:

sudo apt update
sudo apt install virtualbox-6.1

备注:随着virtualbox版本更新,版本号可能会发生变化,或无需版本号。

常见问题:
安装过程中出现了Error,根据屏幕引导执行了一下命令: sudo apt --fix-broken install
安装完成后尝试启动vboxwebsrv:sudo systemctl status vboxweb-service

1.2 开通vboxweb service

因为开通vboxweb service服务,需要提供用户(博主个人猜想,无证据),因此创建用户:

创建vbox用户,并更新密码:

sudo adduser vbox
sudo passwd vbox

添加vboxweb service配置,新建文件/etc/default/virtualbox,内容如下:

sudo vim /etc/default/virtualbox

内容如下:

VBOXWEB_USER=vbox
VBOXWEB_HOST=0.0.0.0

此处参考资料:

https://github.com/phpvirtualbox/phpvirtualbox/wiki/vboxweb-service-Configuration-in-Linux

https://www.virtualbox.org./manual/UserManual.html

重启vboxweb-service

sudo systemctl restart vboxweb-service
# 某些版本命令如下:
sudo systemctl restart vboxweb.service

开通防火墙端口:

sudo ufw allow 18083

测试vboxweb-service

浏览器中请求192.168.1.18:18083,结果如下:

说明vboxweb-service配置正确。

1.3创建桥接网络

创建方法请见google,博主在ubuntu20上创建好的配置如下:

cat /etc/netplan/00-installer-config.yaml

 

# This is the network config written by 'subiquity'
network:
ethernets:
eno1:
dhcp4: false
dhcp6: false
eno2:
dhcp4: true
bridges:
br0:
interfaces: [eno1]
addresses: [192.168.1.18/12]
gateway4: 192.168.1.1
nameservers:
addresses: [114.114.114.114,8.8.8.8]
parameters:
stp: false
forward-delay: 0
dhcp4: no
dhcp6: no
version: 2

网卡配置修改好后,重启网络即可。

netplan apply

参考网址:https://www.answertopia.com/ubuntu/creating-an-ubuntu-kvm-networked-bridge-interface/#:~:text=The%20creation%20of%20a%20network%20bridge%20on%20an,eno1%20with%20the%20connection%20name%20on%20your%20system%29%3A

二、安装phpvirtualbox

phpvirtualbox是之前就安装好的,因此就不再添加了。

2.1 将新的virtualbox添加至管理节点。

登录phpvirtualbox主机,查找config.php配置文件,新增节点配置见下:

var $servers = array(
array(
'name' => '1.17',
'username' => 'vbox',
'password' => 'pwd',
'location' => 'http://192.168.1.17:18083/'
),
array(
'name' => '1.18',
'username' => 'vbox',
'password' => 'pwd',
'location' => 'http://192.168.1.18:18083/'
),

2.2 登录phpvirtualbox web页面

已经后,已经可以看到添加的新1.18节点。

2.3 安装Oracle VM VirtualBox and Extension Packs

使用phpvirtualbox 管理时发现无法使用Remote Desktop,调研发现原来是没有安装Oracle VM VirtualBox and Extension Packs。经过阅读官方文档后,尝试采用apt search virutalbox 查找包,于是找到了。

安装命令:

sudo apt install virtualbox-ext-pack

安装之后,我重启了一下服务器,重新编辑虚拟机后发现可以使用RDP实现远程。

三、安装虚拟机

3.1 上传虚拟机ISO文件

使用sftp工具上传至任一文件夹均可,创建虚拟机时挂在ISO文件就行。

3.2 创建虚拟机

跟随页面引导,逐步添加虚拟机即可,需要注意以下:

  1. 如果使用导入qcow、vmbk等磁盘文件时,最好将文件上传至vbox原始目录。例如/home/vbox/VMNAME/
  2. 网络选择新创建的桥接网络br0;(如果没有创建,请google创建桥接网络)
  3. 导入的虚拟机可能存在监控的Remote Desktop IP错误的情况,一直监听127.0.01,。目前还没有好的解决方法,修改*.vbox文件也无效,暂时通过finalshell的tunnel端口代理访问;

常见问题

1、偶尔出现phpivirtualbox无法连接virtualbox的问题

重启vboxweb好像能解决,原因未知:

sudo systemctl status vboxweb-service

2、virtualbox的服务程序是以哪个用户运行的呢?

查看服务程序PID USER与文件owner可知,均为vbox。

 

3、phpvirtualbox挂了怎么办?

临时采用Docker:

 docker run --name phpvirtualbox --restart=always \
-p 86:80 \
-e CONF_noAuth='true' \
-e SRV1_HOSTPORT=192.168.1.1:18083 -e SRV1_NAME=192.168.1.1 -e SRV1_USER=vbox -e SRV1_PW='vbox' \
-e SRV2_HOSTPORT=192.168.1.2:18083 -e SRV2_NAME=192.168.1.2 -e SRV2_USER=vbox -e SRV2_PW='vbox' \
-e SRV3_HOSTPORT=192.168.1.3:18083 -e SRV3_NAME=192.168.1.3 -e SRV3_USER=vbox -e SRV3_PW='vbox' \
-e SRV4_HOSTPORT=192.168.1.4:18083 -e SRV4_NAME=192.168.1.4 -e SRV4_USER=vbox -e SRV4_PW='vbox' \
-d jazzdd/phpvirtualbox:VBOX6.x

参考链接:

  1. https://www.virtualbox.org./manual/UserManual.html#install-linux-host
  2. https://github.com/phpvirtualbox/phpvirtualbox