1. 项目概述
在Web应用开发中,Flask因其轻量级和灵活性广受Python开发者喜爱。但当应用需要上线时,单纯使用Flask内置的开发服务器显然无法满足生产环境的需求。这就是为什么我们需要Nginx+Gunicorn这样的专业部署方案。
我曾在多个生产项目中采用这套部署方案,它完美解决了以下问题:
- 开发服务器性能低下(通常只能处理几十个并发)
- 缺乏静态文件高效处理能力
- 没有完善的进程管理机制
- 缺少负载均衡和反向代理支持
这套组合中,Gunicorn作为WSGI服务器负责处理Python应用请求,Nginx则承担反向代理和静态文件服务的角色。二者配合可以达到:
- 轻松处理上千并发连接
- 静态文件响应速度提升5-10倍
- 实现平滑重启和零停机部署
- 提供HTTPS支持和安全防护层
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与工具安装
2.1 Python环境配置
建议使用Python 3.7+版本,通过venv创建独立环境:
bash复制python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate.bat # Windows
安装必要依赖:
bash复制pip install flask gunicorn
注意:生产环境务必固定版本号,使用
pip freeze > requirements.txt生成依赖清单
2.2 Nginx安装与基础配置
不同系统的安装方式:
bash复制# Ubuntu/Debian
sudo apt update && sudo apt install nginx
# CentOS/RHEL
sudo yum install epel-release && sudo yum install nginx
# MacOS
brew install nginx
验证安装:
bash复制nginx -v
sudo systemctl start nginx
访问http://localhost应看到Nginx欢迎页面
2.3 Gunicorn基本使用
测试启动Flask应用:
bash复制gunicorn -w 4 -b 127.0.0.1:8000 your_app:app
参数说明:
-w 4:使用4个工作进程-b:绑定地址和端口your_app:app:模块名和应用实例名
3. 深度配置实战
3.1 Gunicorn高级配置
创建gunicorn_conf.py配置文件:
python复制import multiprocessing
bind = "127.0.0.1:8000"
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = "gevent"
keepalive = 5
timeout = 120
max_requests = 1000
max_requests_jitter = 50
accesslog = "-"
errorlog = "-"
关键参数解析:
workers:建议设置为(2*CPU核数)+1worker_class:使用gevent实现异步IO- `max_reque
