Django最重要的部署平台是WSGI,它是Python Web服务器和应用的标准。
Django的startproject
管理命令会生成一个简单的默认WSGI 配置,你可以根据项目的需要做调整并指定任何与WSGI兼容的应用服务器使用。
Django包含以下WSGI服务器的入门文档:
application
对象¶使用WSGI 部署的核心概念是application
可调用对象,应用服务器使用它来与你的代码进行交互。 在Python 模块中,它通常一个名为application
的对象提供给服务器使用。
startproject
命令创建一个<project_name>/wsgi.py
文件,它就包含这样一个application
可调用对象。
它既可用于Django 的开发服务器,也可以用于线上WSGI 的部署。
WSGI 服务器从它们的配置中获得application
可调用对象的路径。 Django的内置服务器,即runserver
命令,从WSGI_APPLICATION
设置中读取。 默认情况下,它设置为application
,指向<project_name>/wsgi.py
中的<project_name>.wsgi.application
可调用对象。
当WSGI 服务器加载你的应用时,Django 需要导入settings 模块 —— 这里是你的全部应用定义的地方。
Django 使用DJANGO_SETTINGS_MODULE
环境变量来定位settings 模块。 它包含settings 模块的路径,以点分法表示。 您可以使用不同的价值进行开发和生产;这一切都取决于你如何组织你的设置。
如果这个变量没有设置,默认的wsgi.py
设置为mysite
,其中mysite.settings
为你的项目的名称。 这是runserver
如何找到默认的settings 文件的机制。
注
因为环境变量是进程范围的,当你在同一个进程中运行多个Django 站点时,它将不能工作。 使用mod_wsgi 就是这个情况。
为了避免这个问题,可以使用mod_wsgi 的守护进程模式,让每个站点位于它自己的守护进程中,或者在wsgi.py
中通过强制使用os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"
来覆盖这个值。
2017年9月6日