oscarmlage oscarmlage

Mercurial sobre Apache

Written by oscarmlage on

Mi predilección por Mercurial ha quedado patente en algún que otro post, así que una vez estamos conforme con nuestro servidor de versiones llega el momento de dar un paso más. Intentaremos configurar un interfaz web para mostrar el código a todo el mundo (una especie de Trac solo para código y adaptado a Mercurial).

El proceso es tan sencillo como crear otro VirtualHost en tu Apache con unas características un poco especiales porque en vez de tirar de archivos dinámicos (.php, .asp…) vamos a tirar de un cgi en Python, así que la configuración sería algo así:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /home/www/userlinux/sd/mercurial/cgi-bin/
        ServerName hg.userlinux.net
        ScriptAlias / /home/www/userlinux/sd/mercurial/cgi-bin/hgwebdir.cgi/
        <Directory "/home/www/userlinux/sd/mercurial/cgi-bin/">
                SetHandler cgi-script
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog  /home/www/userlinux/sd/mercurial/logs/error.log
        CustomLog /home/www/userlinux/sd/mercurial/logs/access.log combined
</VirtualHost>

Fijaos que el archivo hgwebdir.cgi es el que lleva todo el trabajo, y ¿de dónde lo sacamos?. Si tenemos instalado Mercurial (cosa que se da por supuesta), ya lo tenemos en el sistema, tan solo hemos de copiarlo a su nueva ubicación y tan contentos:

 

# cp /usr/share/doc/mercurial/examples/hgwebdir.cgi /home/www/userlinux/sd/mercurial/cgi-bin/ # chmod a+x /srv/hg/cgi-bin/hgwebdir.cgi

Ahora vamos a configurar alguna que otra preferencia del interfaz web, para ello creamos al mismo nivel del cgi un archivo de configuración llamado hgweb.config:

[paths]
rcms-plugin-prueba = /home/mercurial/rcms-plugin-prueba/
[web]
style = gitweb
allow_archive = bz2 gz zip
maxchanges = 200

En él -como veis- definimos los repositorios que vamos a mostrar (nombre = ruta) y varias opciones de la web como su theme, si permitimos o no descargar el contenido del repositorio…

Ojo con los permisos, tanto del archivo de configuración como de los repositorios, a los que ha de acceder el usuario propietario de Apache para leer. Un reinicio de Apache bastaría para tener el repositorio listo: