WSGI 模块和 Django 设置位置
WSGI module and Django settings locations
我将 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
?
在这种情况下,要引用 django 设置,您需要做的就是从 uwsgi.ini
chdir 到 /proj/
目录。现在使用 module
uWSGI 设置加载你的 wsgi.py
文件(你可以将它保存在你的 app/
子目录中,它不包含任何设置)并将 DJANGO_SETTINGS_MODULE
设置为 app.settings
,没有其他任何东西(只在wsgi.py
文件中设置就足够了)。
它应该看起来像这样(如果您已将 wsgi.py
移回 app/
):
uwsgi.ini:
[uwsgi]
# ...
chdir = /proj/
module = app.wsgi
wsgi.py
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
和 prod
应该是正确的 python 模块(在 python 2 中它们必须有 __init__.py
文件在里面)。 wsgi.py
的内容没有改变。
我将 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
?
在这种情况下,要引用 django 设置,您需要做的就是从 uwsgi.ini
chdir 到 /proj/
目录。现在使用 module
uWSGI 设置加载你的 wsgi.py
文件(你可以将它保存在你的 app/
子目录中,它不包含任何设置)并将 DJANGO_SETTINGS_MODULE
设置为 app.settings
,没有其他任何东西(只在wsgi.py
文件中设置就足够了)。
它应该看起来像这样(如果您已将 wsgi.py
移回 app/
):
uwsgi.ini:
[uwsgi]
# ...
chdir = /proj/
module = app.wsgi
wsgi.py
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
和 prod
应该是正确的 python 模块(在 python 2 中它们必须有 __init__.py
文件在里面)。 wsgi.py
的内容没有改变。