From 59711ff8cdf84602760556f105bd11c4fa34886a Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 13 May 2026 12:27:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=B8=80=E9=94=AE?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/install.sh | 103 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100755 backend/install.sh diff --git a/backend/install.sh b/backend/install.sh new file mode 100755 index 0000000..29cef48 --- /dev/null +++ b/backend/install.sh @@ -0,0 +1,103 @@ +#!/bin/bash +# KVM Manager 一键安装脚本 +set -e + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +echo -e "${GREEN}======================================" +echo -e " KVM Manager 一键安装脚本" +echo -e "======================================${NC}\n" + +# 检测是否为 root +if [[ $EUID -ne 0 ]]; then + echo -e "${RED}[错误] 请使用 root 用户运行此脚本${NC}" + echo -e "${YELLOW}提示: sudo bash $0${NC}" + exit 1 +fi + +# 检测操作系统 +if [[ -f /etc/debian_version ]]; then + echo -e "${GREEN}[检测] Debian/Ubuntu 系统${NC}" + PKG_MANAGER="apt-get" +elif [[ -f /etc/redhat-release ]]; then + echo -e "${GREEN}[检测] RedHat/CentOS 系统${NC}" + PKG_MANAGER="yum" +elif [[ -f /etc/arch-release ]]; then + echo -e "${GREEN}[检测] Arch Linux 系统${NC}" + PKG_MANAGER="pacman" +else + echo -e "${RED}[错误] 不支持的操作系统${NC}" + exit 1 +fi + +# 获取脚本所在目录 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BACKEND_DIR="$SCRIPT_DIR" + +echo -e "${YELLOW}[1/4] 安装系统依赖...${NC}" +if [[ "$PKG_MANAGER" == "apt-get" ]]; then + apt-get update + apt-get install -y libvirt-dev pkg-config python3-dev python3-venv +elif [[ "$PKG_MANAGER" == "yum" ]]; then + yum install -y libvirt-devel pkg-config python3-devel python3-pip +elif [[ "$PKG_MANAGER" == "pacman" ]]; then + pacman -Sy --noconfirm libvirt python python-pip +fi + +# 检查 libvirtd 是否运行 +echo -e "${YELLOW}[2/4] 检查 libvirtd 服务...${NC}" +if systemctl is-active --quiet libvirtd; then + echo -e "${GREEN} ✓ libvirtd 运行中${NC}" +else + echo -e "${YELLOW} 启动 libvirtd...${NC}" + systemctl start libvirtd + systemctl enable libvirtd +fi + +# 创建/重建虚拟环境 +echo -e "${YELLOW}[3/4] 配置 Python 虚拟环境...${NC}" +cd "$BACKEND_DIR" + +if [[ -d "venv" ]]; then + echo -e " 删除旧 venv..." + rm -rf venv +fi + +python3 -m venv venv +source venv/bin/activate + +# 升级 pip +echo -e " 升级 pip..." +pip install --upgrade pip + +# 安装 Python 依赖 +echo -e " 安装 Python 依赖..." +pip install -r requirements.txt + +# 验证 libvirt 模块 +echo -e "${YELLOW}[4/4] 验证安装...${NC}" +python -c " +import libvirt +print(f' ✓ libvirt 模块加载成功, 版本: {libvirt.getVersion() // 1000000}') +" || { + echo -e "${RED}[错误] libvirt 模块验证失败${NC}" + exit 1 +} + +echo "" +echo -e "${GREEN}======================================" +echo -e " 安装完成!" +echo -e "======================================${NC}" +echo "" +echo -e "${YELLOW}启动服务:${NC}" +echo -e " cd $BACKEND_DIR" +echo -e " source venv/bin/activate" +echo -e " python -m uvicorn app.main:app --host 0.0.0.0 --port 8004" +echo "" +echo -e "${YELLOW}或使用后台运行:${NC}" +echo -e " nohup python -m uvicorn app.main:app --host 0.0.0.0 --port 8004 > app.log 2>&1 &" +echo ""