gpt4 book ai didi

django - 如何解决 Django + uWSGI + nginx 堆栈的“找不到 python 应用程序,检查启动日志”错误

转载 作者:行者123 更新时间:2023-12-02 04:10:12 29 4
gpt4 key购买 nike

我在 ubuntu 16.04 上使用带有 uWSGI 和 nginx 的 Django 1.10,并使用 ansible 部署我的应用程序。我的项目没有默认结构,但很常见(感谢两个勺子:)。我使用拆分开发和生产设置以及配置文件夹而不是“名称”项目文件夹。它看起来像这样:

|-- config
| |-- __init__.py
| |-- settings
| | |-- __init__.py
| | |-- base.py
| | `-- dev.py
| |-- urls.py
| |-- wsgi_dev.py
| `-- wsgi_production.py
|-- manage.py
`-- requirements.txt

我的生产.py从ansible生成并进行安全加密并位于配置/设置中。

通过此配置,我得到“未找到 python 应用程序,请检查您的启动日志”。 Uwsgi 没有看到我的应用程序。

( {{ }} 这是 ansible 的 jinja2 语法 )

/etc/uwsgi/sites/{{ project_name }}

[uwsgi]
chdir = {{ django_root }}
home = /home/{{ project_user }}/venvs/{{ project_name }}
module = config.wsgi_production:application

master = true
processes = 5

socket = /run/uwsgi/{{ project_name }}.sock
chown-socket = {{ project_user }}:www-data
chmod-socket = 660
vacuum = true

最佳答案

几周后,我可以在我的 wsgi.py 中发现问题。常见解决方案使用os.environ['ENV']对于 DJANGO_SETTINGS_MODULE ,但对于不同的用户和权限,它不起作用。

如果您在 wsgi.py 中使用文件如下:

os.environ["DJANGO_SETTINGS_MODULE"] = "config.settings." + os.environ["ENV"]

并且有 no python application found 的问题- 分割你的 wsgi 文件。我能听懂os.environ["ENV"]返回空字符串。我为我的所有用户添加它,使用源等。但皇帝模式下的 uwsgi 看不到它。您应该使用wsgi_dev.pywsgi_production.py你可以在哪里写一些像这样的os.environ["DJANGO_SETTINGS_MODULE"] = "config.settings.production" 。它不是那么优雅,但可以很好地解决这个问题。

要使用拆分 wsgi,您可以在 wsgi.py 中编写类似的内容

import os

from django.core.wsgi import get_wsgi_application

if os.environ.get('DEV') is True:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.dev")
else:
os.environ.setdefault("DJANGO_SETTINGS_MODULE",
"config.settings.production")

application = get_wsgi_application()

关于django - 如何解决 Django + uWSGI + nginx 堆栈的“找不到 python 应用程序,检查启动日志”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42185596/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com