Django、uwsgi 和 nginx - 内部服务器错误
Django, uwsgi and nginx - Internal Server Error
我是 python 的新手,正在开发我的第一个 django 项目。我遵循了 this 教程。我设法配置了除 django 应用程序本身以外的所有东西。如果我单独 运行 django 服务器,它可以工作,但是当由 uwsgi 启动时它不工作。
这是我的 uwsgi 配置文件:
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
我项目的杂物树:
.
|-- 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
module=mysite.wsgi:application
...
我是 python 的新手,正在开发我的第一个 django 项目。我遵循了 this 教程。我设法配置了除 django 应用程序本身以外的所有东西。如果我单独 运行 django 服务器,它可以工作,但是当由 uwsgi 启动时它不工作。
这是我的 uwsgi 配置文件:
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
我项目的杂物树:
.
|-- 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 module=mysite.wsgi:application ...