生产环境启动Django项目是否需要使用runserver命令?
生产环境Django项目启动方案说明
核心结论
生产环境绝对不要使用runserver命令启动Django项目。runserver是Django官方专门为本地开发调试设计的轻量服务器,仅做了基础的请求处理实现,没有做生产场景必需的安全防护、高并发处理、稳定性保障相关优化,官方文档也明确禁止将其用于生产环境。
生产环境正确启动方式
生产环境标准部署方案采用「反向代理服务器 + WSGI/ASGI应用服务器 + Django项目」的架构,常用组合为Nginx + Gunicorn/uWSGI,异步项目可选用Uvicorn作为ASGI服务器,具体操作步骤如下:
- 前期环境准备
- 服务器安装对应版本Python,创建并激活虚拟环境,安装项目所有依赖包
- 修改项目
settings.py配置:关闭DEBUG模式DEBUG = False,配置ALLOWED_HOSTS为你的服务域名或服务器公网IP - 执行静态文件收集命令:
python manage.py collectstatic - 执行数据库迁移命令:
python manage.py migrate
- 配置启动应用服务器(以Gunicorn为例)
- 虚拟环境内安装Gunicorn:
pip install gunicorn - 项目根目录下执行启动命令,绑定本地端口:
gunicorn --bind 127.0.0.1:8000 项目名.wsgi:application,可根据服务器CPU核心数调整工作进程数,例如添加-w 4参数启动4个工作进程提升并发处理能力
- 虚拟环境内安装Gunicorn:
- 配置反向代理(以Nginx为例)
- 安装Nginx后新增站点配置,将公网80/443端口的请求转发到Gunicorn绑定的
127.0.0.1:8000端口,同时配置静态文件路径,由Nginx直接处理静态资源请求,降低应用服务器压力 - 验证Nginx配置无误后重启服务,即可通过域名或公网IP访问项目
- 安装Nginx后新增站点配置,将公网80/443端口的请求转发到Gunicorn绑定的
可选优化:可配置systemd服务托管Gunicorn进程,实现项目开机自启、崩溃自动重启的效果
内容的提问来源于stack exchange,提问作者Anjali Chourasia
相关产品推荐
相关产品推荐

