start.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/bin/bash
  2. # 游铛铛管理端后端启动脚本
  3. # 设置脚本遇到错误时退出
  4. set -e
  5. # 颜色输出
  6. RED='\033[0;31m'
  7. GREEN='\033[0;32m'
  8. YELLOW='\033[1;33m'
  9. NC='\033[0m' # No Color
  10. echo -e "${GREEN}游铛铛管理端后端启动脚本${NC}"
  11. # 检查Python是否安装
  12. if ! command -v python3 &> /dev/null; then
  13. echo -e "${RED}错误:未找到Python3,请先安装Python3${NC}"
  14. exit 1
  15. fi
  16. # 检查是否在backend-admin目录
  17. if [ ! -f "app/main.py" ]; then
  18. echo -e "${RED}错误:请在backend-admin目录下运行此脚本${NC}"
  19. exit 1
  20. fi
  21. # 优先使用项目虚拟环境,避免与全局 Anaconda 包版本冲突
  22. if [ -d "venv/bin" ]; then
  23. VENV_DIR="venv"
  24. elif [ -d ".venv/bin" ]; then
  25. VENV_DIR=".venv"
  26. else
  27. echo -e "${YELLOW}警告:未找到虚拟环境,将使用系统 Python(可能与 Starlette/FastAPI 版本不兼容)${NC}"
  28. echo -e "${YELLOW}建议先运行:python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt${NC}"
  29. VENV_DIR=""
  30. fi
  31. if [ -n "$VENV_DIR" ]; then
  32. PYTHON_BIN="$VENV_DIR/bin/python"
  33. UVICORN_BIN="$VENV_DIR/bin/uvicorn"
  34. else
  35. PYTHON_BIN="python3"
  36. UVICORN_BIN="uvicorn"
  37. fi
  38. # 解析命令行参数
  39. MODE="dev"
  40. if [ "$1" = "prod" ] || [ "$1" = "production" ]; then
  41. MODE="prod"
  42. elif [ "$1" = "dev" ] || [ "$1" = "development" ]; then
  43. MODE="dev"
  44. fi
  45. echo -e "${GREEN}启动模式:$MODE${NC}"
  46. if [ "$MODE" = "dev" ]; then
  47. echo -e "${GREEN}启动管理端开发服务器...${NC}"
  48. echo -e "${YELLOW}API文档:http://localhost:9999/docs${NC}"
  49. "$UVICORN_BIN" app.main:app --reload --host 0.0.0.0 --port 9999
  50. else
  51. echo -e "${GREEN}启动管理端生产服务器...${NC}"
  52. echo -e "${YELLOW}API文档:http://localhost:9999/docs${NC}"
  53. "$UVICORN_BIN" app.main:app --host 0.0.0.0 --port 9999 --workers 4
  54. fi