Kürzlich wollte ich eine meiner WSGI-Anwendungen in ein Unterverzeichnis verschieben, damit die anderen Verzeichnisse, die verschiedene Skripte enthalten, wie bisher funktionieren. Dazu habe ich die folgende Direktive zu meinem httpd.conf
globalen Namespace hinzugefügt (ich habe auch versucht, sie in den zu setzen VirtualHost
, was die gleichen Auswirkungen hatte):
WSGIScriptAlias /hello/ /var/www/hello/hello.wsgi
Dann habe ich ausgeführt django-admin startproject hello
. Nach dem erneuten Laden der Apache-Konfigurationen kann ich bestätigen, dass http://localhost/hello/
auf einen Django-Willkommensbildschirm verweist. Dann habe ich bearbeitet, hello/urls.py
um die folgende Zeile im urlpatterns
Tupel hinzuzufügen:
url(r'^hello/', 'hello.views.home'),
Als nächstes habe ich hello/views.py mit folgendem Inhalt erstellt:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world")
Leider erhalte ich beim Versuch, die Seite aufzurufen http://localhost/hello/hello
, eine Standard-Apache-404-Meldung und den folgenden Eintrag im Fehlerprotokoll:
[Mon Dec 23 19:49:44 2013] [error] [client 31.182.131.38] Target WSGI script not found or unable to stat: /var/www/hello/hello.wsgihello
Beachten Sie das hello.wsgihello
. Der zweite hello
ist der Text, der nach /hello/
in der URL erscheint. Für http://localhost/hello/unknown
wäre es hello.wsgiunknown
. Hier ist mein hello.wsgi
:
import os
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'hello.settings'
path = '/var/www/hello'
if path not in sys.path:
sys.path.append(path)
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Habe ich etwas falsch gemacht? Wie kann ich das Problem beheben?
Antwort1
Die Dateisyntax hat /var/www/hello/hello.wsgi
mich verwirrt. Wenn man stattdessen auf verweist /var/www/hello/hello.wsgi/
, funktioniert die Konfiguration anscheinend einwandfrei.