| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #!/bin/bash
- # 游铛铛管理端后端启动脚本
- # 设置脚本遇到错误时退出
- set -e
- # 颜色输出
- RED='\033[0;31m'
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- NC='\033[0m' # No Color
- echo -e "${GREEN}游铛铛管理端后端启动脚本${NC}"
- # 检查Python是否安装
- if ! command -v python3 &> /dev/null; then
- echo -e "${RED}错误:未找到Python3,请先安装Python3${NC}"
- exit 1
- fi
- # 检查是否在backend-admin目录
- if [ ! -f "app/main.py" ]; then
- echo -e "${RED}错误:请在backend-admin目录下运行此脚本${NC}"
- exit 1
- fi
- # 优先使用项目虚拟环境,避免与全局 Anaconda 包版本冲突
- if [ -d "venv/bin" ]; then
- VENV_DIR="venv"
- elif [ -d ".venv/bin" ]; then
- VENV_DIR=".venv"
- else
- echo -e "${YELLOW}警告:未找到虚拟环境,将使用系统 Python(可能与 Starlette/FastAPI 版本不兼容)${NC}"
- echo -e "${YELLOW}建议先运行:python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt${NC}"
- VENV_DIR=""
- fi
- if [ -n "$VENV_DIR" ]; then
- PYTHON_BIN="$VENV_DIR/bin/python"
- UVICORN_BIN="$VENV_DIR/bin/uvicorn"
- else
- PYTHON_BIN="python3"
- UVICORN_BIN="uvicorn"
- fi
- # 解析命令行参数
- MODE="dev"
- if [ "$1" = "prod" ] || [ "$1" = "production" ]; then
- MODE="prod"
- elif [ "$1" = "dev" ] || [ "$1" = "development" ]; then
- MODE="dev"
- fi
- echo -e "${GREEN}启动模式:$MODE${NC}"
- if [ "$MODE" = "dev" ]; then
- echo -e "${GREEN}启动管理端开发服务器...${NC}"
- echo -e "${YELLOW}API文档:http://localhost:9999/docs${NC}"
- "$UVICORN_BIN" app.main:app --reload --host 0.0.0.0 --port 9999
- else
- echo -e "${GREEN}启动管理端生产服务器...${NC}"
- echo -e "${YELLOW}API文档:http://localhost:9999/docs${NC}"
- "$UVICORN_BIN" app.main:app --host 0.0.0.0 --port 9999 --workers 4
- fi
|