Django 的主要部署平台是 WSGI,它是 Web 服务器和 Web 应用的 Python 标准。
Django 的管理命令 startproject
生成了一个简单的默认 WSGI 配置,你可以按照自己项目的需要去调整这个配置,任何兼容 WSGI 的应用服务器都可以直接使用。
Django 提供了下面这些 WSGI 服务的入门文档:
application
对象P用 WSGI 部署的关键是 application
callable,应用服务器用它与你的代码交互。 application
callable 一般以一个位于 Python 模块中,名为 application
的对象的形式提供,且对服务器可见。
startproject
命令创建了文件 <project_name>/wsgi.py
,其中包含了 application
callable。
Django 开发服务器和生产环境的 WSGI 部署都用到了它。
WSGI 服务器从其配置中获取 application
callable 的路径。Django 的默认服务器( runserver
命令),从配置项 WSGI_APPLICATION
中获取。默认值是 <project_name>.wsgi.application
,指向 <project_name>/wsgi.py
中的 application
callable。
当 WSGI 服务器加载应用时,Django 需要导入配置模块——完整定义应用的地方。
Django 利用 DJANGO_SETTINGS_MODULE
环境变量来定位合适的配置模块。它必须包含到配置模块的点式路径。开发环境和生产环境可以配置不同值;这都取决于你是如何组织配置的。
若未设置该变量, wsgi.py
默认将其设置为 mysite.settings
, mysite
即工程名字。这就是 runserver
默认的发现默认配置行为。
注解
由于环境变量是进程级的,所以如果在同一进程运行多个 Django 站点将出错。这在使用 mod_wsgi 时会出现。
要避免此问题,为每个站点在后台进程使用 mod_wsgi 的后台模式,或者在 wsgi.py
中通过 os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"
重写来自环境变量的值。
8月 23, 2019