Setup o Django com WSGI e apache

votos
8

Eu tenho vendido em mod_wsgi e apache em vez de mod_python. Eu tenho todas as peças instaladas (django, apache, mod_wsgi), mas ter executado em um desdobramento problema.

Estou no OSX 10.5 com Apache 2.2 e django 1.0b2, mod_wsgi-2.3

Meu aplicativo é chamado tred.

Aqui estão os arquivos relevantes: httpd-vhosts (incluído no httpd-conf)

NameVirtualHost tred: 80



  ServerName tred

  Alias ​​/ admin_media /usr/lib/python2.5/site-packages/django/contrib/admin/media

  
    Fim permitir, negar
    Allow from all
  

  Alias ​​/ media / Users / DMG / Sites / tred / media

  
    Fim permitir, negar
    Allow from all
  

  Alias ​​/ / Users / DMG / Sites / tred /

  
        Fim permitir, negar
        Allow from all
    

  WSGIScriptAlias ​​/ /Users/dmg/Sites/tred/mod_wsgi-handler.wsgi

  WSGIDaemonProcess tred usuário = grupo DMG = processos pessoal = 1 = 10 linhas
  WSGIProcessGroup tred


mod_wsgi-handle.wsgi

sys importação
import os

sys.path.append (os.path.dirname (os.path.abspath (__ file__)) + '/ ..')
os.environ [ 'DJANGO_SETTINGS_MODULE'] = '' tred.settings

django.core.handlers.wsgi importação

aplicação = django.core.handlers.wsgi.WSGIHandler ()

Quando eu ir para http: // tred eu recebo uma listagem de diretório em vez do site prestados. Eu acho que eu tenho seguido os tutoriais corretamente, mas é óbvio que não é certo. O que posso fazer para fazer este trabalho?

Publicado 31/08/2008 em 13:03
fonte usuário
Em outras línguas...                            


4 respostas

votos
7

Nota que as directivas Alias ​​e WSGIScriptAlias ​​não têm a mesma precedência. Assim, eles não serão processados ​​a fim de arquivo como está escrito. Em vez disso, todas as directivas Alias ​​obter precedência sobre directivas WSGIScriptAlias. Assim, não teria importância se o Alias ​​para '/' apareceu depois WSGIScriptAlias, ele ainda teria tomado precedência.

Respondeu 24/06/2009 em 13:39
fonte usuário

votos
6

O que acontece se você remover a Alias /directiva?

Respondeu 31/08/2008 em 19:20
fonte usuário

votos
5

Funciona. Eu não tenho idéia por que, mas ele faz.

Para referência futura:

Ele funciona porque Apache processa directivas de alias em ordem, e utiliza o primeiro jogo. Ele estava sempre batendo Alias /, o que irá corresponder a qualquer coisa, antes WSGIScriptAlias.

A partir da mod_aliasdocumentação :

Primeiro, todos os redirecionamentos são processados antes Aliases são processados e, portanto, um pedido que corresponde a um Redirectou RedirectMatchnunca terá Aliases aplicada. Em segundo lugar, as Aliases e redireciona são processados na ordem em que aparecem nos arquivos de configuração, com o primeiro jogo tendo precedência.

Respondeu 31/08/2008 em 23:51
fonte usuário

votos
2

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

você está tentando hospedar www / pasta apache / var / eo app Django tanto na raiz (/). Desde directiva Alias ​​tem precedência sobre WSGIScriptAlias, ele está prestando diretório apache.

você pode tentar sediar a aplicação Django em / app. Alternativamente sediar a www / pasta / var / em um local diferente, como / public

Respondeu 22/07/2013 em 21:14
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more