如何在服务器 Ubuntu 22.04 上部署 FastAPI + Uvicorn + Nginx 生产级 Python Web 服务指南

本文从基础环境准备、部署架构设计、性能调优、安全配置到监控指标采集,全流程讲解如何在 Ubuntu 22.04 服务器 上构建一个可用于生产环境的 FastAPI + Uvicorn + Nginx Python Web 服务平台。A5数据重点聚焦实战细节、系统参数配置、性能评测与问题排查方法,适合有一定 Linux / 网络 / Python 经验的开发与运维人员阅读。

一、目标架构与适用场景

在生产环境下,单纯使用 Uvicorn 监听外部请求存在性能和安全风险,因此我们采用如下部署架构:

Internet │ ▼ Nginx (反向代理 + SSL/TLS) │ proxy_pass ▼ Uvicorn Workers (基于 uvloop + Gunicorn 管理) │ FastAPI Application │ PostgreSQL / Redis / 后端微服务 

适用场景包括:

  • 高并发 API 服务
  • 微服务架构中 HTTP 接口部署
  • 需要TLS/HTTPS安全访问的生产环境

二、香港服务器www.a5idc.com硬件与系统建议

项目推荐配置说明
CPU4 核及以上并发请求更稳定
内存8GB 以上Python GC + 缓存空间
磁盘NVMe 150GB 以上快速日志写入
网络公网带宽 100MbpsAPI 对外访问
系统Ubuntu 22.04 LTS最新稳定版
外网访问建议部署具有 DDoS 防护的 BGP 线路服务器,例如 CN2 / 电信直连方案,以降低网络抖动和丢包率。

三、系统初始化与依赖安装

3.1 系统更新

sudoapt update &&sudoapt upgrade -y sudoreboot

3.2 安装 Python 环境与必备工具

# 安装 Python3.10sudoaptinstall -y python3.10 python3.10-venv python3.10-dev python3-pip build-essential # 常用工具sudoaptinstall -y nginx ufw git

3.3 建立虚拟环境

进入应用目录 /opt/fastapi_app

sudomkdir -p /opt/fastapi_app sudochown$USER:$USER /opt/fastapi_app cd /opt/fastapi_app python3.10 -m venv venv source venv/bin/activate 

四、应用代码结构与示例

4.1 最简 FastAPI 项目结构

fastapi_app/ ├── app/ │ ├── main.py │ ├── api/ │ │ └── v1.py ├── requirements.txt └── logging.conf 

4.2 示例代码

app/main.py

from fastapi import FastAPI import uvicorn app = FastAPI(title="示例 FastAPI 服务")@app.get("/health")defhealth_check():return{"status":"OK"}@app.get("/items/{item_id}")defread_item(item_id:int, q:str=None):return{"item_id": item_id,"q": q}

app/api/v1.py

from fastapi import APIRouter router = APIRouter(prefix="/v1")@router.get("/ping")defping():return{"message":"pong"}

requirements.txt

fastapi==0.99.1 uvicorn==0.23.2 gunicorn==20.1.0 

五、使用 Gunicorn 管理 Uvicorn Workers

5.1 Gunicorn + Uvicorn 配置

创建启动脚本 gunicorn_conf.py

import multiprocessing workers = multiprocessing.cpu_count()*2+1 worker_class ="uvicorn.workers.UvicornWorker" bind ="127.0.0.1:8000" timeout =30 keepalive =5# 日志 errorlog ="/opt/fastapi_app/logs/gunicorn.error.log" accesslog ="/opt/fastapi_app/logs/gunicorn.access.log" loglevel ="info"

5.2 启动命令

mkdir -p logs gunicorn app.main:app -c gunicorn_conf.py 

六、Nginx 反向代理配置

6.1 Nginx 配置文件

创建 /etc/nginx/sites-available/fastapi

server { listen 80; server_name example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_pass http://127.0.0.1:8000; } location /static/ { alias /opt/fastapi_app/app/static/; } } 

启用配置:

sudoln -s /etc/nginx/sites-available/fastapi /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx 

七、生产环境 SSL/TLS

使用 Certbot 获取免费 Let’s Encrypt 证书:

sudoaptinstall -y certbot python3-certbot-nginx sudo certbot --nginx -d example.com 

自动续期检查:

sudo systemctl status certbot.timer 

八、防火墙与安全

启用 UFW 并允许必要端口:

sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full'sudo ufw enable

九、日志、监控与性能指标

9.1 日志策略

# 日志目录 /opt/fastapi_app/logs/ # Nginx access log /var/log/nginx/access.log 

可结合 logrotate 做定期清理:

sudonano /etc/logrotate.d/fastapi 

内容示例:

/opt/fastapi_app/logs/*.log { daily rotate 14 compress missingok notifempty copytruncate } 

9.2 监控指标

指标采集方式
CPU 利用率top / htop / vmstat
内存使用free -m
进程状态ps aux
网络延迟MTR / traceroute
99% 响应时间external 接口监控

十、压力测试与性能评测

使用 wrk 压测:

wrk -t4 -c500 -d60s http://example.com/health 
并发连接数平均响应时间(ms)吞吐 (req/s)
10018.55200
30042.74800
50096.33500
结果受网络环境、服务器硬件及应用逻辑影响,上表为参考数据。

十一、故障排查与常见问题

11.1 502 Bad Gateway

检查:

  • Uvicorn/Gunicorn 是否运行
  • Nginx 配置 proxy_pass 是否正确
  • 端口是否被防火墙阻断

11.2 超时

Gunicorn timeout 可适当调大,或优化业务逻辑减少阻塞调用。


十二、后续优化建议

12.1 使用 Supervisor 管理进程

sudoaptinstall supervisor sudonano /etc/supervisor/conf.d/fastapi.conf 

内容:

[program:fastapi] command=/opt/fastapi_app/venv/bin/gunicorn app.main:app -c /opt/fastapi_app/gunicorn_conf.py directory=/opt/fastapi_app autostart=true autorestart=true stderr_logfile=/opt/fastapi_app/logs/fastapi.err.log stdout_logfile=/opt/fastapi_app/logs/fastapi.out.log 

重载:

sudo supervisorctl reread sudo supervisorctl update 

12.2 HTTPS 强制 HSTS

在 Nginx SSL 配置中添加:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; 

结语

通过A5数据的教程,你已经完成了一个基于 Ubuntu 22.04 + FastAPI + Uvicorn + Nginx 的生产级 Python Web 服务部署,涵盖架构设计、配置细节、性能测试、日志监控等关键内容。接下来可根据业务规模,结合 Redis 缓存、PostgreSQL 数据库以及 CI/CD 自动化部署进一步提升系统稳定性与可维护性。

如需更深入的性能调优或结合 Kubernetes / Docker 部署方案,也可以在此基础上拓展讨论。

Read more

Vivado完整license文件获取与配置指南

本文还有配套的精品资源,点击获取 简介:Vivado是由Xilinx开发的FPGA和SoC设计综合工具,支持Verilog、VHDL等硬件描述语言,提供高级综合、仿真、IP集成等功能。本资源包“Vivado_的license文件.zip”包含用于解锁Vivado完整功能的许可证文件。介绍了许可证服务器配置、.lic文件管理、浮动与固定许可证区别、激活流程、更新与诊断等核心内容。适用于FPGA开发者、嵌入式系统工程师及学习者,帮助其合法配置Vivado环境,提升开发效率和项目执行能力。 1. Vivado工具与FPGA开发环境概述 Xilinx Vivado设计套件是面向FPGA和SoC开发的集成化软件平台,广泛应用于通信、工业控制、人工智能、嵌入式视觉等多个高科技领域。其核心功能包括项目创建、综合、实现、仿真、调试及系统级集成,支持从设计输入到硬件验证的全流程开发。 Vivado不仅提供了图形化界面(GUI)便于初学者快速上手,还支持Tcl脚本自动化操作,满足高级用户的大规模工程管理需求。其模块化架构设计使得开发者可以灵活选择所需功能组件,如HLS(高层次综合)、IP In

GTC2026前瞻(二)Agentic AI 与开源模型篇+(三)Physical AI 与机器人篇

GTC2026前瞻(二)Agentic AI 与开源模型篇+(三)Physical AI 与机器人篇

(二)Agentic AI 与开源模型篇 Agentic AI与开源模型:英伟达想定义的,不只是“更聪明的模型”,而是“能持续工作的数字劳动力” 如果说过去两年的大模型竞赛,核心问题还是“谁能生成更像人的答案”,那么到了 GTC 2026,问题已经明显变了。英伟达把 Agentic AI 直接列为大会四大核心主题之一,官方对这一主题的定义也很明确:重点不再是单轮问答,而是让 AI agent 能够推理、规划、检索并执行动作,最终把企业数据转化为可投入生产的“数字劳动力”。这说明,Agentic AI 在英伟达的语境里,已经不是一个前沿概念,而是下一阶段 AI 商业化的主战场。(NVIDIA) 一、GTC 2026真正的变化,是 AI 开始从“会回答”走向“会做事”

低代码AI架构:让灵活智能架构落地更简单(附实战demo)

低代码AI架构:让灵活智能架构落地更简单(附实战demo) 一、引入:当AI落地遇到“开发高墙”,低代码如何成为破局钥匙? 1. 一个真实的痛点故事 某零售企业的工程师小李最近很头疼。公司想做一个实时客户画像系统,需要从APP行为数据中提取用户偏好,预测购买意图,支撑精准推荐。但传统开发流程像一座“高墙”: * 数据准备:需要写Python脚本清洗埋点数据,处理缺失值、异常值,花了1周; * 模型开发:选了LightGBM做分类,调参用了GridSearch,跑了3天,准确率才到75%; * 部署上线:需要用Flask写API, Docker打包,K8s部署,还要对接业务系统,又花了2周; * 迭代优化:业务方要求增加“地域偏好”维度,得重新改数据 pipeline、调模型,又是1周。 最终,整个项目花了近1个月,而业务方想要的“快速试错”变成了“慢工出细活”。小李感叹:“AI不是难在算法,而是难在从实验室到生产环境的落地流程。

汽车雷达在多径存在下的幽灵目标检测——论文阅读

汽车雷达在多径存在下的幽灵目标检测——论文阅读

汽车雷达在多径存在下的幽灵目标检测 D. Sharif, S. Murtala and G. S. Choi, “A Survey of Automotive Radar Misalignment Detection Techniques,” in IEEE Access, vol. 13, pp. 123314-123324, 2025, doi: 10.1109/ACCESS.2025.3584454. 摘要 共置多输入多输出(MIMO)技术已被广泛应用于汽车雷达系统,因为它能够以相对较少的发射和接收天线数量提供精确的角度估计。由于视距目标的发射方向(DOD)和到达方向(DOA)重合,MIMO信号处理允许形成更大的虚拟阵列用于角度查找。然而,多径反射是一个主要的限制因素,雷达信号可能从障碍物反弹,创建DOD不等于DOA的回波。因此,在具有多个散射体的复杂场景中,目标的直接路径可能被其他物体的间接路径破坏,导致不准确的角度估计或产生幽灵目标。