Skip to content

部署 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 nginx

2. 应用配置

创建系统服务文件 /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.target

3. 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 nginx

5. 使用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. 部署注意事项

  1. 确保防火墙开放80/443端口
  2. 生产环境建议使用HTTPS(可通过Let's Encrypt获取免费证书)
  3. 定期备份项目代码和数据
  4. 考虑使用Docker容器化部署以简化环境配置