ubuntu24.4LTS+kvm+dify AI架构《一》KVM 安装指南
1.1 kvm搭建安装
1.1.1 虚拟化安装
启用虚拟化支持(BIOS中开启VT-x/AMD-V)
egrep -c '(vmx|svm)' /proc/cpuinfo # 返回>0表示支持
安装依赖
sudo apt update && sudo apt install -y qemu-kvm libvirt-daemon-system
libvirt-clients bridge-utils virtinst virt-manager cpu-checker
验证安装
kvm-ok # 显示"KVM acceleration can be used" sudo systemctl status libvirtd # 确认服务运行
创建桥接网络
配置网络桥接
sudo vim /etc/netplan/01-netcfg.yaml
添加以下内容
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: no
bridges:
br0:
interfaces: [enp3s0]
dhcp4: yes
parameters:
stp: true
forward-delay: 4
应用配置
sudo netplan apply
配置存储池
sudo mkdir -p /var/lib/libvirt/images
sudo chown -R root:libvirt /var/lib/libvirt/images
sudo chmod -R 775 /var/lib/libvirt/images
sudo virsh pool-define-as default dir - - - - "/var/lib/libvirt/images"
sudo virsh pool-build default
sudo virsh pool-start default
sudo virsh pool-autostart default
安装virt-manager(本地GUI管理)
# 安装桌面环境(如无GUI)
sudo apt install -y ubuntu-desktop
# 安装virt-manager
sudo apt install -y virt-manager
# 添加当前用户到libvirt组
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
newgrp libvirt # 刷新组权限
# 启动virt-manager
virt-manager &
安装 WebVirtCloud
1. 安装依赖
sudo apt install -y git python3-pip python3-venv nginx libvirt-dev \
libsasl2-dev libldap2-dev libssl-dev
2. 创建专用用户
sudo useradd -r -s /bin/bash webvirtcloud
sudo usermod -aG libvirt webvirtcloud
sudo usermod -aG kvm webvirtcloud
3. 克隆代码并配置
sudo mkdir -p /srv/webvirtcloud
sudo chown webvirtcloud:webvirtcloud /srv/webvirtcloud
sudo su - webvirtcloud
# 克隆代码
cd /srv
git clone https://github.com/retspen/webvirtcloud.git
cd webvirtcloud
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装依赖
pip install -r /conf/requirements.txt
# 配置环境
cp webvirtcloud/settings.py.template webvirtcloud/settings.py
# 生成密钥
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
vim webvirtcloud/settings.py
将值 写入
# 允许访问的HOST(替换为你的IP/域名)
echo "ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'your-server-ip']" >> webvirtcloud/settings.py
4. 初始化数据库
./manage.py migrate
./manage.py collectstatic
5. 创建管理员账户
bash
./manage.py createsuperuser
# 按提示输入管理员账号信息
6. 配置Gunicorn服务
sudo vim /etc/systemd/system/webvirtcloud.service
[Unit]
Description=WebVirtCloud
After=network.target
[Service]
User=webvirtcloud
Group=webvirtcloud
WorkingDirectory=/srv/webvirtcloud
Environment="PATH=/srv/webvirtcloud/venv/bin"
ExecStart=/srv/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /srv/webvirtcloud/gunicorn.conf.py
Restart=always
[Install]
WantedBy=multi-user.target
7. 配置Nginx
sudo vim /etc/nginx/sites-available/webvirtcloud
server {
listen 80;
server_name your-server-ip-or-domain;
location /static/ {
alias /srv/webvirtcloud/static/;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 允许大文件上传
client_max_body_size 1000M;
}
8. 启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now webvirtcloud
sudo ln -s /etc/nginx/sites-available/webvirtcloud /etc/nginx/sites-enabled/
sudo systemctl restart nginx
9. 配置Libvirt连接
sudo nano /etc/libvirt/libvirtd.conf
ini
unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
auth_unix_ro = "none"
auth_unix_rw = "none"
重启服务-日常可以重启:
sudo systemctl restart libvirtd
访问 http://127.0.0.1:8000
如下处理了 16509端口连接不上问题,批次处理文件。以上安装步骤可能缺少安装文件,请使用此批次处理文件解决内容如下:
#!/bin/bash
# fix_libvirt_port_final.sh
echo "=== 深度修复 Libvirtd 16509 端口监听问题 ==="
# 停止服务
echo "停止 libvirtd 服务..."
sudo systemctl stop libvirtd
# 备份配置
echo "备份配置文件..."
sudo cp /etc/libvirt/libvirtd.conf /etc/libvirt/libvirtd.conf.bak
echo "原始配置已备份至: /etc/libvirt/libvirtd.conf.bak"
# 强制启用 TCP 监听
echo "配置 libvirtd.conf..."
sudo tee /etc/libvirt/libvirtd.conf > /dev/null <<EOF
listen_tcp = 1
listen_tls = 0
listen_addr = "0.0.0.0"
tcp_port = "16509"
auth_tcp = "none"
log_level = 2
log_outputs = "2:file:/var/log/libvirt/libvirtd-debug.log"
mdev_keep = 0
EOF
# 修复 mdevctl 问题
echo "处理 mdevctl 初始化问题..."
sudo mkdir -p /etc/mdevctl.d/
echo 'mdev_defined=0' | sudo tee /etc/mdevctl.d/empty.conf
sudo systemctl restart mdevctl
# 设置启动参数
echo "配置服务启动参数..."
if [ -f /etc/default/libvirtd ]; then
sudo sed -i 's/^libvirtd_opts=.*/libvirtd_opts="--listen --disable-mdev"/' /etc/default/libvirtd
echo "已更新 /etc/default/libvirtd"
else
sudo tee /etc/default/libvirtd <<EOF
# 手动创建默认配置
libvirtd_opts="--listen --disable-mdev"
EOF
echo "已创建 /etc/default/libvirtd"
fi
# 安全清理套接字和运行时文件
echo "安全清理运行时文件..."
sudo find /var/run/libvirt/ -name "*.sock" -delete
sudo find /var/run/libvirt/ -name "*.pid" -delete
sudo rm -f /var/run/libvirt/libvirt-sock
sudo rm -f /var/run/libvirt/libvirt-sock-ro
# 修复目录权限
echo "修复目录权限..."
sudo chown -R root:libvirt /var/run/libvirt
sudo chmod -R 775 /var/run/libvirt
# 启动服务
echo "启动 libvirtd 服务..."
sudo systemctl start libvirtd
# 等待服务初始化
echo "等待服务启动 (8秒)..."
sleep 8
# 验证状态
echo -e "\n=== 服务状态 ==="
SERVICE_STATUS=$(sudo systemctl status libvirtd --no-pager)
echo "$SERVICE_STATUS" | grep "Active:" || {
echo "服务状态获取失败"
}
echo -e "\n=== 端口监听状态 ==="
if sudo ss -tulnp | grep -q ":16509"; then
echo "16509 端口已成功监听!"
sudo ss -tulnp | grep ":16509"
else
echo "16509 端口未监听,尝试替代方案..."
# 手动启动调试模式
echo "启动调试模式..."
sudo systemctl stop libvirtd
sudo nohup /usr/sbin/libvirtd --listen --verbose > /tmp/libvirtd-debug.log 2>&1 &
sleep 5
# 检查调试进程
if pgrep -f "libvirtd --listen"; then
echo "调试模式启动成功,检查端口..."
sudo ss -tulnp | grep ":16509"
else
echo "调试模式启动失败,查看日志: /tmp/libvirtd-debug.log"
fi
fi
echo -e "\n=== 连接测试 ==="
if virsh -c qemu+tcp://127.0.0.1:16509/system nodeinfo; then
echo "连接测试成功!"
else
echo "连接测试失败,查看错误日志:"
sudo tail -n 50 /var/log/libvirt/libvirtd-debug.log
echo -e "\n=== 调试日志建议 ==="
echo "1. 检查 SELinux/AppArmor 状态"
echo "2. 运行: sudo libvirtd --test"
echo "3. 查看完整日志: sudo journalctl -u libvirtd -b --no-pager"
fi
echo -e "\n=== 修复完成 ==="
echo "如果问题仍然存在,请尝试:"
echo "1. 完全重装: sudo apt reinstall libvirt-daemon-system"
echo "2. 系统更新: sudo apt update && sudo apt upgrade"
echo "3. 重启系统: sudo reboot"
9. cockpit 虚拟机-kvm管理
# 更新软件包列表
sudo apt-get update
# 安装 Cockpit 及其虚拟化管理插件
sudo apt-get install cockpit cockpit-machines -y
# 确保服务开机自启并立即启动
sudo systemctl enable --now cockpit.socket
# 如果防火墙开启,需要开放 9090 端口
sudo ufw allow 9090
sudo ufw reload
**安装完成后**,打开您的浏览器,访问:`https://您的服务器IP地址:9090`
日常可以使用如下 远程连接kvm 虚拟机
virt-manager &