之前买了个7欧的vps,只有一个ip,想着弄个小鸡管理面板来开nat小鸡,因为之前用过Proxmox ve,所以首选方案是pve面板(参见《Proxmox ve创建虚拟机、设置NAT端口转发教程》:https://www.zmrbk.com/post-3245.html),但是这个面板在只有一个ip的情况下弄转发比较麻烦,虽然以前成功过,但这次按照教程来是活不成功,最后放弃了。后来又试了下esxi,这个操作起来不熟悉,折腾半天也没结果,后来在群友@Dane的推荐下试了kvm+webvirtmgr,并在其指导下避免走了很多坑,才有了这篇教程。
本次测试基于centos x86_64,其实qemu-kvm是底层,webvirtmgr是控制面板,这两个可以互相分开的,只要建立一个管理通道连接就行了。首先说下kvm的安装,在母鸡上执行以下命令:
1.安装kvm软件包、一些管理工具包,开启kvm服务,并且设置其开机自动启动
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install bridge-utils novnc -y systemctl start libvirtd systemctl enable libvirtd
2.准备 ISO 和 img 目录(后面会说到用处)
mkdir -p /home/kvm/img mkdir -p /home/kvm/iso cd /home/kvm/iso wget http://mirrors.ircam.fr/pub/CentOS/7.3.1611/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso
3.kvm 服务器(客服端)配置与 webvirtmgr 服务器(服务端)连接
curl http://retspen.github.io/libvirt-bootstrap.sh | sudo sh
4.TCP 连接配置(https://github.com/retspen/webvirtmgr/wiki/Setup-TCP-Authorization)
sudo saslpasswd2 -a libvirt zmrbk.com // 添加用户和设置密码。 sudo sasldblistusers2 -f /etc/libvirt/passwd.db // 查看用户 virsh -c qemu+tcp://127.0.0.1/system nodeinfo // 验证设置
以上在母鸡上就把kvm设置好了,以下是安装webvirtmgr,可以和母鸡装在一起,也可以装在另外的vps上。
前提说明:webvirtmgr要依靠nginx来反代他的服务,群友dane是基于oneinstack来搭建nginx环境的,我是基于宝塔面板搭建的,代码会有少许差异,想少走弯路的可以按照教程环境来,以下是在装好oneinstack后的脚本设置。
安装 WebVirtMgr
# 安装 python 设置 Django 环境
sudo yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor sudo yum -y install gcc python-devel sudo pip install numpy
cd /data/wwwroot/ git clone git://github.com/retspen/webvirtmgr.git cd webvirtmgr sudo pip install -r requirements.txt ./manage.py syncdb ./manage.py collectstatic
# 设置 Nginx
vim /usr/local/nginx/conf/nginx.conf
在server 段后追加
server { listen 80; //80端口也可以改为其他端口,加强控制面板安全性 server_name $hostname; location /static/ { root /data/wwwroot/webvirtmgr/webvirtmgr; expires max; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; client_max_body_size 1024M; } }
chown -R www.www /data/wwwroot/webvirtmgr nginx -t sudo service nginx restart
# 设置 Supervisor
vim /etc/supervisord.d/webvirtmgr.ini //这句命令只适用于centos7.x,centos6.x的完全不一样,之前自己安装过程中遇到的坑之一
[program:webvirtmgr] command=/usr/bin/python /data/wwwroot/webvirtmgr/manage.py run_gunicorn -c /data/wwwroot/webvirtmgr/conf/gunicorn.conf.py directory=/data/wwwroot/webvirtmgr autostart=true autorestart=true logfile=/var/log/supervisor/webvirtmgr.log log_stderr=true user=www [program:webvirtmgr-console] command=/usr/bin/python /data/wwwroot/webvirtmgr/console/webvirtmgr-console directory=/data/wwwroot/webvirtmgr autostart=true autorestart=true stdout_logfile=/var/log/supervisor/webvirtmgr-console.log redirect_stderr=true user=www
systemctl restart supervisord systemctl enable supervisord
这个实用