2015-05-10 9 views
5

Ich bin ziemlich neu bei Python und arbeite an meinem ersten Django-Projekt. Ich folgte this Tutorial. Ich habe es geschafft, alle Dinge zu konfigurieren, aber die Django-App selbst. Es funktioniert, wenn ich django Server alleine betreibe, aber es funktioniert nicht, wenn es von uwsgi gestartet wird.Django, uwsgi und nginx - Interner Serverfehler

Das ist mein uwsgi conf:

import os 

from django.core.wsgi import get_wsgi_application 

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

application = get_wsgi_application() 

Und Fehler von uwsgi log:

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

So sah ich für Startfehler:

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 Mein Projekt:

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

Ich hoffe, ich habe genug Informationen zur Verfügung gestellt, aber ich kann Ihnen mehr sagen - das Problem ist, dass ich eigentlich keine Ahnung habe, wo ich suchen soll.

Vielen Dank im Voraus :)

Antwort

10

Sie fehlen wahrscheinlich eine chdir Linie in Ihrem uwsgi_conf.ini. Oder, wahrscheinlich, Sie haben eine chdir Zeile, aber es ist falsch.

Dies wird durch Ihre Zurückverfolgungs bestätigt:

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

Hier sollten Sie ./api/wsgi.py, nicht ./wsgi.py sehen. Das Arbeitsverzeichnis von uWSGI ist eindeutig das Verzeichnis api/, während es das übergeordnete Verzeichnis sein sollte.

Im Allgemeinen Ihre uwsgi Konfigurationsdatei sollte wie folgt aussehen:

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

Siehe auch Django documentation on uWSGI.

+0

Okay danke @Andrea COrbellini. Es half mir, zum nächsten Schritt zu gehen: jetzt bekomme ich diesen Fehler in uwsgi log: 'ImportError: Kein Modul namens py \ n kann App 0 nicht laden (mountpoint = '') (Aufruf nicht gefunden oder Importfehler)' –

+1

@ ŽigaPatačkoKoderman: Sie haben irgendwo ein nachgezogenes 'py'. Vielleicht hast du 'api.wsgi.py' anstelle von' api.wsgi' geschrieben? –

+0

Dank @Andrea Corbellini. Richtig, ich habe die wsgi-Datei wsgi.py anstelle von api.wsgi benannt. Vielen Dank :) und könnten Sie Ihren Beitrag bearbeiten und hinzufügen, was Sie mir in diesem Kommentar gesagt haben, damit die anderen es leicht sehen können? –