为什么我需要一个单独的 Django 网络服务器?
Why would I need a separate webserver for Django?
我注意到大多数关于 Django 的书籍和教程都非常清楚地将 Django 开发服务器用作普通的 Web 服务器是不行的。
但是有些说其他webservers是可选的,我们可以用Django server把网站放到网上给大家看。
但究竟是为什么呢?为什么我需要(或不需要)在Django-WSGI面前使用Apache、Lighttpd、Nginx等?
Django 服务器在某些方面不安全吗?如果是这样,它究竟是如何不安全的,为什么 Django 不能提供更强大的网络服务器(开箱即用,随时可用)?
这些网络服务器究竟如何帮助 Django?
*我知道那些网络服务器有非常有用的模组,但再次强调:Django 不能提供更安全的 "mod-able" 网络服务器吗?
我的理解是,Django 的人员并不专门从事服务器业务,他们从来没有打算让他们的服务器代码产生任何东西,只是一种在没有大量流量的情况下在本地机器上开发和测试的方法。根据他们的 own documentation
Now’s a good time to note: don’t use this server in anything resembling a production environment. It’s intended only for use while developing. (We’re in the business of making Web frameworks, not Web servers.)
这归结为 Django 项目的目标和与重用相关的效率提升(而不是重新发明轮子)。
Django 的既定目标是提供一个可实现快速开发和最少代码的 Web 应用程序框架。最初的标语是 "web application framework for perfectionists with deadlines".
这个目标可以通过一个简单的单线程 Web 服务器来实现,它可以简化开发和测试。
另一方面,Apache httpd、Nginx、IIS 等的目标是提供异常可扩展和高性能的 Web 服务器。这些应用程序是高度可配置的,因为所有应用程序都各不相同,没有一种适合所有情况。他们还需要不同的专业知识来设计、实施和维护。
因此,在资源(开发人员时间)有限的情况下,Django 团队选择专注于 Web 应用程序框架,并将生产就绪的 Web 服务器留给另一个项目,这很有意义。
这不是 Django 特有的东西,我所知道的所有现代 Web 框架都是这种情况,它们都有这个非常简单的内置 Web 服务器,我们仅将其用于开发目的,原因很明显, 重新发明轮子没有任何意义,因为我们已经拥有非常强大的网络服务器。
另一件重要的事情是,您可以将一个网络服务器用于一个或多个可能使用不同编程语言和网络框架开发的网络应用程序。
我注意到大多数关于 Django 的书籍和教程都非常清楚地将 Django 开发服务器用作普通的 Web 服务器是不行的。 但是有些说其他webservers是可选的,我们可以用Django server把网站放到网上给大家看。
但究竟是为什么呢?为什么我需要(或不需要)在Django-WSGI面前使用Apache、Lighttpd、Nginx等?
Django 服务器在某些方面不安全吗?如果是这样,它究竟是如何不安全的,为什么 Django 不能提供更强大的网络服务器(开箱即用,随时可用)?
这些网络服务器究竟如何帮助 Django? *我知道那些网络服务器有非常有用的模组,但再次强调:Django 不能提供更安全的 "mod-able" 网络服务器吗?
我的理解是,Django 的人员并不专门从事服务器业务,他们从来没有打算让他们的服务器代码产生任何东西,只是一种在没有大量流量的情况下在本地机器上开发和测试的方法。根据他们的 own documentation
Now’s a good time to note: don’t use this server in anything resembling a production environment. It’s intended only for use while developing. (We’re in the business of making Web frameworks, not Web servers.)
这归结为 Django 项目的目标和与重用相关的效率提升(而不是重新发明轮子)。
Django 的既定目标是提供一个可实现快速开发和最少代码的 Web 应用程序框架。最初的标语是 "web application framework for perfectionists with deadlines".
这个目标可以通过一个简单的单线程 Web 服务器来实现,它可以简化开发和测试。
另一方面,Apache httpd、Nginx、IIS 等的目标是提供异常可扩展和高性能的 Web 服务器。这些应用程序是高度可配置的,因为所有应用程序都各不相同,没有一种适合所有情况。他们还需要不同的专业知识来设计、实施和维护。
因此,在资源(开发人员时间)有限的情况下,Django 团队选择专注于 Web 应用程序框架,并将生产就绪的 Web 服务器留给另一个项目,这很有意义。
这不是 Django 特有的东西,我所知道的所有现代 Web 框架都是这种情况,它们都有这个非常简单的内置 Web 服务器,我们仅将其用于开发目的,原因很明显, 重新发明轮子没有任何意义,因为我们已经拥有非常强大的网络服务器。
另一件重要的事情是,您可以将一个网络服务器用于一个或多个可能使用不同编程语言和网络框架开发的网络应用程序。