#!/bin/bash # start_api_background.sh - 后台启动迁移后的 backend API 服务 set -e VENV_DIR=".venv" BACKEND_PATH="$PWD/backend" mkdir -p logs PID_FILE=logs/api.pid LOG_FILE=logs/api.log echo "========================================" echo "后台启动 AI+合规智能中枢 API 服务" echo "========================================" echo "" if [ ! -d "$VENV_DIR" ]; then echo "错误: 虚拟环境不存在,请先运行 ./quick_start.sh" exit 1 fi if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") if ps -p "$PID" > /dev/null 2>&1; then echo "服务已在运行 (PID: $PID)" echo "如需重启,请先运行: ./stop_api.sh" exit 1 else rm -f "$PID_FILE" fi fi HOST=${API_HOST:-0.0.0.0} PORT=${API_PORT:-8000} echo "服务地址: http://$HOST:$PORT" echo "日志文件: $LOG_FILE" echo "" echo "正在后台启动..." PYTHONPATH="$BACKEND_PATH${PYTHONPATH:+:$PYTHONPATH}" \ nohup "$VENV_DIR/bin/python" -m uvicorn app.main:app --host "$HOST" --port "$PORT" > "$LOG_FILE" 2>&1 & PID=$! echo "$PID" > "$PID_FILE" sleep 3 if ps -p "$PID" > /dev/null 2>&1; then echo "服务启动成功 (PID: $PID)" echo "" echo "API地址: http://$HOST:$PORT" echo "API文档: http://$HOST:$PORT/docs" echo "健康检查: http://$HOST:$PORT/health" echo "" echo "查看日志:" echo " tail -f $LOG_FILE" echo "" echo "停止服务:" echo " ./stop_api.sh" else echo "服务启动失败,请查看日志: $LOG_FILE" rm -f "$PID_FILE" exit 1 fi