Недавно я хотел поместить одно из моих приложений WSGI в подкаталог, чтобы другие каталоги, содержащие различные сценарии, работали, как раньше. Для этого я добавил следующую директиву в свой httpd.conf
в глобальном пространстве имен (также пытался поместить его в VirtualHost
, давшего те же эффекты):
WSGIScriptAlias /hello/ /var/www/hello/hello.wsgi
Затем я побежал django-admin startproject hello
. После перезагрузки конфигураций Apache я могу подтвердить, что http://localhost/hello/
указывает на экран приветствия Django. Затем я отредактировал hello/urls.py
добавить следующую строку в urlpatterns
кортеж:
url(r'^hello/', 'hello.views.home'),
Затем я создал hello / views.py со следующим содержимым:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world")
К сожалению, когда я пытаюсь посетить http://localhost/hello/hello
, Я получаю стандартное сообщение Apache 404 и следующую запись в журнале ошибок:
[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
Обратите внимание hello.wsgihello
. Второй hello
текст, который появляется после /hello/
в URL. Для http://localhost/hello/unknown
, это было бы hello.wsgiunknown
. Вот мой 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()
Я сделал что-то не так? Как мне это исправить?
Синтаксис файла в /var/www/hello/hello.wsgi
смутил меня. Видимо, если указать на /var/www/hello/hello.wsgi/
вместо этого конфигурация работает нормально.