如何使用wsgi.py配合gunicorn启动Django生产环境服务器
Django生产环境通过wsgi.py部署的完整方案
1. WSGI服务器的必要性
Django自带的runserver仅用于开发调试,单线程运行、无安全防护、性能不足以承载生产流量,绝对不可以直接用于生产环境。wsgi.py是Django项目默认生成的WSGI规范应用入口,所有符合WSGI标准的服务器都可以调用该文件内的application实例启动Django服务。
2. 是否必须使用gunicorn
gunicorn不是强制选项,你也可以选择uWSGI、Apache mod_wsgi等其他WSGI服务器,但gunicorn配置逻辑简单、上手门槛低、稳定性经过大量生产场景验证,是Django官方首推的选择,相关教程不存在过时问题,操作逻辑适配所有当前仍在维护的Django版本。
3. 基于gunicorn调用wsgi.py启动服务的具体步骤
- 先确认你的项目中
wsgi.py文件存在,默认路径为<项目主目录同名文件夹>/wsgi.py,默认生成的文件内容已经包含合规的application实例,无需额外修改 - 在项目的虚拟环境中安装gunicorn:
pip install gunicorn - 切换到Django项目根目录(即
manage.py所在目录),执行基础启动命令:gunicorn <你的项目名>.wsgi:application - 生产环境常用启动参数如下,可根据需求叠加:
- 指定监听地址端口:
--bind 0.0.0.0:8000 - 指定工作进程数:
--workers 4,推荐配置为服务器CPU核心数*2+1 - 后台守护进程运行:
--daemon - 完整示例命令(假设项目名为myproject):
gunicorn --workers 4 --bind 0.0.0.0:8000 --daemon myproject.wsgi:application
- 指定监听地址端口:
- 生产环境建议额外搭配Nginx作为反向代理,处理静态资源分发、SSL证书配置、流量负载均衡等需求,仅将动态请求转发给gunicorn处理即可。
4. 生产环境必要配置校验
- 确保
settings.py中DEBUG = False,避免泄露项目敏感信息 - 正确配置
ALLOWED_HOSTS,填入你的服务器公网IP或绑定的域名 - 提前执行
python manage.py collectstatic收集所有静态资源,交给Nginx处理
内容的提问来源于stack exchange,提问作者sololuvr
相关产品推荐
相关产品推荐

