4.8 KiB
4.8 KiB
FastAPI 应用生产部署说明
快速开始
1. 环境要求
- Python 3.10+
- Linux / macOS / Windows
- 20GB 磁盘空间(用于字体和数据)
2. 一键安装和启动
# 首次运行,会自动创建虚拟环境和安装依赖
bash run.sh
3. Docker 部署
# 构建 Docker 镜像
docker build -t lazy-fjh:latest .
# 运行容器
docker run -d \
-p 60201:60201 \
-v $(pwd)/uploads:/opt/lazy_fjh/uploads \
-v $(pwd)/logs:/opt/lazy_fjh/logs \
-e MY_API_KEY=sk-your-key \
lazy-fjh:latest
4. Systemd 部署 (Linux)
# 复制应用到系统目录
sudo cp -r /path/to/lazy_fjh /opt/
# 更新权限
sudo chown -R www-data:www-data /opt/lazy_fjh
# 安装 systemd 服务
sudo cp /opt/lazy_fjh/deploy/systemd/lazy-fjh.service /etc/systemd/system/
# 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable lazy-fjh
sudo systemctl start lazy-fjh
# 检查状态
sudo systemctl status lazy-fjh
5. Gunicorn 部署
# 激活虚拟环境
source .venv/bin/activate
# 使用 gunicorn 启动
gunicorn -c deploy/gunicorn_config.py main:app
字体配置
Linux 用户
首先安装系统字体:
bash deploy/install_fonts.sh
或手动安装:
# Ubuntu/Debian
sudo apt-get install -y fonts-wqy-microhei fonts-noto-cjk-extra
# CentOS/RHEL
sudo yum install -y wqy-microhei
# Arch Linux
sudo pacman -S --noconfirm wqy-microhei ttf-noto-sans-cjk
macOS 用户
brew install --cask font-noto-sans-cjk
Windows 用户
从 https://www.noto-fonts.cn 下载 Noto Sans CJK 并安装
环境变量配置
复制 .env.example 为 .env 并填入实际值:
cp .env.example .env
编辑 .env 文件:
# 环境
ENV=production
DEBUG=False
# 服务器
HOST=0.0.0.0
PORT=60201
# API 密钥 (阿里云千问)
MY_API_KEY=sk-your-api-key-here
MY_API_BASE=https://dashscope.aliyuncs.com/compatible-mode/v1
MY_MODEL=qwen-turbo
文件存储
上传目录
- 默认:
./uploads/ - 配置: 设置
UPLOAD_DIR环境变量
日志目录
- 默认:
./logs/ - 配置: 设置
LOG_DIR环境变量
API 文档
启动应用后访问:
- Swagger UI: http://localhost:60201/docs
- ReDoc: http://localhost:60201/redoc
- OpenAPI: http://localhost:60201/openapi.json
常见问题
1. 字体显示为方块
原因: 系统未安装中文字体
解决:
bash deploy/install_fonts.sh
2. 内存占用过高
原因: 处理大型数据集时内存使用增多
解决:
- 调整
MAX_MEMORY_MB环境变量 - 分批处理数据
- 增加服务器内存
3. 上传文件超时
原因: 文件过大或网络问题
解决:
- 检查
MAX_UPLOAD_SIZE限制 - 增加
ANALYSIS_TIMEOUT值 - 分割大文件
4. 无法访问 API
原因: 防火墙或端口被占用
解决:
# 检查端口占用
sudo lsof -i :60201
# 更改 PORT 环境变量
export PORT=8080
bash run.sh
监控和维护
查看日志
# 实时日志
tail -f logs/app.log
# 访问日志 (Gunicorn)
tail -f logs/access.log
系统资源监控
# 使用 top/htop 监控
htop
# 或在 Python 中
python -c "from modules.linux_adapter import LinuxAdapter; print(LinuxAdapter.get_process_info())"
定期清理
# 清理临时文件(超过 7 天)
find ./temp -type f -mtime +7 -delete
# 清理旧上传文件(超过 30 天)
find ./uploads -type f -mtime +30 -delete
性能优化
1. 启用 Gzip 压缩
已默认启用,减少响应体积
2. 异步处理
使用异步 I/O,支持更多并发连接
3. 内存管理
自动监控和清理内存
4. 并发配置 (Gunicorn)
workers = cpu_count * 2 + 1
worker_connections = 1000
备份和恢复
备份上传的文件
tar -czf backup-uploads-$(date +%Y%m%d).tar.gz uploads/
备份数据库 (如果使用)
# PostgreSQL
pg_dump -U user db_name > backup.sql
更新应用
# 拉取最新代码
git pull origin main
# 重新安装依赖(如有更新)
/home/syy/.local/bin/uv pip install --upgrade -r requirements.txt
# 重启服务
systemctl restart lazy-fjh
安全建议
- API 密钥: 不要在代码中硬编码,使用环境变量
- HTTPS: 在生产环境使用 HTTPS,配置 SSL 证书
- CORS: 根据需要限制 CORS 源
- 速率限制: 考虑添加 API 速率限制
- 认证: 为敏感端点添加身份验证
支持和反馈
如有问题或建议,请提交 issue 或联系技术支持。