deploy.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/bin/bash
  2. set -e
  3. echo "=== Auto-SSL 一键部署脚本 ==="
  4. # 1. 拉取最新代码
  5. echo "1. 拉取最新代码..."
  6. git pull origin 0.01
  7. # 2. 编译后端
  8. echo "2. 编译Go后端..."
  9. cd backend
  10. go build -o autossl .
  11. cd ..
  12. # 3. 编译前端
  13. echo "3. 编译Vue前端..."
  14. cd frontend
  15. npm install --include=dev
  16. npm run build
  17. cd ..
  18. # 4. 部署前端资源...
  19. echo "4. 部署前端资源..."
  20. rm -rf backend/dist
  21. mkdir -p backend/dist
  22. cp -rf frontend/dist/* backend/dist/
  23. # 5. 创建systemd服务
  24. echo "5. 安装systemd服务..."
  25. # 直接生成正确路径的service文件,避免sed替换失败
  26. cat > /tmp/autossl.service << EOF
  27. [Unit]
  28. Description=Auto-SSL 证书管理服务
  29. After=network.target
  30. Wants=network.target
  31. [Service]
  32. Type=simple
  33. User=root
  34. WorkingDirectory=$PWD/backend
  35. Environment="PORT=9090"
  36. Environment="ACME_PORT=8082"
  37. Environment="GIN_MODE=release"
  38. ExecStart=$PWD/backend/autossl
  39. Restart=always
  40. RestartSec=3
  41. StandardOutput=journal+console
  42. StandardError=journal+console
  43. SyslogIdentifier=autossl
  44. [Install]
  45. WantedBy=multi-user.target
  46. EOF
  47. sudo cp /tmp/autossl.service /etc/systemd/system/autossl.service
  48. sudo systemctl daemon-reload
  49. sudo systemctl enable autossl
  50. # 6. 重启服务
  51. echo "6. 重启服务..."
  52. sudo systemctl restart autossl
  53. # 7. 检查状态
  54. sleep 2
  55. echo "7. 检查服务状态..."
  56. if curl -s http://127.0.0.1:9090/api/stats > /dev/null; then
  57. echo "✅ 部署成功!服务运行在 http://0.0.0.0:9090"
  58. echo "📝 日志查看:journalctl -u autossl -f"
  59. else
  60. echo "❌ 部署失败,请检查日志:journalctl -u autossl -n 50"
  61. exit 1
  62. fi