Pergunta

Fui vendido em mod_wsgi e apache em vez de mod_python.Tenho todas as partes instaladas (django, apache, mod_wsgi), mas tive problemas na implantação.

Estou no osx 10.5 com apache 2.2 e django 1.0b2, mod_wsgi-2.3

Meu aplicativo se chama tred.

Aqui estão os arquivos relevantes:httpd-vhosts (incluído em 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()

Quando eu for para http://tred Recebo uma listagem de diretório em vez do site renderizado.Acho que segui os tutoriais corretamente, mas obviamente não está certo.O que posso fazer para que isso funcione?

Foi útil?

Solução

O que acontece se você remover o Alias / diretiva?

Outras dicas

Observe que as diretivas Alias ​​e WSGIScriptAlias ​​não têm a mesma precedência.Portanto, eles não serão processados ​​na ordem de arquivo conforme estão escritos.Em vez disso, todas as diretivas Alias ​​têm precedência sobre as diretivas WSGIScriptAlias.Assim, não teria importância se o Alias ​​para '/' aparecesse depois de WSGIScriptAlias, ele ainda teria precedência.

Funciona.Não tenho ideia do porquê, mas acontece.

Para referência futura:

Funciona porque o Apache processa as diretivas de alias em ordem e usa a primeira correspondência.Estava sempre batendo Alias /, que corresponderá a qualquer coisa, antes WSGIScriptAlias.

De mod_alias documentação:

Primeiro, todos os Redirecionamentos são processados ​​antes dos Aliases serem processados ​​e, portanto, uma solicitação que corresponda a um Redirect ou RedirectMatch nunca terá Aliases aplicados.Segundo, os Aliases e Redirecionamentos são processados ​​na ordem em que aparecem nos arquivos de configuração, com a primeira correspondência tendo precedência.

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

você está tentando hospedar a pasta /var/www/ do Apache e o aplicativo Django na raiz (/).Como a diretiva Alias ​​tem precedência sobre WSGIScriptAlias, ela está renderizando o diretório Apache.

você pode tentar hospedar o aplicativo Django em /app.Como alternativa, hospede a pasta /var/www/ em um local diferente, como /public

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top