当前位置: 首页 > news >正文

CentOS 7.9 离线部署 KVM + WebVirtMgr,通过WebVirtMgr创建虚拟机教程

部署参考连接:https://zhuanlan.zhihu.com/p/434275145

部署参考连接:https://www.cnblogs.com/djlsunshine/p/11040246.html

一、前期准备(能上网的同版本 CentOS7 下载机)

下载 CentOS 7.9 全套 ISO
CentOS-7-x86_64-Everything-2009.iso

发送到部署机器上/root目录下。
既当离线 YUM 源,又当系统镜像。

1. 创建缓存目录
mkdir -p /opt/offline/{kvm,webvirtmgr-pkgs}/{rpms,pips}2. 下载 KVM 及其依赖
yumdownloader --resolve --destdir=/opt/offline/kvm/rpms \qemu-kvm qemu-kvm-tools qemu-img virt-install virt-manager \virt-viewer libvirt libvirt-client libvirt-python libguestfs-tools \bridge-utils3.下载 WebVirtMgr 所需 rpm
yumdownloader --resolve --destdir=/opt/offline/webvirtmgr-pkgs/rpms \git nginx supervisor python2-pip libvirt-python libxml2-python \python-websockify gcc python2-devel python2-lockfile4. 下载 Python2 依赖
cd /opt/offline/webvirtmgr-pkgs/pips
pip2 download -r https://raw.githubusercontent.com/retspen/webvirtmgr/master/requirements.txt
pip2 download 'Django==1.6.11'5.下载源码
cd /opt/offline
git clone https://github.com/retspen/webvirtmgr.git6. 生成本地 repo 数据
createrepo /opt/offline/kvm/rpms
createrepo /opt/offline/webvirtmgr/rpms7.打包
cd /opt
tar zvcf kvm-webvirtmgr-offline.tar.gz offline/ 7.通过scp等命令,发送到远程服务器。
scp -r kvm-webvirtmgr-offline.tar.gz root@部署机ip:/opt/

二、离线主机操作(无网络)

1. 关闭防火墙 / SELinux
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 02. 配置本地 yum 源(方便后续缺少依赖补充)# 1. 创建挂载点
mkdir -p /mnt/centos7-dvd# 挂载
mount -o loop /root/CentOS-7-x86_64-Everything-2009.iso /mnt/centos7-dvd#  写 repo
cat > /etc/yum.repos.d/dvd.repo <<'EOF'
[dvd]
name=CentOS7-DVD
baseurl=file:///mnt/centos7-dvd
enabled=1
gpgcheck=0
EOF# 执行
yum clean all
yum makecache

1. 安装 KVM 核心

1.解压
cd /opt
tar xcf kvm-webvirtmgr-offline.tar.gz cd /opt/offline/kvm/rpmsyum localinstall -y *.rpm# 启服务
systemctl enable --now libvirtd

2. 配置 KVM 与桥接(br0 示例)

1. 创建桥接配置文件
cd /etc/sysconfig/network-scripts
cp ifcfg-<原网卡> cp ifcfg-<原网卡>bak
cp ifcfg-<原网卡> ifcfg-br02. ifcfg-br0 示例:TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.1.200
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.1143.原网卡 示例(只保留桥接指向):
TYPE=Ethernet
NAME=<原网卡>
DEVICE=<原网卡>
ONBOOT=yes
BRIDGE=br04.重启网络:
systemctl restart network5. 启动 libvirtd
systemctl enable libvirtd && systemctl start libvirtd

3. 安装 WebVirtMgr

# 安装RPM
cd /opt/offline/webvirtmgr-pkgs/rpmsyum localinstall -y *.rpm# 安装pip包
cd /opt/offline/webvirtmgr-pkgs/pipspip2 install --no-index --find-links=. -r \/opt/offline/webvirtmgr/requirements.txtpip2 install --no-index --find-links=. Django==1.6.11

4. 初始化WebVirtMgr

# 修正 secret_key 文件权限(防报错)touch /opt/offline/webvirtmgr/webvirtmgr/.secret_key_store
chmod 600 /opt/offline/webvirtmgr/webvirtmgr/.secret_key_store# 初始化数据库(必须用 Python2)
cd /opt/offline/webvirtmgr
python2 manage.py syncdb       # 按提示创建超级用户
python2 manage.py collectstatic --noinput

5. 配置 Nginx

cat > /etc/nginx/conf.d/webvirtmgr.conf <<'EOF'
server {listen 80;server_name _;location /static/ {root /opt/offline/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 $http_host;}
}
EOFsystemctl restart nginx

6. 配置 systemd

1. 创建 webvirtmgr 主服务cat > /etc/systemd/system/webvirtmgr.service <<'EOF'
[Unit]
Description=WebVirtMgr Django UI
After=network.target[Service]
Type=simple
User=root
WorkingDirectory=/opt/offline/webvirtmgr-master
ExecStart=/usr/bin/python2 /opt/offline/webvirtmgr-master/manage.py runserver 0.0.0.0:8000
Restart=on-failure
RestartSec=5s# 日志打到 journal,可用 journalctl -u webvirtmgr -f 查看
StandardOutput=journal
StandardError=journal[Install]
WantedBy=multi-user.target
EOF2.创建 webvirtmgr-console 控制台服务cat > /etc/systemd/system/webvirtmgr-console.service <<'EOF'
[Unit]
Description=WebVirtMgr noVNC console proxy
After=network.target[Service]
Type=simple
User=root
WorkingDirectory=/opt/offline/webvirtmgr-master
ExecStart=/usr/bin/python2 /opt/offline/webvirtmgr-master/console/webvirtmgr-console
Restart=on-failure
RestartSec=5s
StandardOutput=journal
StandardError=journal[Install]
WantedBy=multi-user.target
EOF3.载入并立即启动systemctl daemon-reload
systemctl enable --now webvirtmgr.service webvirtmgr-console.service4. 查看状态/日志systemctl status webvirtmgr.service webvirtmgr-console.service
journalctl -u webvirtmgr -f          # 实时日志

三、WebVirtMgr的基本使用

1. 创建ssh连接

        浏览器访问 http://<服务器IP>
        用刚才创建的 superuser 登录。

点击添加,添加成功后如下:

点击IP进入

2. 添加存放镜像的存储池

点击下图按钮,进行创建

这里我们将iso上传对应路径,ISO文件权限要给到777

创建完成后,可以看到下图信息

点击进入界面后即可看到iso信息

3. 创建KVM的磁盘存储池

点击下图按钮,进行创建

创建完成后,即可看到下图信息。

点击,进入即可看到如下信息。

4. 为kvm准备磁盘文件

按照顺序1,点击添加镜像,在顺序2输入信息,点击创建后,即可在顺序3看到创建的信息。

5. 创建kvm的网络【若不单独创建默认为NAT模式】

对应前面配置br0网桥设置,如果使用的别的名称,则需要再次配置网桥,如果不配置网桥则报错无法启动虚拟机

6.创建KVM

点击

设置参数:

选择刚刚创建的磁盘和网络

7. 开启虚拟机并安装

根据下图操作,点击连接,需要按钮变成已断开

点击启动

进入控制台查看

8.添加新硬盘

需将虚拟机关机,然后编辑xml文件(如下图),添加如下代码(需将中文注释删掉)

<disk type='file' device='disk'><driver name='qemu' type='qcow2' cache='none'/>       ---添加改行代码找到新增磁盘格式<source file='/home/kvm/teststorage/entd01.img'/>     --指定新增磁盘路径<target dev='vda' bus='virtio'/>                      --指定磁盘设备名称,和传输总线类型
</disk>

9.设置内存

因为WebVirtMgr 前端限制原因,内存最大只能选择16G,如果需要创建大于16G的机器,就需要修改xml文件。

如下图,将想要的内存换算成kb,然后在<memory unit='KiB'>16777216</memory> 填写即可(需要关机)

10.注意事项

1. 因为WebVirtMgr 前端限制原因,默认CPU数量要设置成1,否则会出现Guest has not initialized the display (yet)的错误(如下图)

需要设置最大CPU数量为需要的,然后当前CPU数量为1(如图)。

这样设置完成后,就不会出现Guest has not initialized the display (yet)了。

在WebVirtMgr服务器,执行命令,在线热插到目标核数(mi04为你的服务器名称,4为你想要的目标核数)

virsh setvcpus mini01 8 --live
http://www.dtcms.com/a/389062.html

相关文章:

  • Python实现在模型上进行点云(下)采样
  • Vue 原理三大子系统:编译时、响应式与运行时
  • 黑马SpringCloud02
  • Windows安装Kafka(kafka_2.12-3.9.1),配置Kafka,以及遇到的问题解决方案
  • Kafka 硬件与操作系统选型与调优实战
  • ActiveMQ面试
  • ActiveMQ 系统知识全解析
  • 智慧园区:科技赋能城市单元,重塑未来运营新生态
  • 2025年9月17日学习笔记——模式识别与机器学习第11章——非监督学习与聚类
  • arcgispro基于森林的分类与回归 (空间统计)
  • npm run serve 和 npm run dev的区别
  • 2025 局域网内多台服务器时间统一,最稳定且无需联网的方案是部署 NTP 离线服务器部署chrony 轻量且兼容性强,支持纯离线环境
  • 机器学习如何改变AI?
  • rook-ceph的dashboard配置覆盖与生效
  • 在 macOS 上安装 Claude Code 的完整指南
  • RocketMQ Dashboard 消息重复问题排查与修复(rocketmq-dashboard-2.0.0-source-release)
  • 卓伊凡的第一款独立游戏-详细介绍游戏开发引擎unity-以及详细介绍windows和mac的安装步骤【01】
  • 多表联合查询
  • Day26_【深度学习(6)_神经网络NN(1中)激活函数_softmax详解篇】
  • 黑盒测试:测试用例设计之等价类设计方法(等价类划分:Equivalence Partitioning)有效等价类、无效等价类、边界值分析
  • 22 C++11 初始化新姿势:{} 统一初始化(省等号)+initializer_list 底层解析
  • 黑马头条_SpringCloud项目阶段二:FreeMarker组件以及MinIO系统集成
  • MySQL 数据库基础操作指南:从创建管理到备份恢复全解析
  • 【Java】-- rjvm 项目分析
  • Markdown 常用语法参考
  • 11.2.3 固定话题聊天实现
  • CAN(控制器局域网)工业协议教学文档(一)
  • PHP基础-变量与常量(第八天)
  • SQ01,SQ02,SQ03,SE93事务码配置
  • AI提示词Excel 表格提取数据准确度处理