Mercurial na web com apache e fastcgi

por Walter Cruz on 01/06/2008
in Python

Um efeito interessante do padrão WSGI é que ele pode tornar a vida dos sysadmins mais fácil. Por exemplo, publicar uma aplicação web em Python, com WSGI consiste apenas de:

  1. Descobrir como instanciar essa aplicação (específico de aplicação pra aplicação)
  2. Transformá-la em um cliente/middleware WSGI
  3. Publicá-la, usando a forma desejada.

Abaixo, segue um exemplo de uma publicação do mercurial, no apache, usando fastcgi.

#!/usr/bin/env python2.5
#
# An example CGI script to export multiple hgweb repos, edit as necessary
import site
import sys
site.addpackage('/home/usuario/lib/python2.5/site-packages/','easy-install.pth',set(sys.path))

# enable importing on demand to reduce startup time
from mercurial import demandimport; demandimport.enable()

# If you'd like to serve pages with UTF-8 instead of your default
# locale charset, you can do so by uncommenting the following lines.
# Note that this will cause your .hgrc files to be interpreted in
# UTF-8 and all your repo files to be displayed using UTF-8.
#
#import os
#os.environ["HGENCODING"] = "UTF-8"

from mercurial.hgweb.hgwebdir_mod import hgwebdir
import mercurial.hgweb.wsgicgi as wsgicgi
from flup.server.fcgi import WSGIServer

application = hgwebdir('hgweb.config')
WSGIServer(application, debug = True).run()

E o hgweb.config:

[paths]
repositorio1 = /home/usuario/hg/repositorio1
repositorio2 = /home/usuario/hg/repositorio2

Compare com o deploy de Pylons via fastcgi, por exemplo. Depois de termos instanciado a aplicação (e isso varia de framework ou aplicativo), a forma de executar como fastcgi no apache é a mesma, usando o flup. E isso serviria para qualquer aplicação que disponibilizasse uma 'saída' WSGI. Prático não?

Endereço de trackback para este post

Trackback URL (clique direito e copie atalho/localização do link)

Sem feedback para esse post ainda

    Share Your Thoughts


    Seu endereço de e-mail não será revelado nesse site.

    Sua URL será exibida.
    PobreExcelente
    (Quebras de linha se tornam <br />)
    (Nome, e-mail & website)
    (Permitir que usuários o contatem através de um formulário eletrônico (seu e-mail não será exibido.))
    Subscribe to comments by email

    You can just use your OpenID to provide your name, e-mail and url.