2008-08-31 30 views
8

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.Configuración django con WSGI y apache

estoy en OSX 10.5 con Apache 2.2 y Django 1.0b2, mod_wsgi-2.3

Mi aplicación se llama TRED.

Éstos son los archivos relevantes: httpd-host virtuales (incluido en el 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 consigo un listado de directorio en lugar del sitio web prestado. Creo que seguí los tutoriales correctamente, pero obviamente no está bien. ¿Qué puedo hacer para que esto funcione?

Respuesta

6

¿Qué sucede si elimina la directiva Alias /?

5

Funciona. No tengo idea de por qué, pero lo hace.

Para futuras consultas:

Funciona porque Apache procesa directivas con el fin de alias, y utiliza el primer partido. Siempre estaba golpeando Alias /, que coincidirá con cualquier cosa, antes de WSGIScriptAlias.

Desde el mod_alias documentation:

En primer lugar, todas las redirecciones se procesan antes que se procesan Alias, y por lo tanto una petición que coincide con un alias nunca habrá aplicado Redirect o RedirectMatch. 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.

7

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.

2

intente seguir este tutorial - http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/

que está tratando de acoger var/www/carpeta de apache/y la aplicación de Django tanto en la raíz (/). Como la directiva Alias ​​tiene prioridad sobre WSGIScriptAlias, está renderizando el directorio apache.

puede intentar alojar la aplicación django en/app. Alternativamente, aloje la carpeta/var/www/en una ubicación diferente como/public

Cuestiones relacionadas