记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

安装 kvm 管理面板

安装 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 文件,将

<graphics type='%s' port='-1' autoport='yes' listen='0.0.0.0'>
    <listen type='address' address='0.0.0.0'/>
</graphics>

修改为

<graphics type='%s' port='-1' autoport='yes'/>

这样从网页控制台新建的虚拟机的 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 > 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 命令创建的用户名和密码。

1

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

2
3
4

选择 Storage->Add Storage->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 -> Create micro -> Name (输入centos7) -> Create

5

选择 Settings -> Media -> CD ROM1 (centos7 …) -> connect,点击 Power -> Start

6

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

7

8

9

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):