导读 操作虽然直接明了,但总归不是那么的方便快捷,并且管理也不方便,查了下关于KVM的管理平台系统,发现了WebVirtMgr 这个开源软件,简单写下安装过程和遇着的问题。
系统环境以及准备工作

1.centos 7_64位系统,关闭selinux

2.已经成功安装KVM并创建了VM虚拟机。

3.安装epel-release 源。

4.安装对应依赖关系,下载WebVirtMgr 并且安装nginx作为反向代理。

WebVirtMgr 安装部署
安装Python环境、pip 工具以及nginx

epel源建议使用国内镜像: 《centos 更换yum源》

[root@kvm home] yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx   #nginx没有过多的需求,所以yum安装即可
安装WebVirtMgr
[root@kvm home] git clone git://github.com/retspen/webvirtmgr.git
[root@kvm home] cd webvirtmgr
[root@kvm webvirtmgr] pip install -r requirements.txt

上面的会安装Django 等组件,默认下载速度较慢,建议先替换pip源为国内源:pip更换为国内源;如果有出现下面提示信息是由于sqlite 没有安装,需要安装后再重新编译Python。

django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3
[root@kvm7 home] yum -y install sqlite-devel

同步数据库

[root@kvm webvirtmgr] ./manage.py syncdb  #会提示创建Django 连接数据库账号密码等信息
[root@kvm webvirtmgr] ./manage.py collectstatic #同步项目文件
[root@kvm webvirtmgr] ./manage.py createsuperuser   #配置webvirtmgr 登录账号
nginx 配置
[root@kvm webvirtmgr] vim /etc/nginx/conf.d/webvirtmgr.conf
 
server {
    listen 80 ;
    server_name kvm.cnyunwei.cc;
    access_log /var/log/nginx/webvirtmgr_access_log; 
 
    location /static/ {
        root /home/webvirtmgr/webvirtmgr; 
        expires max;
    }
 
    location / {
        proxy_pass //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; 
    }
}
[root@kvm webvirtmgr] nginx -t  #检测配置是否正确
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@kvm webvirtmgr] service nginx restart
Supervisor 配置

Python 项目默认是无法直接在后台运行的,可以通过Supervisor 管理程序进行控制。

centos 7安装的Supervisor 配置可以在/etc/supervisord.d/创建xxx.ini 文件,centos 6直接在/etc/supervisord.conf 中增加配置。

[root@kvm webvirtmgr] vim /etc/supervisord.d/webvirtmgr.ini
[program:webvirtmgr]
command=/usr/bin/python /home/webvirtmgr/manage.py run_gunicorn -c /home/webvirtmgr/conf/gunicorn.conf.py
directory=/home/webvirtmgr
autostart=true
autorestart=true
logfile=/var/log/supervisor/webvirtmgr.log
log_stderr=true
user=nginx
 
[program:webvirtmgr-console]
command=/usr/bin/python /home/webvirtmgr/console/webvirtmgr-console
directory=/home/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=nginx

之前反复测试,supervisor 进程无法启动该项目,Python 没有监听端口,查看日志也没有具体的报错信息,查了很久再看配置信息的时候发现user=nginx 这个值,想到了webvirtmgr 项目的权限是root 账户,nginx 账户没有执行权限,重置账户为nginx后解决。

[root@kvm home]  chown nginx.nginx -R webvirtmgr/
[root@kvm home]  service supervisord restart

查看端口监听情况:

[root@kvm  home]  netstat -tunlp | grep python
tcp        0      0 127.0.0.1:8000              0.0.0.0:*                   LISTEN      1463/python         
tcp        0      0 0.0.0.0:6080                0.0.0.0:*                   LISTEN      1462/python
配置webvirtmgr 连接KVM服务器

webvirtmgr 连接kvm有两种方式:SSH和TCP,TCP模式最为简单方便,这里已tcp连接为例。

设置libvirtd 服务监听

在kvm服务器上取消libvirtd 服务配置文件LIBVIRTD_ARGS 前的注释 /etc/sysconfig/libvirtd

[root@kvm home]  cp /etc/sysconfig/libvirtd{,_bak}  #先备份原文件再操作
[root@kvm home]  vim /etc/sysconfig/libvirtd
LIBVIRTD_ARGS="--listen"
配置libvirt 服务

/etc/libvirt/libvirtd.conf 允许通过tcp方式通讯,修改以下参数:

[root@kvm home] cp  /etc/libvirt/libvirtd.conf{,_bak}  #先备份原文件再操作
[root@kvm home] vim /etc/libvirt/libvirtd.conf
listen_tcp = 1  #允许tcp监听
tcp_port = "16509"  #开放tcp端口
listen_addr = "0.0.0.0"  #监听地址修改为0.0.0.0
auth_tcp = sasl  #配置tcp通过sasl认证
listen_tls = 0  #取消CA认证功能
启动服务、创建libvirt管理用户
[root@kvm home] service libvirtd start
[root@kvm home] saslpasswd2 -a libvirt admin #创建用户admin 

在修改配置文件的时候出现过用sed命令直接替换配置文件后导致libvirt无法启动,还好之前备份了文件,通过vim 编辑器手动查找修改后正常启动,所以对配置文件的编辑修改前进行备份是多么重要的事情。

本文原创地址://lrxjmw.cn/kvm-manage-platform-deploy.html编辑:xiangping wu,审核员:逄增宝