Django,UWSGI和NGINX-内部服务器错误



我是Python的新手,正在从事我的第一个Django项目。我遵循本教程。除了Django应用程序本身,我设法配置了所有内容。如果我单独运行Django服务器,它可以工作,但是在UWSGI启动时它不起作用。

这是我的uwsgi conf:

import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "api.settings")
application = get_wsgi_application()

和UWSGI日志中的错误:

--- no python application found, check your startup logs for errors ---

所以我查找了启动错误:

Traceback (most recent call last):
  File "./wsgi.py", line 16, in <module>
    application = get_wsgi_application()
  File "/var/www/api.partycon.net/virtualpy/local/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
    django.setup()
  File "/var/www/api.partycon.net/virtualpy/local/lib/python2.7/site-packages/django/__init__.py", line 17, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/var/www/api.partycon.net/virtualpy/local/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in __getattr__
    self._setup(name)
  File "/var/www/api.partycon.net/virtualpy/local/lib/python2.7/site-packages/django/conf/__init__.py", line 44, in _setup
    self._wrapped = Settings(settings_module)
  File "/var/www/api.partycon.net/virtualpy/local/lib/python2.7/site-packages/django/conf/__init__.py", line 92, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named api.settings

我的项目的dirtree:

.
|-- api
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- media
|   |   `-- sample-media.jpg
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py
|   |-- urls.pyc
|   |-- wsgi.py
|   `-- wsgi.pyc
|-- db.sqlite3
|-- manage.py
|-- static
|   `-- admin
|       ... ... ... ...
|-- uwsgi_conf.ini
`-- uwsgi_params

我希望我提供足够的信息,但是我可以告诉你更多 - 问题是我实际上不知道在哪里看。

预先感谢:)

您可能缺少uwsgi_conf.ini中的chdir行。或者,可能,您有chdir行,但这是错误的。

这是您的追溯确认的:

File "./wsgi.py", line 16, in <module>

在这里您应该看到./api/wsgi.py,而不是./wsgi.py

显然,UWSGI的工作目录是api/目录,而应该是父目录。

通常,您的UWSGI配置文件应该看起来像:

[UWSGI] chdir =/path/to/your/project 模块= mysite.wsgi:应用程序...

另请参见UWSGI上的Django文档。

最新更新