诸多历史原因,造成内部虚拟化比较奇特。有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
重启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
二、安装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 创建虚拟机
跟随页面引导,逐步添加虚拟机即可,需要注意以下:
- 如果使用导入qcow、vmbk等磁盘文件时,最好将文件上传至vbox原始目录。例如/home/vbox/VMNAME/
- 网络选择新创建的桥接网络br0;(如果没有创建,请google创建桥接网络)
- 导入的虚拟机可能存在监控的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
-
参考链接: