start.sh 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. ROOT_DIR="/home/admin/.openclaw/workspace/AiDOP"
  4. LOG_DIR="/tmp/aidop"
  5. PID_DIR="$LOG_DIR/pids"
  6. BACKEND_GUARD="$ROOT_DIR/scripts/run-backend-guard.sh"
  7. FRONTEND_GUARD="$ROOT_DIR/scripts/run-frontend-guard.sh"
  8. BACKEND_GUARD_PID_FILE="$PID_DIR/backend-guard.pid"
  9. FRONTEND_GUARD_PID_FILE="$PID_DIR/frontend-guard.pid"
  10. mkdir -p "$LOG_DIR" "$PID_DIR"
  11. is_pid_alive() {
  12. local pid="$1"
  13. kill -0 "$pid" 2>/dev/null
  14. }
  15. start_guard() {
  16. local guard_script="$1"
  17. local pid_file="$2"
  18. local name="$3"
  19. if [ -f "$pid_file" ]; then
  20. local existing_pid
  21. existing_pid="$(cat "$pid_file" 2>/dev/null || true)"
  22. if [ -n "$existing_pid" ] && is_pid_alive "$existing_pid"; then
  23. echo "✅ ${name}守护已运行 (PID: $existing_pid)"
  24. return
  25. fi
  26. fi
  27. nohup "$guard_script" > "$LOG_DIR/${name}-guard.log" 2>&1 &
  28. local new_pid=$!
  29. echo "$new_pid" > "$pid_file"
  30. sleep 1
  31. if is_pid_alive "$new_pid"; then
  32. echo "✅ ${name}守护已启动 (PID: $new_pid)"
  33. else
  34. echo "❌ ${name}守护启动失败"
  35. exit 1
  36. fi
  37. }
  38. wait_http_200() {
  39. local url="$1"
  40. local retries="$2"
  41. local interval="$3"
  42. local i
  43. for ((i = 1; i <= retries; i++)); do
  44. if curl -s -o /dev/null -w "%{http_code}" "$url" | awk '{ exit !($1 >= 200 && $1 < 400) }'; then
  45. return 0
  46. fi
  47. sleep "$interval"
  48. done
  49. return 1
  50. }
  51. echo "=========================================="
  52. echo " AiDOP - 数字化运营平台 - 启动脚本"
  53. echo "=========================================="
  54. chmod +x "$BACKEND_GUARD" "$FRONTEND_GUARD"
  55. echo "🚀 启动后端守护..."
  56. start_guard "$BACKEND_GUARD" "$BACKEND_GUARD_PID_FILE" "backend"
  57. echo "🎨 启动前端守护..."
  58. start_guard "$FRONTEND_GUARD" "$FRONTEND_GUARD_PID_FILE" "frontend"
  59. echo "🔎 健康检查中..."
  60. if wait_http_200 "http://127.0.0.1:5001/health" 40 1; then
  61. echo "✅ 后端健康检查通过: http://127.0.0.1:5001/health"
  62. else
  63. echo "❌ 后端健康检查失败,请查看: $LOG_DIR/backend.log"
  64. exit 1
  65. fi
  66. if wait_http_200 "http://127.0.0.1:5174" 40 1; then
  67. echo "✅ 前端健康检查通过: http://127.0.0.1:5174"
  68. else
  69. echo "❌ 前端健康检查失败,请查看: $LOG_DIR/frontend.log"
  70. exit 1
  71. fi
  72. echo ""
  73. echo "=========================================="
  74. echo " ✅ AiDOP 系统启动完成(含守护自动拉起)"
  75. echo "=========================================="
  76. echo " 🌐 前端地址: http://127.0.0.1:5174"
  77. echo " 🔧 后端地址: http://127.0.0.1:5001"
  78. echo " 🩺 健康检查: http://127.0.0.1:5001/health"
  79. echo " 📄 前端日志: $LOG_DIR/frontend.log"
  80. echo " 📄 后端日志: $LOG_DIR/backend.log"
  81. echo ""