Преглед изворни кода

feat: 一键安装脚本支持前端+后端

Hermes Agent пре 1 недеља
родитељ
комит
5962dc3b24
1 измењених фајлова са 151 додато и 0 уклоњено
  1. 151 0
      install.sh

+ 151 - 0
install.sh

@@ -0,0 +1,151 @@
+#!/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
+
+# 获取脚本所在目录
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+BACKEND_DIR="$SCRIPT_DIR/backend"
+FRONTEND_DIR="$SCRIPT_DIR/frontend"
+
+# 检测操作系统
+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
+
+# ============================================================
+# 后端安装
+# ============================================================
+echo -e "${YELLOW}[1/5] 安装后端系统依赖...${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/5] 检查 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/5] 配置后端 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 模块
+python -c "
+import libvirt
+print(f'    ✓ libvirt 模块加载成功, 版本: {libvirt.getVersion() // 1000000}')
+" || {
+    echo -e "${RED}[错误] libvirt 模块验证失败${NC}"
+    exit 1
+}
+
+# ============================================================
+# 前端安装
+# ============================================================
+echo -e "${YELLOW}[4/5] 配置前端...${NC}"
+
+# 检测 node/npm
+if ! command -v node &> /dev/null; then
+    echo -e "    安装 Node.js..."
+    if [[ "$PKG_MANAGER" == "apt-get" ]]; then
+        curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
+        apt-get install -y nodejs
+    elif [[ "$PKG_MANAGER" == "yum" ]]; then
+        curl -fsSL https://rpm.nodesource.com/setup_20.x | bash -
+        yum install -y nodejs
+    fi
+fi
+
+echo -e "    Node.js: $(node -v), npm: $(npm -v)"
+
+cd "$FRONTEND_DIR"
+
+# 安装依赖
+echo -e "    安装 npm 依赖..."
+npm install
+
+# 编译
+echo -e "    编译前端..."
+npm run build
+
+echo -e "${YELLOW}[5/5] 验证前端...${NC}"
+if [[ -d "dist" ]]; then
+    echo -e "${GREEN}    ✓ 前端编译成功, dist/ 已生成${NC}"
+else
+    echo -e "${RED}[错误] 前端编译失败${NC}"
+    exit 1
+fi
+
+echo ""
+echo -e "${GREEN}======================================"
+echo -e "    安装完成!"
+echo -e "======================================${NC}"
+echo ""
+echo -e "${YELLOW}启动后端 (端口 8004):${NC}"
+echo -e "    cd $BACKEND_DIR"
+echo -e "    source venv/bin/activate"
+echo -e "    nohup python -m uvicorn app.main:app --host 0.0.0.0 --port 8004 > app.log 2>&1 &"
+echo ""
+echo -e "${YELLOW}启动前端 (端口 8006):${NC}"
+echo -e "    cd $FRONTEND_DIR"
+echo -e "    nohup python serve.py > serve.log 2>&1 &"
+echo ""
+echo -e "${YELLOW}访问地址:${NC}"
+echo -e "    http://<服务器IP>:8006"
+echo ""
+echo -e "${YELLOW}一键启动全部服务:${NC}"
+echo -e "    cd $BACKEND_DIR && source venv/bin/activate && nohup python -m uvicorn app.main:app --host 0.0.0.0 --port 8004 > app.log 2>&1 &"
+echo -e "    cd $FRONTEND_DIR && nohup python serve.py > serve.log 2>&1 &"
+echo ""