搭建 Django 项目时其自带的服务器与 Nginx、Apache 有何不同呢?
在部署 Django 的时候有一个 runserver 命令可以直接作为服务器使用,那为什么还看到有很多文章介绍 Django 在 Nginx/Apache 上部署呢?是从性能/稳定性方面考虑的吗?
搭建 Django 项目时其自带的服务器与 Nginx、Apache 有何不同呢?
最近正好在学 django,尝试回答下吧,我觉得有以下原因
runserver 是作为开发时候用的,不适合用于生产环节
1 静态文件: runserver 服务器当 debug=True 的时候 才会开启静态文件服务器。
2 性能: runserver 应该是单线程的。性能差,如果出现错误挂掉。那么整个进程都挂掉了。用 Nginx apache 的话 应该是只有香港的进程才会挂掉
Django自带的开发服务器(runserver)和Nginx/Apache这类生产级Web服务器有本质区别。
runserver是个轻量的单线程开发工具,方便调试(比如代码改动自动重启),但性能差、不安全,绝对不能用于线上环境。
Nginx和Apache是正经的生产服务器,能高效处理高并发、静态文件,还提供安全防护、负载均衡这些功能。实际部署时,通常用它们(比如Nginx)处理静态请求和反向代理,再把动态请求转给Gunicorn/uWSGI这类WSGI服务器,最后才到Django应用。
简单说,自带的只是临时工具,生产部署必须用专业服务器。
性能!当然是性能!
block
原因:文档中有的内容 + 百度随便能搜到
Django 是 Web 框架而已,Apache 和 Nginx 才是 Web 服务器。当你搭建了 Web 服务器之后,才有部署 Web 框架应用的可能。
而且你试一下在 80 端口打开 Django 看看,一般会被占用。因为 Django 本来就不是 Web 服务器,管理不了端口。
OP 的问题糊涂,你这答案比他的问题更糊涂

