ubuntu24.4LTS+kvm+dify AI架构《一》KVM 安装指南

157 阅读5分钟

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 &