为什么我需要一个独立的 Web 服务器来运行 Django?

12

我注意到大多数关于Django的书籍和教程都明确指出不能将Django开发服务器用作正常Web服务器。 但是有些人认为其他Web服务器是可选的,我们可以使用Django服务器将网站放在网络上供所有人查看。

但是为什么呢?我为什么需要(或不需要)在Django - WSGI前面使用Apache、Lighttpd、Nginx等其他Web服务器呢?

Django服务器是否存在某些安全问题?如果是这样,它具体有哪些安全问题,为什么Django不能自带一个更强大的Web服务器(开箱即用)?

这些Web服务器究竟如何帮助Django? *我知道这些Web服务器有非常有用的模块,但再次提问:Django不能自带更安全的“可模块化”Web服务器吗?


2
https://dev59.com/iWYr5IYBdhLWcg3w0tWE - Saeid
3个回答

9

据我所知,Django团队并不专注于服务器业务,他们的服务器代码也没有意图产生任何除在本地机器上进行开发和测试外的流量。根据他们自己的文件,现在是一个很好的时机来注意:不要在任何类似于生产环境的情况下使用此服务器。它仅适用于开发过程中的使用。(我们致力于制作Web框架,而不是Web服务器。)


7
这归结于Django项目的目标以及重复使用所带来的效率提升(而非重新发明轮子)。 Django的目标是提供一个Web应用程序框架,使快速开发和编码最小化成为可能。最初的标语是“完美主义者与最后期限的Web应用程序框架”。通过一个简单的单线程Web服务器就能实现该目标,它只需要简单地促进开发和测试。
Apache httpd、Nginx、IIS等的目标是提供高度可扩展和高性能的Web服务器。这些应用程序高度可配置,因为所有应用程序都不同,并且没有一种大小适合所有的解决方案。它们还需要不同的专业知识来设计、实现和维护。
因此,有限的资源(开发人员时间)内,Django团队选择专注于Web应用程序框架,并将生产准备好的Web服务器留给另一个项目,这是非常明智的。

嗯,但是Django的开发服务器确实可以运行多个线程。你的意思是它可以运行多个线程,但效率不高吗? - Ladenkov Vladislav

3

这并不是Django特有的问题,我所知道的所有现代Web框架都有一个非常简单的内置Web服务器,我们仅用于开发目的。原因显而易见,没有必要重新发明轮子,因为我们已经拥有非常强大的Web服务器。

另一个重要的事情是,您可以使用一个Web服务器来运行一个或多个Web应用程序,这些应用程序可能使用不同的编程语言和Web框架开发。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接