Configurar Django con WSGI y Apache.
Pregunta
Me vendieron mod_wsgi y apache en lugar de mod_python.Tengo todas las partes instaladas (django, apache, mod_wsgi) pero tuve un problema al implementar.
Estoy en osx 10.5 con apache 2.2 y django 1.0b2, mod_wsgi-2.3
Mi aplicación se llama tred.
Aquí están los archivos relevantes:httpd-vhosts (incluido en httpd-conf)
NameVirtualHost tred:80 ServerName tred Alias /admin_media /usr/lib/python2.5/site-packages/django/contrib/admin/media Order allow,deny Allow from all Alias /media /Users/dmg/Sites/tred/media Order allow,deny Allow from all Alias / /Users/dmg/Sites/tred/ Order allow,deny Allow from all WSGIScriptAlias / /Users/dmg/Sites/tred/mod_wsgi-handler.wsgi WSGIDaemonProcess tred user=dmg group=staff processes=1 threads=10 WSGIProcessGroup tred
mod_wsgi-handle.wsgi
import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') os.environ['DJANGO_SETTINGS_MODULE'] = 'tred.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
Cuando voy a http://tred Obtengo una lista de directorio en lugar del sitio web representado.Creo que he seguido los tutoriales correctamente pero obviamente no está bien.¿Qué puedo hacer para que esto funcione?
Solución
¿Qué pasa si quitas el Alias /
¿directiva?
Otros consejos
Tenga en cuenta que las directivas Alias y WSGIScriptAlias no tienen la misma prioridad.Por lo tanto, no se procesarán en el orden de archivo tal como están escritos.En cambio, todas las directivas Alias tienen prioridad sobre las directivas WSGIScriptAlias.Por lo tanto, no habría importado si el alias de '/' apareciera después de WSGIScriptAlias, aún así habría tenido prioridad.
Funciona.No tengo idea de por qué, pero así es.
Para futura referencia:
Funciona porque Apache procesa directivas de alias en orden y utiliza la primera coincidencia.siempre estaba golpeando Alias /
, que coincidirá con cualquier cosa, antes WSGIScriptAlias
.
Desde el mod_alias
documentación:
En primer lugar, todos los redireccionamientos se procesan antes de que se procesen los alias y, por lo tanto, una solicitud que coincida con un
Redirect
oRedirectMatch
nunca se le aplicarán alias.En segundo lugar, los alias y redirecciones se procesan en el orden en que aparecen en los archivos de configuración, teniendo prioridad la primera coincidencia.
intenta seguir este tutorial - http://singlas.in/tutorial-de-5-pasos-para-usar-django-with-apache-and-mod_wsgi/
está intentando alojar la carpeta apache /var/www/ y la aplicación Django en la raíz (/).Dado que la directiva Alias tiene prioridad sobre WSGIScriptAlias, representa el directorio de Apache.
puedes intentar alojar la aplicación Django en /app.Alternativamente, aloje la carpeta /var/www/ en una ubicación diferente como /public