Mercurial na web com apache e fastcgi

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?

This entry was posted in Python and tagged , , , . Bookmark the permalink.

3 Responses to Mercurial na web com apache e fastcgi

  1. Vinny says:

    That’s cleared my thoughts. Thanks for cotnributing.

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>