#!/bin/bash # 知识工具服务启动脚本 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 项目根目录 PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PID_FILE="$PROJECT_DIR/app.pid" LOG_FILE="$PROJECT_DIR/logs/app.log" echo -e "${GREEN}启动知识工具服务...${NC}" # 检查是否已经运行 if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") if ps -p "$PID" > /dev/null 2>&1; then echo -e "${YELLOW}服务已经在运行中 (PID: $PID)${NC}" exit 1 else echo -e "${YELLOW}发现旧的PID文件,正在清理...${NC}" rm -f "$PID_FILE" fi fi # 创建日志目录 mkdir -p "$PROJECT_DIR/logs" # 检查环境变量文件 if [ ! -f "$PROJECT_DIR/.env" ]; then echo -e "${YELLOW}警告: 未找到.env文件,请创建配置文件${NC}" echo "示例配置:" echo "OPENAI_API_KEY=your_api_key_here" echo "HOST=0.0.0.0" echo "PORT=8000" echo "DEBUG=True" fi # 检查Python依赖 if [ ! -d "$PROJECT_DIR/venv" ]; then echo -e "${YELLOW}未找到虚拟环境,正在创建...${NC}" python3 -m venv "$PROJECT_DIR/venv" fi # 激活虚拟环境 source "$PROJECT_DIR/venv/bin/activate" # 生产运行禁用自动重载 export DEBUG=False # 安装依赖 echo -e "${GREEN}安装Python依赖...${NC}" pip install -r requirements.txt # 启动服务 echo -e "${GREEN}启动服务...${NC}" nohup python main.py > "$LOG_FILE" 2>&1 & PID=$! # 保存PID echo $PID > "$PID_FILE" # 等待服务启动 sleep 3 # 检查服务是否启动成功 if ps -p "$PID" > /dev/null 2>&1; then echo -e "${GREEN}服务启动成功!${NC}" echo -e "${GREEN}PID: $PID${NC}" echo -e "${GREEN}日志文件: $LOG_FILE${NC}" echo -e "${GREEN}API文档: http://localhost:8079/docs${NC}" echo -e "${GREEN}健康检查: http://localhost:8079/health${NC}" else echo -e "${RED}服务启动失败!${NC}" echo -e "${RED}请检查日志文件: $LOG_FILE${NC}" rm -f "$PID_FILE" exit 1 fi