install.sh 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #!/bin/bash
  2. # KVM Manager 后端一键安装脚本 (仅后端)
  3. set -e
  4. RED='\033[0;31m'
  5. GREEN='\033[0;32m'
  6. YELLOW='\033[1;33m'
  7. NC='\033[0m'
  8. echo -e "${GREEN}======================================"
  9. echo -e " KVM Manager 后端一键安装"
  10. echo -e "======================================${NC}\n"
  11. if [[ $EUID -ne 0 ]]; then
  12. echo -e "${RED}[错误] 请使用 root 用户运行此脚本${NC}"
  13. echo -e "${YELLOW}提示: sudo bash $0${NC}"
  14. exit 1
  15. fi
  16. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  17. if [[ -f /etc/debian_version ]]; then
  18. PKG_MANAGER="apt-get"
  19. elif [[ -f /etc/redhat-release ]]; then
  20. PKG_MANAGER="yum"
  21. elif [[ -f /etc/arch-release ]]; then
  22. PKG_MANAGER="pacman"
  23. else
  24. echo -e "${RED}[错误] 不支持的操作系统${NC}"
  25. exit 1
  26. fi
  27. echo -e "${YELLOW}[1/4] 安装系统依赖...${NC}"
  28. if [[ "$PKG_MANAGER" == "apt-get" ]]; then
  29. apt-get update
  30. apt-get install -y libvirt-dev pkg-config python3-dev python3-venv
  31. elif [[ "$PKG_MANAGER" == "yum" ]]; then
  32. yum install -y libvirt-devel pkg-config python3-devel python3-pip
  33. elif [[ "$PKG_MANAGER" == "pacman" ]]; then
  34. pacman -Sy --noconfirm libvirt python python-pip
  35. fi
  36. echo -e "${YELLOW}[2/4] 检查 libvirtd 服务...${NC}"
  37. if systemctl is-active --quiet libvirtd; then
  38. echo -e "${GREEN} ✓ libvirtd 运行中${NC}"
  39. else
  40. echo -e "${YELLOW} 启动 libvirtd...${NC}"
  41. systemctl start libvirtd
  42. systemctl enable libvirtd
  43. fi
  44. echo -e "${YELLOW}[3/4] 配置 Python 环境...${NC}"
  45. cd "$SCRIPT_DIR"
  46. if [[ -d "venv" ]]; then
  47. echo -e " 删除旧 venv..."
  48. rm -rf venv
  49. fi
  50. python3 -m venv venv
  51. source venv/bin/activate
  52. pip install --upgrade pip
  53. pip install -r requirements.txt
  54. echo -e "${YELLOW}[4/4] 验证安装...${NC}"
  55. python -c "
  56. import libvirt
  57. print(f' ✓ libvirt 模块加载成功, 版本: {libvirt.getVersion() // 1000000}')
  58. " || {
  59. echo -e "${RED}[错误] libvirt 模块验证失败${NC}"
  60. exit 1
  61. }
  62. echo ""
  63. echo -e "${GREEN}======================================"
  64. echo -e " 安装完成!"
  65. echo -e "======================================${NC}"
  66. echo ""
  67. echo -e "${YELLOW}启动服务:${NC}"
  68. echo -e " cd $SCRIPT_DIR"
  69. echo -e " source venv/bin/activate"
  70. echo -e " python -m uvicorn app.main:app --host 0.0.0.0 --port 8004"
  71. echo ""
  72. echo -e "${YELLOW}后台运行:${NC}"
  73. echo -e " nohup python -m uvicorn app.main:app --host 0.0.0.0 --port 8004 > app.log 2>&1 &"
  74. echo ""