| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #!/bin/bash
- # FastAPI 后端开发服务器启动脚本(热重载模式)
- set -e
- # 颜色定义
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- RED='\033[0;31m'
- NC='\033[0m' # No Color
- # 项目根目录
- PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
- BACKEND_DIR="$PROJECT_ROOT/backend"
- LOG_FILE="$HOME/fastapi-dev.log"
- # 端口配置
- PORT=${PORT:-8081}
- HOST=${HOST:-0.0.0.0}
- echo -e "${GREEN}=== FastAPI 开发服务器启动 ===${NC}"
- echo -e "项目目录: ${YELLOW}$PROJECT_ROOT${NC}"
- echo -e "后端目录: ${YELLOW}$BACKEND_DIR${NC}"
- echo -e "监听地址: ${YELLOW}$HOST:$PORT${NC} (内部服务)"
- echo -e "前端访问: ${YELLOW}http://localhost:8080${NC}"
- echo -e "日志文件: ${YELLOW}$LOG_FILE${NC}"
- echo ""
- # 检查 Python 是否安装
- if ! command -v python3 &> /dev/null; then
- echo -e "${RED}错误: 未找到 python3${NC}"
- exit 1
- fi
- # 检查 uvicorn 是否安装
- if ! python3 -c "import uvicorn" 2>/dev/null; then
- echo -e "${YELLOW}警告: 未找到 uvicorn,正在安装...${NC}"
- pip install uvicorn[standard] || {
- echo -e "${RED}错误: uvicorn 安装失败${NC}"
- exit 1
- }
- fi
- # 检查端口是否被占用
- if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
- echo -e "${YELLOW}警告: 端口 $PORT 已被占用${NC}"
- echo -e "正在尝试停止占用端口的进程..."
- lsof -ti:$PORT | xargs kill -9 2>/dev/null || true
- sleep 1
- fi
- # 切换到后端目录
- cd "$BACKEND_DIR"
- # 启动服务器(热重载模式)
- echo -e "${GREEN}启动服务器(热重载模式)...${NC}"
- echo -e "${GREEN}代码修改将自动重启服务${NC}"
- echo ""
- python3 -m uvicorn app_fastapi:app \
- --host $HOST \
- --port $PORT \
- --reload \
- --log-level info \
- > "$LOG_FILE" 2>&1 &
- PID=$!
- echo $PID > "$HOME/fastapi-dev.pid"
- sleep 2
- # 检查服务是否启动成功
- if ps -p $PID > /dev/null; then
- echo -e "${GREEN}✓ 服务启动成功!${NC}"
- echo -e " PID: ${YELLOW}$PID${NC}"
- echo -e " 内网访问: ${YELLOW}http://localhost:$PORT${NC}"
- echo -e " 外网访问: ${YELLOW}https://d8d-ai-vscode-8080-223-240-template-6-group.dev.d8d.fun/${NC}"
- echo ""
- echo -e "${YELLOW}查看日志: tail -f $LOG_FILE${NC}"
- echo -e "${YELLOW}停止服务: kill $PID${NC}"
- echo ""
- echo -e "${GREEN}热重载已启用,修改代码后自动重启${NC}"
- else
- echo -e "${RED}✗ 服务启动失败${NC}"
- echo -e "查看日志: ${YELLOW}cat $LOG_FILE${NC}"
- exit 1
- fi
|