我很惊讶我找不到与此相关的现有问题。也许有一个明显的答案,我忽略了。但是,让我说我的django项目名为“foo”。 fooxswpoi书鼓励在多个文件中定义foo的设置。
Two Scoops
Dev和prod是同一个repo的独立实例,这两个实例都是通过我的Webfaction帐户使用Apache提供的。对于开发站点我希望它使用settings/
local.py
dev.py
prod.py
和prod站点我希望它使用settings/dev.py
。我的wsgi.py文件包含以下行:
settings/prod.py
这是我感到困惑的地方。如何用os.environ.setdefault("DJANGO_SETTINGS_MODULE", "foo.settings.prod")
加载开发站点?
我可以用多个文件替换wsgi.py,然后在每个httpd.conf文件中将WSGIScriptAlias分配给正确的wsgi文件吗?
foo.settings.dev
谢谢
如果我没记错的话,这两本书建议使用环境变量来设置各种设置 - 其中一个应该是django设置模块的位置。
因此,只需在开发系统中尝试设置和环境变量wsgi/
dev.py
prod.py
等于“foo.settings.dev”,并在生产中尝试“foo.settings.prod”。
DJANGO_SETTINGS_MODULE
只是将setdefaul
设置为默认值,以防你自己没有定义它 - 你可以将它注释掉或者忽略它。
另一种方法是让每个站点在不同的mod_wsgi守护进程组中运行。将这些守护程序进程组命名为“local”,“dev”和“prod”。
在您的WSGI脚本文件中,您可以使用:
DJANGO_SETTINGS_MODULE
换句话说,使用mod_wsgi守护程序进程组的名称来动态选择配置。
你可以做的是使用应该在wsgi文件的路径中选择的设置的名称。假设你的wsgi的路径是import mod_wsgi
os.environ['DJANGO_SETTINGS_MODULE'] = 'foo.settings.%s' % mod_wsgi.process_group
,那么你可以在该文件中执行以下操作:
/www/production/django_project_name/wsgi.py