start.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #!/bin/bash
  2. # 知识工具服务启动脚本
  3. set -e
  4. # 颜色定义
  5. RED='\033[0;31m'
  6. GREEN='\033[0;32m'
  7. YELLOW='\033[1;33m'
  8. NC='\033[0m' # No Color
  9. # 项目根目录
  10. PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  11. PID_FILE="$PROJECT_DIR/app.pid"
  12. LOG_FILE="$PROJECT_DIR/logs/app.log"
  13. echo -e "${GREEN}启动知识工具服务...${NC}"
  14. # 检查是否已经运行
  15. if [ -f "$PID_FILE" ]; then
  16. PID=$(cat "$PID_FILE")
  17. if ps -p "$PID" > /dev/null 2>&1; then
  18. echo -e "${YELLOW}服务已经在运行中 (PID: $PID)${NC}"
  19. exit 1
  20. else
  21. echo -e "${YELLOW}发现旧的PID文件,正在清理...${NC}"
  22. rm -f "$PID_FILE"
  23. fi
  24. fi
  25. # 创建日志目录
  26. mkdir -p "$PROJECT_DIR/logs"
  27. # 检查环境变量文件
  28. if [ ! -f "$PROJECT_DIR/.env" ]; then
  29. echo -e "${YELLOW}警告: 未找到.env文件,请创建配置文件${NC}"
  30. echo "示例配置:"
  31. echo "OPENAI_API_KEY=your_api_key_here"
  32. echo "HOST=0.0.0.0"
  33. echo "PORT=8000"
  34. echo "DEBUG=True"
  35. fi
  36. # 检查Python依赖
  37. if [ ! -d "$PROJECT_DIR/venv" ]; then
  38. echo -e "${YELLOW}未找到虚拟环境,正在创建...${NC}"
  39. python3 -m venv "$PROJECT_DIR/venv"
  40. fi
  41. # 激活虚拟环境
  42. source "$PROJECT_DIR/venv/bin/activate"
  43. # 安装依赖
  44. echo -e "${GREEN}安装Python依赖...${NC}"
  45. pip install -r requirements.txt
  46. # 启动服务
  47. echo -e "${GREEN}启动服务...${NC}"
  48. nohup python main.py > "$LOG_FILE" 2>&1 &
  49. PID=$!
  50. # 保存PID
  51. echo $PID > "$PID_FILE"
  52. # 等待服务启动
  53. sleep 3
  54. # 检查服务是否启动成功
  55. if ps -p "$PID" > /dev/null 2>&1; then
  56. echo -e "${GREEN}服务启动成功!${NC}"
  57. echo -e "${GREEN}PID: $PID${NC}"
  58. echo -e "${GREEN}日志文件: $LOG_FILE${NC}"
  59. echo -e "${GREEN}API文档: http://localhost:8079/docs${NC}"
  60. echo -e "${GREEN}健康检查: http://localhost:8079/health${NC}"
  61. else
  62. echo -e "${RED}服务启动失败!${NC}"
  63. echo -e "${RED}请检查日志文件: $LOG_FILE${NC}"
  64. rm -f "$PID_FILE"
  65. exit 1
  66. fi