如何使用wsgi部署

Django的主要部署平台是 WSGI, 用于Web服务器和应用程序的python标准。

贾戈 startproject management命令为您设置一个最小的默认WSGI配置,您可以根据项目的需要对其进行调整,并指示任何符合WSGI的应用程序服务器使用。

Django包括以下WSGi服务器的入门文档:

这个 application 对象

使用wsgi部署的关键概念是 application 应用服务器用来与代码通信的可调用文件。它通常作为名为 application 在服务器可访问的python模块中。

这个 startproject 命令创建文件 <project_name>/wsgi.py 包含这样一个 application 可赎回的。

它被Django的开发服务器和生产WSGi部署所使用。

wsgi服务器获取 application 可从配置中调用。Django的内置服务器,即 runserver 命令,从 WSGI_APPLICATION 设置。默认设置为 <project_name>.wsgi.application ,哪个指向 application 可调用的 <project_name>/wsgi.py .

配置设置模块

当wsgi服务器加载您的应用程序时,django需要导入设置模块——这就是定义整个应用程序的地方。

Django使用 DJANGO_SETTINGS_MODULE 用于定位相应设置模块的环境变量。它必须包含指向设置模块的虚线路径。您可以对开发和生产使用不同的值;这完全取决于您如何组织设置。

如果未设置此变量,则默认 wsgi.py 将它设置为 mysite.settings 在哪里 mysite 是项目的名称。就是这样 runserver 默认情况下查找默认设置文件。

备注

由于环境变量是全过程的,所以当您在同一个过程中运行多个Django站点时,这不起作用。这发生在mod wsgi身上。

要避免此问题,请在每个站点的守护进程中使用mod wsgi的守护进程模式,或者通过强制 os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" 在你 wsgi.py .

应用wsgi中间件

申请 WSGI middleware 可以包装应用程序。例如,您可以在 wsgi.py ::

from helloworld.wsgi import HelloWorldApplication

application = HelloWorldApplication(application)

如果要将django应用程序与另一个框架的wsgi应用程序组合在一起,还可以将django wsgi应用程序替换为自定义wsgi应用程序,该应用程序稍后将委托给django wsgi应用程序。