deploy.sh 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/bin/bash
  2. # ============================================
  3. # Forge Admin 一键部署脚本(空服务器专用)
  4. # 适用系统: CentOS 7/8 / Anolis OS / RHEL
  5. # 使用方法: 复制全部内容粘贴到服务器终端执行
  6. # ============================================
  7. set -e
  8. echo "=========================================="
  9. echo " Forge Admin 一键部署 - 开始"
  10. echo "=========================================="
  11. # ========================
  12. # 1. 创建 2G Swap 防 OOM
  13. # ========================
  14. echo "[1/6] 创建 Swap 分区..."
  15. if [ ! -f /swapfile ]; then
  16. sudo fallocate -l 2G /swapfile
  17. sudo chmod 600 /swapfile
  18. sudo mkswap /swapfile
  19. sudo swapon /swapfile
  20. echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  21. echo " ✓ Swap 创建成功"
  22. else
  23. echo " ✓ Swap 已存在,跳过"
  24. fi
  25. free -h | grep Swap
  26. # ========================
  27. # 2. 安装 Docker
  28. # ========================
  29. echo "[2/6] 安装 Docker..."
  30. if command -v docker &> /dev/null; then
  31. echo " ✓ Docker 已安装: $(docker --version)"
  32. else
  33. sudo yum install -y yum-utils
  34. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  35. sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
  36. sudo systemctl start docker
  37. sudo systemctl enable docker
  38. echo " ✓ Docker 安装完成: $(docker --version)"
  39. fi
  40. # ========================
  41. # 3. 安装 Git
  42. # ========================
  43. echo "[3/6] 安装 Git..."
  44. if command -v git &> /dev/null; then
  45. echo " ✓ Git 已安装: $(git --version)"
  46. else
  47. sudo yum install -y git
  48. echo " ✓ Git 安装完成"
  49. fi
  50. # ========================
  51. # 4. 克隆代码到 /mnt/project
  52. # ========================
  53. echo "[4/6] 克隆项目代码到 /mnt/project..."
  54. sudo mkdir -p /mnt/project
  55. cd /mnt/project
  56. if [ -d "forge_admin" ]; then
  57. echo " ✓ 项目目录已存在,检查是否为 git 仓库..."
  58. cd forge_admin
  59. if [ -d ".git" ]; then
  60. echo " ✓ 是 git 仓库,执行 git pull 更新..."
  61. git pull
  62. else
  63. echo " ✗ 不是 git 仓库,删除后重新克隆..."
  64. cd /mnt/project
  65. rm -rf forge_admin
  66. git clone http://3081089em4.wicp.vip/user5/forge_admin.git
  67. cd forge_admin
  68. echo " ✓ 代码克隆完成"
  69. fi
  70. else
  71. git clone http://3081089em4.wicp.vip/user5/forge_admin.git
  72. cd forge_admin
  73. echo " ✓ 代码克隆完成"
  74. fi
  75. # ========================
  76. # 5. 配置环境变量
  77. # ========================
  78. echo "[5/6] 配置环境变量..."
  79. cd /mnt/project/forge_admin/docker
  80. if [ ! -f .env ]; then
  81. cp .env.example .env
  82. echo " ✓ .env 已创建(使用默认配置)"
  83. else
  84. echo " ✓ .env 已存在,跳过"
  85. fi
  86. # ========================
  87. # 6. 构建并启动
  88. # ========================
  89. echo "[6/6] 构建并启动服务(首次构建约 15-20 分钟,请耐心等待)..."
  90. docker compose up -d --build
  91. echo ""
  92. echo "=========================================="
  93. echo " 部署完成!"
  94. echo "=========================================="
  95. echo ""
  96. echo "查看服务状态: docker compose ps"
  97. echo "查看启动日志: docker compose logs -f"
  98. echo ""
  99. echo "访问地址: http://$(curl -s ifconfig.me)/forge"
  100. echo "账号: admin"
  101. echo "密码: 123456"
  102. echo ""
  103. echo "⚠️ 确保阿里云安全组已放行 80 端口"
  104. echo "=========================================="