如何在 Ubuntu 22.04 上部署 Django + Gunicorn + Nginx 高性能全栈开发环境?

最近,我们公司接到了一个大客户的需求:为其部署一个全栈开发环境,用于支持日益增长的跨境电商平台,项目的要求很简单却不容忽视——要具备高并发、高吞吐量和稳定的性能。
在考虑了各种选择后,我决定使用 Ubuntu 22.04 LTS 作为操作系统,搭配 Intel Xeon E‑2286G 处理器,配置了 32GB ECC内存 和 1TB NVMe SSD 的香港服务器进行部署。为什么是这个配置?因为这个服务器硬件在性能、稳定性以及高并发支持上都非常合适,同时香港服务器的网络连接也特别适合我们的跨境电商平台,能够为国内外的用户提供更低的访问延迟。
一开始,我并不确定这个配置是否足够,但在深入了解了客户需求后,我意识到这些硬件资源足以支撑包括 Django、Gunicorn 和 Nginx 在内的高效开发环境。于是,A5数据开始了这次实际的部署过程,带着对硬件、性能和调优的全面考虑,我的目标是提供一个稳定且具备可扩展性的系统。
一、产品与硬件参数概览
我们实际部署的服务器规格如下:
| 项目 | 参数 | 说明 |
|---|---|---|
| CPU | Intel Xeon E‑2286G | 8 核 16 线程,基准频率 3.7 GHz,可睿频 5.0 GHz,良好单线程性能与 IPC |
| 内存 | 32 GB DDR4 ECC | ECC 内存减少单点错误,提高稳定性 |
| 存储 | 1 TB NVMe SSD | 企业级 SSD,随机 IOPS 高,写入延迟低 |
| 操作系统 | Ubuntu 22.04 LTS | 长期支持,生态稳定 |
| 带宽 | 1 Gbps 国际出口 | BGP & CN2 优选路线(依供应商配置) |
| 地理位置 | 香港机房 CN2 + BGP 多线 | 对中国大陆/海外访问延迟友好 |
硬件优势:Xeon E‑2286G 的单核睿频非常适合 Django 这类 Python 程序;NVMe SSD 在处理静态/media 大文件与数据库时提升响应能力。
二、操作系统初始化与基础配置
2.1 系统更新与基本工具安装
2.2 创建项目用户
建议不使用 root 管理业务进程:
切换用户:
三、Python 环境与 Django 项目准备
3.1 安装 Python3.10 / venv
Ubuntu 22.04 自带 Python3.10:
建立项目目录:
3.2 安装 Django 与依赖
3.3 创建 Django 项目
3.4 Django 基本配置
编辑 mysite/settings.py:
收集静态资源:
四、Gunicorn 配置与 Systemd 管理
4.1 测试 Gunicorn 启动
Worker 数经验值:(CPU cores × 2) + 1 → 此处共 8 核 16 线程,我们取 4 个 workers 开始测试,后续压测再调。
4.2 Systemd Service
建立:/etc/systemd/system/gunicorn.service
启用 & 启动:
五、Nginx 反向代理与静态文件服务
5.1 安装 Nginx
5.2 建立站点配置
文件:/etc/nginx/sites-available/mysite
启用配置:
六、HTTPS/TLS 加密(Let’s Encrypt)
6.1 安装 Certbot
配置自动续期:
七、性能调优与压力测试
7.1 Gunicorn Worker 类型选择
| Worker 类型 | 适用场景 | 特点 |
|---|---|---|
| sync | 普通请求 | 简单可靠 |
| gevent | 高并发 I/O | 单线程 + 协程 |
| uvicorn.workers.UvicornWorker | ASGI (如 Django Channels) | 异步支持 |
示例启动 gevent:
7.2 UFW 防火墙规则
7.3 压力测试对比表
使用 wrk 进行压测:
| 配置 | RPS (请求/秒) | Avg Latency |
|---|---|---|
| Gunicorn 4 workers + sync | ~1200 | ~120ms |
| Gunicorn 8 workers + sync | ~1850 | ~98ms |
| Gunicorn 8 workers + gevent | ~3200 | ~70ms |
| Nginx 缓存静态 | ~4500 | ~45ms |
说明:在 1 Gbps 香港机房环境下,gevent 可以提升 I/O 并发能力,利用 Nginx 缓存静态资源显著提升综合吞吐。
八、数据库与缓存(可选)
8.1 PostgreSQL 安装
在 Django 配置:
8.2 Redis 缓存服务
Django 配置:
九、安全加固建议
| 安全措施 | 建议实现 | 说明 |
|---|---|---|
| SSH 安全 | 修改端口、禁止 root 登录 | 减少暴力攻击面 |
| Fail2ban | 安装 | 自动阻止恶意登录尝试 |
| HTTPS 强制 | HSTS | 提升传输安全 |
| 文件权限 | 限制 Django 项目文件权限 | 减少误操作风险 |
Example – 禁止 root SSH:
十、日常运维与监控
推荐工具:
-
Prometheus + Grafana:监控 CPU/内存/响应时间
-
ELK / Loki:集中管理 Nginx + Gunicorn 日志
-
UptimeRobot:外部可用性检测
十一、总结与经验
硬件配置:Xeon E‑2286G + 32 GB 内存 + NVMe SSD 的配置对 Django 中大型项目十分快适。
软件栈组合:Nginx 作为前端反向代理 + 静态服务 + HTTPS;Gunicorn 负责 WSGI 应用处理。
性能调优:合理设置 worker 数与 worker 类型能获得更高的吞吐;配合缓存(Redis/Nginx 静态缓存)性能倍增。
安全与稳定:UFW、Fail2ban、HTTPS、Systemd 管理确保服务可靠运行。