Como instalar TRAC Edgewall con mod_python en Debian Lenny


¿Qué es TRAC?
Trac es un sistema web libre para la gestión de proyectos Software permitiendo el seguimiento de errores y bugs (incidenacias más conocidos por su término en inglés Ticket). Está inspirado en CVSTrac. TRAC es desarrollado y administrado por Edgewall Software. Está escrito en el lenguaje de programación para proyectos WEB denominado Python. Se lo distribuye de acuerdo a una modificación de la licencia BSD que es una licencia libre como lo es la licencia GNU.Trac provee una interfaz para interactuar con Subversión(o cualquier otro sistema de control de versiones). Provee herramientas con ser: Timeline el cual muestra los diferentes acontecimientos del proyecto en un orden cronológico.Permite también establecer varios perfiles de usuarios y facilita la delegación de tareas (tickets) a los diferentes participantes de un proyecto, y configurar las diferentes fases o
flujos de trabajo de un proyecto,como tambien un ROADMAP presenta un mapa del proyecto permitiendo saber el nivel de avance y también que tickets estan por desarrollarse como así tambien saber cuales son los próximos milestones, un milestone es algo asi como un paquete de tickets con un numero de versión al cual los participantes se comprometen a finalizarlo en su totalidad para una fecha preestablecida previamente por el equipo.

Características
Trac permite enlazar información entre una base de datos de errores de software, un sistema de control de versiones y el contenido de un wiki. También sirve como interfaz web de un sistema de control de versiones como Subversion, Git, Mercurial, Bazaar o Darcs. Antes de la verión 0.11 el front-end web de Trac estaba soportado por ClearSilver. A partir de la versión 0.11 comenzó a utilizar un sistema de plantillas web propio llamado Genshi, aunque la compatibilidad con plug-ins basados en ClearSilver se mantendrá a lo largo de varias versiones más.

Instalación y puesta en marcha
Para poder comenzar a trabajar con Trac, sera necesario instalar los siguientes paquetes:
Base de datos:
postgresql-8.3. Debian lenny ya lo trae preinstalado. En caso de no contar con Debian

tipear:
apt-get install postgresql-8.3

Servidor web:
Apache2 con el modulo mod_python: libapache2-mod-python y SVN : libapache2-svn
apt-get install libapache2-mod-python
Luego:

apt-get install ibapache2-svn

Control de versiones:
Instalar subversion y el paquete suvbersion-tools
apt-get install subversion
luego:
apt-get install subversion-tool

Trac
El software trac es provisto por el paquete trac de Debian. En caso de no contar con el
tipear:
apt-get install trac

Creación de la base de datos
Trac requiere la creación de una base de datos sobre la cual almacenar su información. Para ello, crearemos un nuevo usuario al que llamaremos trac en la base de datos, y le asignaremos una base destinada a nuestro proyecto llamada prueba_trac.
Con el usuario postgres (ejecutamos, como administrador,es decir su postgres) los siguientes comandos:
createuser -S -d -R -P -E trac
Esto creará un usuario sin atributos de super-usuario y sin capacidad de crear nuevos usuarios, pero con el permiso de poder crear nuevas bases de datos. Le asignaremos también una contraseña, la cual se nos va aser pedido al crear la cuenta

createdb -O trac prueba_trac "Base de datos de Trac para proyecto de Prueba"

Aquí creamos una base de datos llamada prueba_trac cuyo dueño es el usuario trac

Editamos ahora tenemos que logearnoas ahora como root el archivo /etc/postgresql/8.3/main/pg_hba.conf, y brindamos permisos de acceso agregando una línea con la siguiente información:

#TYPE DATABASE USER CIDR-ADDRESS METHOD
host prueba_trac trac 127.0.0.1/32 md5

Hecho esto, sólo resta reiniciar el servidor Postgres:

/etc/init.d/postgresql-8.3 restart

Instalando el Repositorio SVN
Es hora de crear nuestro repositorio SVN. Vamos a ubicar el repositorio en /var. Los comandos para crear el repositorio son los siguientes:

mkdir /var/svn/prueba
svnadmin create --fs-type fsfs /var/svn/prueba
groupadd svn
addgroup tuusuario svn
chown -R www-data.svn /var/svn/*
chmod -R 770 /var/svn/*


Con esto, nuestro repositorio ya esta listo para ser utilizado.
Configuración de Trac
Ahora que ya tenemos los sistemas base funcionando, nos ha llegado la hora de instalar Trac. Para ello, ejecutamos desde una terminal el siguiente comando:

mkdir -p /var/trac/prueba
trac-admin /var/trac/prueba/ initenv


Este último comando inicializará el sistema Trac. A las siguientes preguntas que nos van apareciendo respondemos:
Project name: Sistema Prueba
Database connection string: postgres://trac:elpassword@localhost/prueba_trac
Repository type: svn
Path to repository: /var/svn/prueba
Si hay problemas con caracteres ASCII como el que sigue
'ascii' codec can't encode character u'\xf1' in position 32: ordinal not in range(128)
Ejecutar:
import sys
sys.setdefaultencoding(‘es_AR.iso88591’)

Esto creará el repositorio, con lo cual podemos enfocarnos en configurar correctamente Apache. Para ello, creamos un fichero llamado /etc/apache2/sites-enabled/trac, y agregamos estas linieas:

SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonInterpreter main
PythonOption TracEnv /var/trac/prueba
PythonOption TracUriRoot /trac/prueba
SetEnv PYTHON_EGG_CACHE /tmp



AuthType Basic
AuthName "Acceso a trac"
AuthUserFile /var/trac/.htpasswd
Require valid-user

Al igual que con Trac, debemos brindar también acceso al SVN vía web. Para ello, creamos y editamos el archivo /etc/apache2/sites-enabled/svn y agregamos lo siguiente:

DAV svn
SVNListParentPath on
SVNParentPath /var/svn/


AuthType Basic
AuthName "Repositorio de Sistema SAC"
AuthUserFile /var/trac/.htpasswd
Require valid-user


Probando la instalación de TRAC
Si bien en nuestra configuración hemos hecho referencia al archivo /var/trac/.htpasswd, aún no lo hemos creado. Este es el archivo que almacena los usuarios y contraseñas del sistema (por comodidad, los usuarios de Trac y SVN serán los mismos). Para crear un usuario desarrollo utilizamos el siguiente comando:

htpasswd -c /var/trac/.htpasswd desarrollo

Finalmente, debemos asegurar que el servidor Apache tenga acceso tanto al Trac como al SVN. Eso lo hacemos con el comando:

chown -R www-data /var/trac/ /var/svn

Ahora sí! podemos acceder a nuestro Trac en http://localhost/trac/prueba, o a nuestro repositorio SVN vía http://localhost/svn/prueba.

Un consejo no hagan copy paste de lo que esta escrito aqui a Linux no le gusta eso a veces. Mejor es escribirlo a mano letra a letra palabra a palabra mientras se van aprendiendo con mucha facilidad la instalación de un Proyecto TRAC. Me ha pasado que por hacer copy paste de los comandos el Trac no funcione y tener que decir cosas como : ¿Que es lo que esta mal?, si lo hice paso a paso tal y cual y no funciona!!!

Se que les servira muchisimo como a mi.