大数跨境
0
0

FastAPI 入门教程 #17:FastAPI 项目部署与上线

FastAPI 入门教程 #17:FastAPI 项目部署与上线 人人都懂物联网
2025-06-29
0
导读:将 FastAPI 项目部署上线需要几个关键步骤:准备 Python 环境、使用 Gunicorn 运行项目、配置 Nginx 反向代理、启用 HTTPS。

 

 

开发完成后,将 FastAPI 项目部署到服务器并对外提供服务是最后一步。本文将介绍几种常见的部署方式,包括使用 Uvicorn + Gunicorn 部署到 Linux 服务器、配置 Nginx 反向代理 以及启用 HTTPS(SSL)证书。你将学会如何将本地开发好的项目稳定、安全地上线运行。

部署准备

在部署前,请确保你已经完成以下准备:

  • • 项目已通过本地测试,结构清晰;
  • • 拥有一台可用的 Linux 服务器(推荐 Ubuntu 20.04+);
  • • 已设置好 Python 虚拟环境;
  • • 已具备域名和 SSL 证书(建议使用免费的 Let's Encrypt)。

安装部署依赖

sudo apt update
sudo apt install python3-pip python3-venv nginx -y

在你的项目根目录创建虚拟环境并安装依赖:

python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install fastapi uvicorn[standard] gunicorn

创建 Gunicorn 启动脚本

新建文件 start.sh(可放在根目录):

#!/bin/bash
source venv/bin/activate
exec gunicorn main:app \
    --workers 4 \
    --worker-class uvicorn.workers.UvicornWorker \
    --bind 127.0.0.1:8000

给脚本执行权限:

chmod +x start.sh

你也可以使用 systemd 创建服务,确保项目随系统启动。

配置 Nginx 反向代理

编辑 Nginx 配置(路径可能为 /etc/nginx/sites-available/your-site.conf):

server {
    listen 80;
    server_name yourdomain.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;
    }
}

启用配置:

sudo ln -s /etc/nginx/sites-available/your-site.conf /etc/nginx/sites-enabled/
sudo nginx -t  # 检查语法
sudo systemctl restart nginx

启用 HTTPS(推荐)

启用 HTTPS 有很多好处,包括提高安全性、保护用户隐私、避免中间人攻击,以及提高 SEO 排名等。现代浏览器强烈要求启用 HTTPS,否则网站会被标记为“不安全”。因此建议你的网站也要启用 HTTPS。

但是启用 HTTPS 需要提前申请一张 SSL 证书,推荐使用 Certbot 工具进行 SSL 证书配置和管理。它可以帮你完成以下事情:

  • • 向 Let's Encrypt 申请一个免费的 SSL 证书;
  • • 自动配置你的 Nginx(或 Apache)服务器启用 HTTPS;
  • • 自动续期,防止证书过期(默认 90 天有效)。

具体操作流程如下:

  • • 安装 Certbot:
    sudo apt install certbot python3-certbot-nginx -y
  • • 申请证书并自动配置 HTTPS:
    sudo certbot --nginx
  • • 设置自动续期:
    sudo certbot --nginx

配置过程中,系统会提示你选择域名(已配置到服务器的),并自动修改 Nginx 配置文件。Certbot 配置后的文件位置如下表所示。

类型
路径示例
证书文件(.pem)
/etc/letsencrypt/live/yourdomain.com/fullchain.pem
私钥文件
/etc/letsencrypt/live/yourdomain.com/privkey.pem
Nginx 配置(自动改写)
/etc/nginx/sites-available/yourdomain.com.conf
  • • Certbot 是一个由 EFF(电子前哨基金会)开发的开源工具,用于自动申请和安装 Let's Encrypt 免费 SSL 证书
  • • Let's Encrypt 是一个由非营利组织 ISRG 发起的 免费 SSL 证书颁发机构,目前已被主流浏览器和操作系统广泛支持。你可以通过 Certbot 快速申请它的证书,无需付费。

适合独立开发者的部署方式

用途
推荐平台
FastAPI 服务部署
Railway / Render / Fly.io
数据库
PostgreSQL(内置于 Render/Railway),或 MongoDB Atlas(云托管)
前端(可选)
Vercel(React、Next.js 静态站)或 Docusaurus
自定义域名 + HTTPS
Railway、Render、Fly.io 等都支持免费 HTTPS

建议:

  • • 如果你想部署完整项目(后端 + 数据库),首选 Railway 或 Render,界面友好、支持 Git 自动部署、本地调试方便。
  • • 如果你熟悉 Docker 或希望获得更多控制权,可以选择 Fly.io 或 DigitalOcean。
  • • 如果只是学习/原型开发,你也可以从 Replit、Deta Space 开始尝试,免费又简单。
  • • 如果你使用 Vercel 部署前端(如 React),后端 FastAPI 推荐部署在独立平台,然后通过 API 域名连接。

推荐部署方式总结

方式
优点
适用场景
Uvicorn(开发)
轻量、快速
本地测试或调试
Gunicorn + UvicornWorker
稳定、支持多进程
推荐用于生产环境
Nginx + Gunicorn
支持 HTTPS、静态资源
推荐用于正式部署
Docker 部署
可移植性强
多人协作、自动化部署
云平台(如 Vercel、Render)
快速上线
简单项目或 API

小结

将 FastAPI 项目部署上线需要几个关键步骤:准备 Python 环境、使用 Gunicorn 运行项目、配置 Nginx 反向代理、启用 HTTPS。整个过程不复杂,但建议你一步步操作并测试结果,确保服务稳定可靠。完成部署后,你的 API 就可以安全、稳定地向用户提供服务了。

 

 

 

 

 

 

 

 

【声明】内容源于网络
0
0
人人都懂物联网
专注于分享 AIoT 物联网、嵌入式、Web、AI 技术教程、行业资讯,主站 getiot.tech
内容 390
粉丝 0
人人都懂物联网 专注于分享 AIoT 物联网、嵌入式、Web、AI 技术教程、行业资讯,主站 getiot.tech
总阅读49
粉丝0
内容390