Django WSGI-Anwendung in einem Unterverzeichnis?

Django WSGI-Anwendung in einem Unterverzeichnis?

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.confglobalen 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.pyum die folgende Zeile im urlpatternsTupel 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 helloist der Text, der nach /hello/in der URL erscheint. Für http://localhost/hello/unknownwä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.wsgimich verwirrt. Wenn man stattdessen auf verweist /var/www/hello/hello.wsgi/, funktioniert die Konfiguration anscheinend einwandfrei.

verwandte Informationen