2017-02-12 37 views
1

我用户Django 1.10与uWSGI和nginx在Ubuntu 16.04和部署我的应用程序。我的项目没有默认结构,但相当普遍(谢谢两个勺子:)。 我使用拆分开发和生产设置和配置文件夹,而不是'名称'项目文件夹。它看起来是这样的:Django + uWSGI + nginx堆栈如何解决“没有python应用程序发现检查你的启动日志”错误

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

production.py从安全加密ansible genarate和配置/设置定位。

用这个配置我得到“没有找到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 

回答

2

几个星期后,我可以在我的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"]返回空字符串。我为我的所有用户添加它,使用源代码等。但在emperior模式下的uwsgi没有看到它。 你可以使用wsgi_dev.pywsgi_production.py你可以在这里写下这样的想法os.environ["DJANGO_SETTINGS_MODULE"] = "config.settings.production"。这不是很优雅,但解决这个问题很好。

相关问题