123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #!/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
|