| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #!/usr/bin/env bash
- set -euo pipefail
- ROOT_DIR="/home/admin/.openclaw/workspace/AiDOP"
- LOG_DIR="/tmp/aidop"
- PID_DIR="$LOG_DIR/pids"
- BACKEND_GUARD="$ROOT_DIR/scripts/run-backend-guard.sh"
- FRONTEND_GUARD="$ROOT_DIR/scripts/run-frontend-guard.sh"
- BACKEND_GUARD_PID_FILE="$PID_DIR/backend-guard.pid"
- FRONTEND_GUARD_PID_FILE="$PID_DIR/frontend-guard.pid"
- mkdir -p "$LOG_DIR" "$PID_DIR"
- is_pid_alive() {
- local pid="$1"
- kill -0 "$pid" 2>/dev/null
- }
- start_guard() {
- local guard_script="$1"
- local pid_file="$2"
- local name="$3"
- if [ -f "$pid_file" ]; then
- local existing_pid
- existing_pid="$(cat "$pid_file" 2>/dev/null || true)"
- if [ -n "$existing_pid" ] && is_pid_alive "$existing_pid"; then
- echo "✅ ${name}守护已运行 (PID: $existing_pid)"
- return
- fi
- fi
- nohup "$guard_script" > "$LOG_DIR/${name}-guard.log" 2>&1 &
- local new_pid=$!
- echo "$new_pid" > "$pid_file"
- sleep 1
- if is_pid_alive "$new_pid"; then
- echo "✅ ${name}守护已启动 (PID: $new_pid)"
- else
- echo "❌ ${name}守护启动失败"
- exit 1
- fi
- }
- wait_http_200() {
- local url="$1"
- local retries="$2"
- local interval="$3"
- local i
- for ((i = 1; i <= retries; i++)); do
- if curl -s -o /dev/null -w "%{http_code}" "$url" | awk '{ exit !($1 >= 200 && $1 < 400) }'; then
- return 0
- fi
- sleep "$interval"
- done
- return 1
- }
- echo "=========================================="
- echo " AiDOP - 数字化运营平台 - 启动脚本"
- echo "=========================================="
- chmod +x "$BACKEND_GUARD" "$FRONTEND_GUARD"
- echo "🚀 启动后端守护..."
- start_guard "$BACKEND_GUARD" "$BACKEND_GUARD_PID_FILE" "backend"
- echo "🎨 启动前端守护..."
- start_guard "$FRONTEND_GUARD" "$FRONTEND_GUARD_PID_FILE" "frontend"
- echo "🔎 健康检查中..."
- if wait_http_200 "http://127.0.0.1:5001/health" 40 1; then
- echo "✅ 后端健康检查通过: http://127.0.0.1:5001/health"
- else
- echo "❌ 后端健康检查失败,请查看: $LOG_DIR/backend.log"
- exit 1
- fi
- if wait_http_200 "http://127.0.0.1:5174" 40 1; then
- echo "✅ 前端健康检查通过: http://127.0.0.1:5174"
- else
- echo "❌ 前端健康检查失败,请查看: $LOG_DIR/frontend.log"
- exit 1
- fi
- echo ""
- echo "=========================================="
- echo " ✅ AiDOP 系统启动完成(含守护自动拉起)"
- echo "=========================================="
- echo " 🌐 前端地址: http://127.0.0.1:5174"
- echo " 🔧 后端地址: http://127.0.0.1:5001"
- echo " 🩺 健康检查: http://127.0.0.1:5001/health"
- echo " 📄 前端日志: $LOG_DIR/frontend.log"
- echo " 📄 后端日志: $LOG_DIR/backend.log"
- echo ""
|