部署 fastapi 项目
Linux + Nginx + nohup
1. 环境准备
bash
# 更新系统包
sudo apt update && sudo apt upgrade -y
# 安装Python及依赖
sudo apt install -y python3 python3-pip python3-venv
# 创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate
# 安装项目依赖
pip install fastapi uvicorn nginx2. 应用配置
创建系统服务文件 /etc/systemd/system/fastapi.service:
ini
[Unit]
Description=FastAPI Application
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/path/to/your/project
ExecStart=/path/to/your/project/.venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000
Restart=always
[Install]
WantedBy=multi-user.target3. Nginx配置
创建Nginx配置文件 /etc/nginx/sites-available/fastapi:
nginx
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}4. 启动服务
bash
# 启用并启动服务
sudo ln -s /etc/nginx/sites-available/fastapi /etc/nginx/sites-enabled/
sudo systemctl daemon-reload
sudo systemctl start fastapi
sudo systemctl enable fastapi
sudo systemctl restart nginx
# 查看服务状态
sudo systemctl status fastapi
sudo systemctl status nginx5. 使用nohup后台运行(备选方案)
bash
# 激活虚拟环境
source .venv/bin/activate
# 后台运行服务
nohup uvicorn main:app --host 0.0.0.0 --port 8000 > fastapi.log 2>&1 &
# 查看进程
ps aux | grep uvicorn
# 停止服务
kill -9 <进程ID>6. 部署注意事项
- 确保防火墙开放80/443端口
- 生产环境建议使用HTTPS(可通过Let's Encrypt获取免费证书)
- 定期备份项目代码和数据
- 考虑使用Docker容器化部署以简化环境配置