<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="安装 kvm 管理面板">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2017-12-15 10:28<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
安装 kvm 管理面板

系统环境

ubuntu 14.04, nginx, supervisor, kvm, WebVirtMgr, 公网 IP (内网IP需要端口映射或外网 nginx 代理)

如果没有安装 supervisor 和 nginx， 先安装 nginx 和 supervisor


apt-get install nginx supervisor



安装 kvm

请先参考 使用 kvm 安装虚拟机.md 安装 kvm， 主要命令如下


apt-get update
apt-get install qemu-kvm libvirt-bin virtinst bridge-utils



安装完成后就可以使用 virsh 命令行工具管理 kvm 虚拟机了，下边介绍安装 WebVirtMgr 网页管理控制台

安装 WebVirtMgr

参考 [这里](https://github.com/retspen/webvirtmgr/wiki/Install-WebVirtMgr)

安装依赖


apt-get install git python-pip python-libvirt python-libxml2 novnc



下载并配置 WebVirtMgr


mkdir -p /var/www
cd /var/www
git clone git://github.com/retspen/webvirtmgr.git
cd webvirtmgr
pip install -r requirements.txt
./manage.py syncdb
./manage.py collectstatic



配置 nginx，如果有安全证书请使用 https，去掉 # 注释


server {
listen 80;
#listen 443 ssl;

server_name kvm.example.com;
#ssl_certificate certs/kvm.example.com.chained.crt;
#ssl_certificate_key certs/kvm.example.com.key;

access_log /var/log/nginx/$host.access.log;

location /static/ {
root /var/www/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;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
client_max_body_size 1024M; # Set higher depending on your needs
}
}



配置 supervisor，新建 /etc/supervisor/conf.d/webvirtmgr.conf 文件


[program:webvirtmgr]
command=/usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr.log
redirect_stderr=true
user=www-data

[program:webvirtmgr-console]
command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console -d
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=www-data



修改 webvirtmgr

如果只是自己用，修改 webvirtmgr/conf/gunicorn.conf.py 文件， 修改 workers = get_workers() 为workers = 1

为了避免安全隐患，修改 vnc 监听单口仅为 127.0.0.1，修改 vrtManager/create.py 文件，将


&lt;graphics type='%s' port='-1' autoport='yes' listen='0.0.0.0'&gt;
    &lt;listen type='address' address='0.0.0.0'/&gt;
&lt;/graphics&gt;



修改为


&lt;graphics type='%s' port='-1' autoport='yes'/&gt;



这样从网页控制台新建的虚拟机的 vnc 默认会监听在 127.0.0.1，只有本地的 websocket 代理可以访问，否则监听在 0.0.0.0 会被任何人通过 vnc 接入。

修改 webvirtmgr 不能访问 127.0.0.1 vnc 的 bug， 修改 console/webvirtmgr-console 文件，修改


elif console_socket or re.match('^127\.', console_host):



为


elif console_socket or (re.match('^127\.', console_host) and conntype != CONN_SOCKET):



如果使用安全的 wss 或 nginx 中使用了 https, 则需要修改 webvirtmgr/settings.py 文件，修改如下内容


WS_HOST = '0.0.0.0'
WS_PUBLIC_HOST = 'kvm.example.com'
WS_CERT = '/etc/nginx/certs/kvm.example.com.pem'



如果没有 pem 文件，pem 文件可通过 cat kvm.example.com.key kvm.example.com.crt &gt; kvm.example.com.pem 生成。

修改用户权限


usermod -a -G libvirtd www-data
chown -R www-data:www-data /var/www/webvirtmgr



启动服务


service supervisor restart
service nginx restart



网页控制台测试

使用 netstat -natp 查看，确保 0.0.0.0:80 127.0.0.1:8000 端口已打开

本地使用浏览器访问 kvm.example.com 测试控制台是否安装成功。

登陆时用户名和密码为使用 ./manage.py syncdb 命令创建的用户名和密码。



点击 Add Connection 添加 Local Socket， 输入名称后确认。点击新建的主机进入，选择 Storage-&gt;New Storage-&gt;ISO，输入路径为 /var/lib/libvirt/boot，点击 Create 创建。





选择 Storage-&gt;Add Storage-&gt;DIR，输入路径为 /var/lib/libvirt/images，名称为 default，点击 Create创建。

新建一个 centos7 虚拟机实例

下载 centos7 镜像到 /var/lib/libvirt/boot 目录


cd /var/lib/libvirt/boot
wget http://mirrors.kernel.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso



在网页控制台点击 New Instance -&gt; Create micro -&gt; Name (输入centos7) -&gt; Create



选择 Settings -&gt; Media -&gt; CD ROM1 (centos7 &hellip;) -&gt; connect，点击 Power -&gt; Start



点击 Access -&gt; Console 可以进入 novnc 管理界面安装系统了。如果出现了 time out 错误，只需要多刷新两次即可。






</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
