Aplicativo Django WSGI em um subdiretório?

Aplicativo Django WSGI em um subdiretório?

Recentemente, eu quis colocar um dos meus aplicativos WSGI em um subdiretório, para que os outros diretórios que contêm vários scripts funcionassem como antes. Para fazer isso, adicionei a seguinte diretiva ao meu httpd.confnamespace global (também tentei colocá-la no VirtualHost, que deu os mesmos efeitos):

WSGIScriptAlias /hello/ /var/www/hello/hello.wsgi

Então eu corri django-admin startproject hello. Depois de recarregar as configurações do Apache, posso confirmar que http://localhost/hello/aponta para uma tela de "boas-vindas" do Django. Então, editei hello/urls.pypara adicionar a seguinte linha na urlpatternstupla:

url(r'^hello/', 'hello.views.home'),

Em seguida, criei hello/views.py com o seguinte conteúdo:

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello world")

Infelizmente, quando tento visitar http://localhost/hello/hello, recebo uma mensagem padrão do Apache 404 e a seguinte entrada no log de erros:

[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

Note o hello.wsgihello. O segundo helloé o texto que aparece depois /hello/na URL. Pois http://localhost/hello/unknownseria hello.wsgiunknown. Aqui está o meu 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()

Fiz algo de errado? Como faço para corrigir isso?

Responder1

A sintaxe do arquivo /var/www/hello/hello.wsgime confundiu. Aparentemente, se apontarmos para /var/www/hello/hello.wsgi/isso, a configuração funciona bem.

informação relacionada