运行“runserver”命令时 Django 使用什么类型的服务器?文档或多或少说它是“轻量级开发 Web 服务器”。例如 Apache 吗?提前致谢。
1 回答
这正是它在锡上所说的 - 一个用 Python 实现的简单、轻量级的 Web 服务器,它随 Django 一起提供,仅用于开发目的。它本身并不是一个独立的 Web 服务器,纯粹用于使用 Django 开发应用程序——你永远不应该在生产环境中使用它,因为它根本不提供生产 Web 服务器所需的所有功能。
Web 服务器几乎可以用任何编程语言实现,因此使用 Django 发布一个用 Python 实现的服务器是有意义的,这样您就可以立即使用它,而无需安装 Apache 之类的东西。大多数可能在生产中使用的 Web 服务器,例如 Apache 和 Nginx,都是用 C 编写的,因此将它们与 Django 一起发布并不实际。
此外,运送您自己的开发服务器可以降低复杂性。Apache 和 Nginx 都是需要大量配置的复杂软件,虽然在开发过程中有一些方法可以实现自动化,但当您更愿意编写代码时,这并不是您真正想要处理的事情。开始您需要的只是提供静态和动态内容的东西 - 您不需要很多其他所需的功能。值得注意的是,即使是 PHP 现在也附带了一个开发服务器。
当您使用 Django 项目时,您当然应该使用适当的 Web 服务器。通常建议使用 Django,在生产中您应该使用两台 Web 服务器,一台提供静态内容,另一台提供动态内容,因为让 Django 提供静态内容会减慢它的速度。起初这听起来很奇怪,但实际上很有意义,因为您所做的是设置一个 Web 服务器来提供所有静态内容,然后让它反向代理到另一台运行在非标准端口上的服务器,并提供所有动态内容。我当前项目的设置是 Nginx 用于静态内容,Gunicorn 用于动态内容。