tutorial - django python 3
Configurar django con WSGI y apache (4)
Me vendieron mod_wsgi y apache en lugar de mod_python. Tengo todas las piezas instaladas (django, apache, mod_wsgi) pero me he encontrado con un problema de implementación.
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 directorios en lugar del sitio web procesado. Creo que seguí los tutoriales correctamente, pero obviamente no está bien. ¿Qué puedo hacer para que esto funcione?
Funciona. No tengo idea de por qué, pero lo hace.
Para futura referencia:
Funciona porque Apache procesa las directivas de alias en orden y usa la primera coincidencia. Siempre estaba presionando Alias /
, que coincidirá con cualquier cosa, antes de WSGIScriptAlias
.
De la documentación de mod_alias
:
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
o unRedirect
RedirectMatch
nunca tendrá alias aplicados. En segundo lugar, los Alias y Redireccionamientos se procesan en el orden en que aparecen en los archivos de configuración, teniendo prioridad el primer partido.
Tenga en cuenta que las directivas Alias y WSGIScriptAlias no tienen la misma precedencia. Por lo tanto, no se procesarán en orden de archivos como está escrito. En cambio, todas las directivas de Alias tienen precedencia sobre las directivas WSGIScriptAlias. Por lo tanto, no hubiera importado si el Alias para ''/'' apareció después de WSGIScriptAlias, todavía habría tenido prioridad.
intente seguir este tutorial - http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/
Está intentando alojar la carpeta apache / var / www / y la aplicación Django tanto en la raíz (/). Como la directiva Alias tiene prioridad sobre WSGIScriptAlias, está renderizando el directorio apache.
puedes intentar alojar la aplicación django en / app. Alternativamente, aloje la carpeta / var / www / en una ubicación diferente como / public
¿Qué sucede si elimina la directiva Alias /
?