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.conf
espacio 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.py
para agregar la siguiente línea en la urlpatterns
tupla:
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 hello
es el texto que aparece después /hello/
en la URL. Porque http://localhost/hello/unknown
lo 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.wsgi
me confundió. Aparentemente, si se señala /var/www/hello/hello.wsgi/
en cambio, la configuración funciona bien.