¿Aplicación Django WSGI en un subdirectorio?

¿Aplicación Django WSGI en un subdirectorio?

Recientemente, quise colocar una de mis aplicaciones WSGI en un subdirectorio, para que los otros directorios que contienen varios scripts funcionaran como antes. Para hacer eso, agregué la siguiente directiva a mi httpd.confespacio de nombres global (también intenté ponerla en VirtualHost, lo que dio los mismos efectos):

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

Entonces, corrí django-admin startproject hello. Después de recargar las configuraciones de Apache, puedo confirmar que http://localhost/hello/apunta a una pantalla de "bienvenida" de Django. Luego, edité hello/urls.pypara agregar la siguiente línea en la urlpatternstupla:

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

A continuación, creé hello/views.py con el siguiente contenido:

from django.http import HttpResponse

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

Desafortunadamente, cuando intento visitar http://localhost/hello/hello, aparece un mensaje Apache 404 estándar y la siguiente entrada en el registro de errores:

[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

Nota la hello.wsgihello. El segundo helloes el texto que aparece después /hello/en la URL. Porque http://localhost/hello/unknownlo sería hello.wsgiunknown. Aquí está mi 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()

¿Hice algo mal? ¿Cómo lo soluciono?

Respuesta1

La sintaxis del archivo /var/www/hello/hello.wsgime confundió. Aparentemente, si se señala /var/www/hello/hello.wsgi/en cambio, la configuración funciona bien.

información relacionada