我注意到Django上的大部分书籍和教程都非常清楚地表明将Django开发服务器用作普通的网络服务器是不行的。 但有些人认为其他网络服务器是可选的,我们可以使用Django服务器将网站放在网上供所有人查看。
但为什么呢?为什么我需要(或不)在Django-WSGI前面使用Apache,Lighttpd,Nginx等?
Django服务器在某种程度上不安全吗?如果是这样,它究竟是如何不安全的,为什么Django只能提供更强大的网络服务器(开箱即用,可以随时使用)?
这些网络服务器究竟如何帮助Django? *我知道那些网络服务器有非常有用的mod,但是再次说:Django不能带来更安全的可修改的"网络服务器?
答案 0 :(得分:7)
我的理解是,Django的人并不专注于服务器业务,他们从不打算让他们的服务器代码生成任何东西,而不是在没有大量流量的情况下在本地机器上开发和测试。按照own documentation
现在是时候注意:不要在类似生产环境的任何地方使用此服务器。它仅用于开发时使用。 (我们的业务是制作Web框架,而不是Web服务器。)
答案 1 :(得分:4)
它归结为Django项目的目标以及与重复使用相关的效率提升(而不是重新发明轮子)。
Django的既定目标是提供一个支持快速开发和最少代码的Web应用程序框架。最初的标语是“具有最后期限的完美主义者的Web应用程序框架”。
这个目标可以通过一个简单的单线程Web服务器来完成,它简单地促进了开发和测试。
另一方面,Apache httpd,Nginx,IIS等的目标是提供格外可扩展且性能卓越的Web服务器。这些应用程序是高度可配置的,因为所有应用程序都不同,并且没有一种尺寸适合所有应他们还需要不同的专业知识来设计,实施和维护。
因此,在资源有限(开发时间)的情况下,Django团队选择专注于Web应用程序框架,并将生产就绪的Web服务器留给另一个项目,这很有意义。
答案 2 :(得分:2)
这不是特定于Django的东西,我所知道的所有现代Web框架都是如此,它们都有这个非常简单的内置Web服务器,我们仅用于开发目的,原因很明显,它因为我们已经拥有非常强大的Web服务器,所以重新发明轮子没有任何意义。
另一个重要的事情是,您可以将一个Web服务器用于可能使用不同编程语言和Web框架开发的一个或多个Web应用程序。