/ / Setup django com WSGI e apache - python, django, apache, mod-wsgi

Setup django com WSGI e apache - python, django, apache, mod-wsgi

Eu fui vendido em mod_wsgi e apache ao invés de mod_python. Eu tenho todas as partes instaladas (django, apache, mod_wsgi), mas tenho um problema em implantar.

Estou no osx 10.5 com o apache 2.2 e o 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   Ordem permitir, negar Permitir de todos   Alias ​​/ media / Usuários / dmg / Sites / tred / media   Ordem permitir, negar Permitir de todos   Alias ​​/ / Usuários / dmg / Sites / tred /   Ordem permitir, negar Permitir de todos   WSGIScriptAlias ​​/ /Users/dmg/Sites/tred/mod_wsgi-handler.wsgi  WSGIDaemonProcess tred user = dmg group = funcionários process = 1 threads = 10 WSGIProcessGroup tred


mod_wsgi-handle.wsgi

import sys importar os  sys.path.append (os.path.dirname (os.path.abspath (__ file__)) + "/ ..") os.environ ["DJANGO_SETTINGS_MODULE"] = "tred.settings"  import django.core.handlers.wsgi  aplicativo = django.core.handlers.wsgi.WSGIHandler ()

Quando eu for para http://tred Eu 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?

Respostas:

6 para resposta № 1

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


7 para resposta № 2

Observe que as diretivas Alias ​​e WSGIScriptAliasnão tem a mesma precedência. Assim, eles não serão processados ​​na ordem de arquivo conforme escrito. Em vez disso, todas as diretivas Alias ​​têm precedência sobre as diretivas WSGIScriptAlias. Assim, não teria importado se o Alias ​​para "/" aparecesse após o WSGIScriptAlias, ele ainda teria precedência.


5 para resposta № 3

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

Para referência futura:

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

De mod_alias documentação:

Primeiro, todos os redirecionamentos são processados ​​antes que os aliases sejam 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.


2 para resposta № 4

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

você está tentando hospedar a pasta apache / var / www / 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. Alternativamente, hospede a pasta / var / www / em um local diferente como / public