2015-05-10 23 views
5

Jestem całkiem nowym użytkownikiem Pythona i pracuję nad moim pierwszym projektem django. Poszedłem za tutorialem this. Udało mi się skonfigurować wszystkie rzeczy, ale samą aplikację django. Działa, jeśli uruchomię serwer django sam, ale nie działa, gdy został uruchomiony przez uwsgi.Django, uwsgi i nginx - Wewnętrzny błąd serwera

To mój uwsgi conf:

import os 

from django.core.wsgi import get_wsgi_application 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "api.settings") 

application = get_wsgi_application() 

i błędów z uwsgi log:

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

Więc spojrzałem w górę pod kątem błędów uruchamiania:

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 mojego projektu:

. 
|-- 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 

Mam nadzieję, że dostarczyłem wystarczających informacji, ale mogę powiedzieć więcej - problemem jest to, że właściwie nie mam pojęcia, gdzie szukać.

góry dzięki :)

Odpowiedz

10

Prawdopodobnie brakuje chdir linię w uwsgi_conf.ini. Lub prawdopodobnie masz linię chdir, ale jest ona zła.

Jest to potwierdzone przez traceback:

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

Tutaj powinieneś zobaczyć ./api/wsgi.py nie ./wsgi.py.

Najwyraźniej katalog roboczy uWSGI to katalog api/, a powinien to być katalog nadrzędny.

Ogólnie, plik konfiguracyjny uWSGI powinna wyglądać następująco:

 
[uwsgi] 
chdir=/path/to/your/project 
module=mysite.wsgi:application 
... 

Zobacz także Django documentation on uWSGI.

+0

OK dzięki @Andrea COrbellini. Pomogło mi to przejść do następnego etapu: teraz otrzymuję ten błąd w dzienniku uwsgi: 'ImportError: Żaden moduł o nazwie py \ n nie może załadować aplikacji 0 (mountpoint = '') (nie można znaleźć wywołania lub błąd importu) –

+1

@ ŽigaPatačkoKoderman: masz gdzieś ciągnącego się 'py'. Być może, czy napisałeś 'api.wsgi.py' zamiast' api.wsgi'? –

+0

Dzięki @Andrea Corbellini. To prawda, nazwa pliku wsgi.py wsgi zamiast pliku api.wsgi. Dziękuję bardzo :) i czy mógłbyś edytować swój post i dodać to, co mi powiedziałeś w tych komentarzach, aby inni mogli go łatwo zobaczyć? –

Powiązane problemy