我正在使用Django和uWSGI并尝试组织我的Web服务器配置文件,如下所示:
/proj/
web_config/
docker-compose.py
...
prod/
nginx.conf
wsgi.py
uwsgi_params
uwsgi.ini
...
app/
__init__.py
settings.py
我的问题是我不知道如何从我的WSGI模块引用最终的django设置模块:
uwsgi.ini
[uwsgi]
# ...
module = wsgi
env = DJANGO_SETTINGS_MODULE=(../../)app.settings # <- Problem here
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
# v- Or problem here -v
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "(../../)app.settings")
application = get_wsgi_application()
有没有办法指向正确的app.settings
没有将wsgi.py
放入/proj/
或/proj/app
?
答案 0 :(得分:1)
在这种情况下,要引用django设置,您需要做的只是从uwsgi.ini
到/proj/
目录的chdir。现在使用wsgi.py
uWSGI设置加载app/
文件(您可以将其保存在module
子目录中,但不包含任何设置)并将DJANGO_SETTINGS_MODULE
设置为{ {1}},没有任何其他内容(仅在app.settings
文件中设置它就足够了。)
它应如下所示(如果您已将wsgi.py
移回wsgi.py
):
uwsgi.ini:
app/
wsgi.py
[uwsgi]
# ...
chdir = /proj/
module = app.wsgi
如果您不希望(由于某种原因)将import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings")
application = get_wsgi_application()
文件保留在wsgi.py
,则app/
应该有:
uwsgi.py
但是[uwsgi]
# ...
chdir = /proj/
module = web_config.prod.wsgi
和web_config
应该是正确的python模块(在python 2中,它们必须包含prod
文件)。 __init__.py
的内容不会更改。