Qual é a melhor maneira de configurar um servidor Django para servir múltiplos sites?

3

Atualmente, uso o Apache 2.0 e o FastCGI para servir meus sites do Django (eu hospedo vários sites a partir de um único servidor / IP). Cada site tem seu próprio processo FastCGI que impede que o Apache bifurque cópias múltiplas que podem usar muita memória e significa que eu posso reiniciar um único back end do site do Django sem reiniciar o Apache.

Esta é uma maneira sensata de fazer as coisas e existem outras / melhores alternativas?

    
por Jon Cage 28.05.2009 / 15:18

3 respostas

4

Você definitivamente precisa do mod-wsgi.

O mod-wsgi é desenvolvido pelos mesmos cérebros que fizeram o mod-python há muitos anos. O mod-wsgi agora é recomendado sobre o mod-python para todos os frameworks de aplicativos modernos, incluindo o django.

Basicamente, o mod-wsgi tem dois modos de operação: embedded (mais rápido - como o mod-python apenas mais rápido) ou daemon (como o fast-cgi).

No modo daemon, é preferível a fast-cgi porque:

  1. não requer partes móveis adicionais (como flup)
  2. você não precisa parar e iniciar os intérpretes de python, isso é feito por mod-wsgi.

No modo incorporado, é preferível mod-python porque:

  1. O desenvolvimento do mod-python parou em favor do mod-wsgi
  2. O
  3. mod-wsgi irá eventualmente suportar o python 3k.
  4. mod-wsgi é mais rápido que mod-python

Veja a documentação: link

/ Richy

    
por 30.05.2009 / 08:50
0

Antecipadamente eu uso nginx e supervisord (pequeno howto na Rússia link )

    
por 28.05.2009 / 15:33
0

Eu uso o Apache2 e mod_python com bom sucesso. Você acabou de adicionar algum aplicativo de django. coisas específicas para o apache parecidas com isso (exemplo tirado de um VHost rodando o ReviewBoard do review-board.org):

<Location "/reviewboard">
    SetHandler mod_python
    PythonPath "['/usr/lib/python2.4/site-packages/django'] + ['/usr
/local/reviewboard'] + ['/usr/local/reviewboard/djblets', '/usr/local'] + sys.pa
th"
    SetEnv DJANGO_SETTINGS_MODULE reviewboard.settings
    PythonHandler django.core.handlers.modpython
    PythonAutoReload Off
    PythonDebug Off
    PythonInterpreter reviewboard
</Location>

A configuração importante neste caso é a exclusividade do 'PythonInterpreter' em seus diferentes aplicativos django.

Boa sorte.

    
por 28.05.2009 / 17:36