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?

¿Fue útil?

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 o RedirectMatch 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top