preload
May 22

Trac es un “gestor de proyectos” via web para programadores/desarrolladores. Esta es la web del proyecto Trac. En ella podemos encontrar casi todos los aspectos tanto como la instalación como la configuración de sus opciones.

Básicamente a mi las funcionalidades de trac que me han interesado han sido las siguientes:

– Sistema de Tickets
– Navegación por repositorios SVN
– Enlace entre Tickets y SVN

Yo lo he instalado teniendo en cuenta el siguiente entorno (algunas de estas cosas si no se tienen instaladas se deberian instalar):

– Distribución Linux Debian Etch
– Apache 2
– MySQL 5
– python 2.4

Necesitaremos crear una base de datos en MySQL para el trac, así como un usuario, y hemos de recordar de darle permisos a ese usuario para acceder a esa tabla.

Véamos primero cuales son las dependencias, para ver que paquetes y/o componentes necesitamos a priori antes de meternos con la instalación propiamente dicha de trac.

– modulo de python para mysql
– modulo de python para subversion
– modulo de apache para python
– modulo de apache para autentificación mediante mysql

sudo apt-get install python-mysqldb python-subversion libapache2-mod-python

para que funcione el mod_python, hemos de ir a /etc/apache2/mods-enabled y comprobar que esta activado el modulo, lo que hará falta seguramente para que funcione es reiniciar apache.

hasta aquí las instalaciones que podemos hacer a través de apt-get, lo peor del tema es que si queremos tener la autentificación mediante mysql en debian etch, no hay un paquete especifico que puedas instalar a través de apt, lo que comporta bajar el modulo de apache en código fuente, compilarlo y enlazarlo desde apache. digamos que es un currillo, vamos a verlo.

para poder compilar el modulo de apache para mysql necesitamos unas dependencias, que son las siguientes y se pueden instalar a traves de apt.

sudo apt-get install libmysql++-dev patch

en funcion de la versión de apache que tengamos (threaded o preforked), hemos de instalar alguno de estos dos paquetes tambien a través de apt. como sabemos que version tenemos, pues así:

dpkg -l | grep apache2

sencillamente en la salida de este comando miramos si tenemos preforked o threaded y instalamos o bien apache2-threaded-dev o bien apache2-prefork-dev.

sudo apt-get install apache2-threaded-dev | apache2-prefork-dev

nos arremangamos que viene lo divertido, descargamos el codigo fuente del módulo :

wget http://mesh.dl.sourceforge.net/sourceforge/modauthmysql/mod_auth_mysql-3.0.0.tar.gz

la mala noticia es que si descargamos solamente eso y lo intentamos compilar, va a pasar lo que me pasó a mi al principio, que es para flipar con la de errores que da a la hora de intentar compilar el modulo, por lo tanto y tras horas y horas de búsqueda (bueno vale no fueron tantas horas) encontré una posible solución y consiste en un archivo de diff, que cambiara todas las lineas que no le gustan al compilador, por otras que le gustan más y que por lo tanto nos permitiran compilar el modulo sin problemas. descargamos el patch con wget por ejemplo.
descomprimimos el modulo y le aplicamos el patch

tar xvfz mod_auth_mysql-3.0.0.tar.gz
patch -p0 < mod_auth_mysql-3.0.0-apr1x.patch\?view\=co

compilamos el modulo

cd mod_auth_mysql-3.0.0
apxs2 -c -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c
apxs2 -i mod_auth_mysql.la

esto únicamente nos ha creado el modulo en el sistema operativo, ahora necesitamos hacer que apache se entere de que tiene ese modulo y que lo puede usar. por lo tanto nos tenemos que ir a /etc/apache2/mods-enabled y crear un fichero que se llame por ejemplo mod_auth_mysql.load y poner dentro de el lo siguiente:

LoadModule mysql_auth_module /usr/lib/apache2/modules/mod_auth_mysql.so

una vez hecho esto, hemos de activar el modulo

cd /etc/apache2/mods-available
ln -s ../mods-enabled/mod_auth_mysql.load mod_auth_mysql.load

solo nos queda reiniciar apache para que reconozca el nuevo modulo.

ahora que ya tenemos todas las dependencias ya estamos listos para instalar trac propiamente dicho, bueno, nos falta la última dependencia, el instalador de trac ;) y lo usamos de la siguiente forma por ejemplo:

sudo python ez_setup.py
sudo easy_install Trac==0.11rc1
easy_install http://svn.edgewall.org/repos/trac/tags/trac-0.11rc1

y con esto ya tenemos trac instaladito.

ahora viene la gracia, de que nos sirve tenerlo instalado? pues de nada si no le comenzamos a dar faena.

yo para el caso he creado un usuario en mi debian para trac de forma que tengo /home/trac y será alli donde ire poniendo los proyectos, de forma que si tengo myproject el path a ese proyecto será /home/trac/myproject, pero estos directorios no los hemos de crear nosotros, de eso se encarga el señor trac-admin que ya deberíamos tener instalado en nuestro sistema.

véamos como va esto.

trac-admin /path/to/my/project initenv

este programa nos pregunta, el nombre del proyecto, la base de datos con la que lo queremos linkar, la pagina de las opciones de environment de trac a mi concretamente me fue muy útil para el linkado del trac con la base de datos, ya que te explica como tienes que especificarle la base de datos que quieres usar. más tarde nos pregunta, el tipo de sistema de control de versiones que utilizamos o utilizaremos para el proyecto y la localización del repositorio subversion.

una vez hecho esto ya tenemos creado el trac para nuestro proyecto, pero como entramos via web a verlo?
pues nada, vamos a preguntarle al amigo apache como hacemos eso, o mejor dicho, vamos a decirle como queremos que lo haga.

nos vamos a /etc/apache2/sites-available y editamos nuestro fichero default añadiendo algo de este estilo


SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /path/to/myproject
PythonOption TracUriRoot /myproject

para despistaos… mejor darle permisos de lectura a apache en /path/to/myproject, para no tener problemas ;)

sudo chown -R www-data:www-data /path/to/myproject

y ahora si reiniciamos apache y escribimos esto en el navegador www.midominio.com/myproject ya tenemos el trac!!! muy bien! ahora el problema es que de igual modo que nosotros podemos verlo sin introducir contraseña y usuario alguno, lo puede ver cualquiera, esto puede ser un arma de doble filo, por lo tanto vamos a entrar en el tema de la autentificación de usuarios, utilizando mysql y la misma base de datos que usamos para este trac.

modificamos el fichero /etc/apache2/sites-available/default y añadimos estas lineas a lo que ya habíamos puesto antes para que apache nos mostrara el trac del proyecto:

AuthType Basic
AuthName “escriba su nombre cachondo”
AuthMySQLHost
AuthMySQLPort AuthMySQLUser
AuthMySQLPassword AuthMySQLDB
AuthMySQLUserTable
AuthMySQLNameField
AuthMySQLPasswordField
AuthMySQLEnable on
AuthMySQLPwEncryption
AuthMySQLSocket “
AuthBasicAuthoritative Off
require valid-user

nos hemos de acordar de reiniciar apache para que coja los cambios que hemos echo.

y claro está, en la tabla de usuarios deben haber las ocurrencias, por ejemplo introducimos pepe como nombre de usuario y pepote como password en la tabla. nos vamos a www.midominio.com/myproject y nos saltara una ventanita de autentificacion donde tras introducir pepe como usuario y pepote como password podemos ver el trac del proyecto, si no no ;)

como dice matías prats, así son las cosas y así se las hemos contado.




4 Responses to “Trac (debian)”

  1. marcos Says:

    Muy bien explicado, lo pondré en trinity un dia de estos, que tengo el módulo de la auth de mysql un poco petado :)

    Gracias! ;-)

  2. bpm Says:

    vaia currada de post!, jo fa temps vaig remenar una mica el trac, esta molt currat, pero vaig trobar a faltar lo de tenir tots els projectes agrupats com fa el mantis

    Nosaltres ara tenim montat

    mantis
    integrat amb :
    svn + viewsvn + mediawiki

    ah! i a part un openfire per missatgeria interna !

    De fet la nova versio de mantis en desenvolupament he vist q porta plugins per integrar-se amb un chat irc , un blog o fins i tot amb el twitter pq els teus followers sapiguen com treballes i tanques bugs xD

  3. Angel Says:

    joer no ho sabia pas… que amb el mantis es poguessin fer tantes coses… jo ara que ja tinc el trac tinc a feines pendents mirar els plugins que te i potser fer-li uns tweaks ;) python r00lz!!!

  4. AlexM Says:

    Your blog is interesting!

    Keep up the good work!

Leave a Reply

*