Django mod_wsgi: Ausnahme ist aufgetreten, Verarbeitung wsgi-Skript
Ich bin die Bereitstellung einer django-Projekt und vor diesem Fehler.
Meine Projekt-Struktur wie folgt:
my_project
my_project
urls.py
settings.py
index.wsgi
home
views.py
models.py
.........
requirements.txt
manage.py
Und meine index.wsgi sieht wie folgt aus:
import os
import sys
import site
# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('~/.virtualenvs/my_project/lib/python2.6/site-packages/')
# Add the app's directory to the PYTHONPATH
sys.path.append('/var/www/uni/my_project')
sys.path.append('/var/www/uni/my_project/home')
os.environ['DJANGO_SETTINGS_MODULE'] = 'my_project.settings'
# Activate your virtual env
activate_env=os.path.expanduser("/home/user/.virtualenvs/my_project/bin/activate_this.py")
execfile(activate_env, dict(__file__=activate_env))
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Und in meinem virtualhost ist die Konfiguration wie folgt :
<Directory /var/www/uni/my_project/templates/static>
Allow from all
</Directory>
WSGIScriptAlias / /var/uni/news/my_project/my_project/index.wsgi
Den apache-error.Logbuch wird wie folgt angezeigt:
mod_wsgi (pid=27330): Exception occurred processing WSGI script '/var/www/uni/my_project/my_project/index.wsgi'.
[Mon Jun 09 14:23:53 2014] [error] [client ip] Traceback (most recent call last):
[Mon Jun 09 14:23:53 2014] [error] [client ip] File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py", line 219, in __call__
[Mon Jun 09 14:23:53 2014] [error] [client ip] self.load_middleware()
[Mon Jun 09 14:23:53 2014] [error] [client ip] File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 39, in load_middleware
[Mon Jun 09 14:23:53 2014] [error] [client ip] for middleware_path in settings.MIDDLEWARE_CLASSES:
[Mon Jun 09 14:23:53 2014] [error] [client ip] File "/usr/local/lib/python2.6/dist-packages/django/utils/functional.py", line 184, in inner
[Mon Jun 09 14:23:53 2014] [error] [client ip] self._setup()
[Mon Jun 09 14:23:53 2014] [error] [client ip] File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 42, in _setup
[Mon Jun 09 14:23:53 2014] [error] [client ip] self._wrapped = Settings(settings_module)
[Mon Jun 09 14:23:53 2014] [error] [client ip] File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 95, in __init__
[Mon Jun 09 14:23:53 2014] [error] [client ip] raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
[Mon Jun 09 14:23:53 2014] [error] [client ip] ImportError: Could not import settings 'my_project.settings' (Is it on sys.path?): No module named my_project.settings
Ging ich durch die mod_wsgi und djnago docs. Ich kenne die Struktur des Projektes ist nicht die Pflege von best practices. Ich werde es später ändern, aber vorher muss ich gehen, es zu Leben.
Versuchte ich durch ändern Datei Berechtigungen und alle änderungen, die erwähnt werden, in selben Fragen stellen.
So, ich bin angenommen, ich mache etwas falsch.
Wo ist die mis-Konfiguration in den oben genannten Dateien?
Dank.
Hinzugefügt apache-error-log
irgendeine Idee? Ich habe die log.
Gibt es eine
__init__.py
- Datei zu machen my_project
ein Paket?Ist es ein init.py
InformationsquelleAutor arnold | 2014-06-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich eine Checkliste, die in dieser Art von Szenarien:
Ausführen eines Skripts testen der
index.wsgi
- Schnittstelle direkt mit python, Fehler korrigieren, bis die Ausgabe zeigt, dass alles ok ist. (siehe update)Überprüfen Sie die Berechtigungen für den.
Check für die apache-Konfiguration.
Update:
Ausführung
python my_project/index.wsgi
direkt zeigt nichts in der Konsole, funktioniert dieser Ansatz auf die fcgi-Konfiguration, aber nicht in wsgi, müssen Sie ein Skript erstellen Sie einen test-server und zeigen Sie offen Fehler auf der Konsole, das Beispiel-script ist dieses:test_server.py
Schritte:
Empfehlungen:
Überprüfen Sie
__init__.py
entweder in den Projekt-Ordner und den Ordner für die EinstellungenVersuchen relative Pfade in den Einstellungen und in der .wsgi-Datei (siehe Beispiel)
Überprüfen Sie die groß - /lowecase in Ihrem Namen (wahrscheinlich ändern
"MY_PROJECT.settings"
für"my_project.settings"
Beispiel:
Mein Fehler, die 1 Punkt funktioniert nur, wenn Sie der fcgi-Konfiguration, die Sie verändern können-zum test - fcgi ans testen in der Konsole, ich werde Bearbeiten Sie die Antwort hinzufügen eines Skripts für den test-ein wsgi-Skript. Ich habe die 3-Punkt (wenn beide 1 und 2 bestanden) Sie haben zu prüfen, die virtualhost-Konfiguration, die .htaccess-Konfiguration und mindestens das wsgi-Modul (weniger wahrscheinlich)
Was ist das
index.wsgi interface
von der Sie sprechen?Es ist das python-Skript dient als Brücke zwischen den django-Projekt und die wsgi (Apache -) server ist es angebracht, in der django-Projekt-Ordner
InformationsquelleAutor soloidx
Ich hatte das gleiche passiert mir vor ein paar Tagen. Ich Las alles über Sie, aber dies ist wie ich endlich Feste es alle.
Ihre django wsgi-Datei sollte eine python-Datei (wsgi.py), nicht ein
index-Datei (index.wsgi). Dies ist, was mir sah aus wie, offensichtlich ersetzen Benutzernamen und Ordnern.
DON"T FÜGEN Sie das PROJEKT in DIE /var/www/html/- ORDNER! Ich wusste gar nicht, dass erst ein problem, wo ich an Sie. Ich wählte, um es in das /opt/Verzeichnis.
Brauchen Sie nicht zu aktivieren, die env, diese zu arbeiten. Fügen Sie die Pakete in der ersten Zeile. Dies ist, warum ich es auskommentiert in der Grube (Website funktioniert).
In der virtuellen Konfiguration
Nachdem Sie diese Einstellungen ändern in der host-Datei, stellen Sie sicher, dass Sie
sudo service httpd reload
Glück, ich weiß, was Sie durchmachen und es ist frustrierend, nicht die Antworten. Hoffe, das funktioniert für Sie, es für mich getan hat.
InformationsquelleAutor nahata5
Sollten Sie die Angabe der virtualenv für das Projekt in der Apache-config, nicht Ihre Anwendung WSGI-Datei. Da hast du Apache verwenden, sehen https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#using-a-virtualenv für das, was Sie brauchen, um in Ihre Apache-Konfiguration. Ich würde auch empfehlen im daemon-Modus läuft - es sei denn, Sie haben einen sehr guten Grund, nicht zu, sollten Sie fast immer mit daemon-mode auf Apache.
Setzen Sie dann Ihr Projekt WSGI-Datei zu
InformationsquelleAutor xjtian