Procedimiento para la creación de un proyecto con Trac© con Apache2

Introducción

Trac© (http://trac.edgewall.org/) es un gestor de proyectos de software, que aunque es un poco limitado, en ciertos ambitos puede ser muy eficiente. Su característica principal es la de tratar un proyecto como una serie de metas (milestones), las que están descritas por una serie de tareas(tickets) a cumplir, son el cumplimiento de estos tickets lo que mide el porciento de cumplimiento de la meta. Existen tres tipos de tickets: tarea, defecto y mejora. Obviamente se le puede añadir un nuevo ticket a un milestone en cualquier momento.
Cada cambio a un ticket queda registrado, de manera que es incluso posible, y de hecho así lo hacen en su propio sitio, usar este historial a manera de forum, en donde los usuarios o testers dan sus opiniones sobre un defecto o tarea y el desarrollador va dando parte de los avances. Por otra parte cualquier cambio, ya sea en los tickets, o en la wiki (hay una wiki) queda registrado.
Como ya se dice arriba, Trac© cuenta con una wiki, de manera que es posible ir añadiendo contenido, de manera que el sitio del proyecto albergue gran cantidad de información sobre el mismo, lo cual puede ser muy conveniente para los usuarios.
Además Trac© está integrado con subversion, de manera que es posible hacer consultas al repositorio y ver el historial de cambios al mismo.


Instalar Trac©

Como servidor se utilizará una maquina con Debian GNU/Linux v4.0r0.
Es necesario tener instalado:

  • Apache2
  • libapache2-mod-python 3.3.1
  • postgresql 8.1
  • python-psycopg2
  • subversion
  • python-subversion
  • python 2.4.4
  • python-clearsilver
  • subversion-tools
  • trac-0.10.4
Luego de descomprimir trac se debe ejecutar:
#./setup.py install


Creación de un proyecto

Antes de crear el proyecto es necesario crear la base de datos en postgresql, así como un usuario que será el encargado de acceder a la base de datos, es posible usar un usuario para todos los proyectos o uno distinto cada vez, para este caso:
usuario:trac
contraseña:trac
base de datos: ejemplo_trac
Además es necesario tener ya creado el repositorio SVN, en este caso estará en /var/svn
Crearemos el sitio en la carpeta: /var/www/trac
#trac-admin /var/www/trac/ejemplo initenv
Ahora empieza una sesion interactiva en la que Trac© nos hace una serie de preguntas:
Project Name [My Project]> ejemplo
Database connection string [sqlite:db/trac.db]> postgres://trac:trac@localhost/ejemplo_trac
La url de la base de datos está conformada de la siguiente forma:
postgres://usuario:contraseña@url.servidor/base de datos
Repository type [svn]>
Este lo dejamos en blanco
Path to repository [/path/to/repos]> /var/svn
Este es el camino al repositorio svn que será usado.
Templates directory [/usr/share/trac/templates]>
También se deja en blanco
Si todo ha salido bien ya estará creado el proyecto y la base de datos está poblada.


Habilitar el sitio en Apache

Para que el sitio esté completamente funcional es necesario agregarle lo siguiente al fichero /etc/apache2/httpd.conf:


SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/www/trac/ejemplo
PythonOption TracUriRoot /trac/ejemplo
PythonDebug on


Luego de reiniciar el apache:
#/etc/init.d/apache2 restart

El sitio ya estará en funciones.
NOTA: El usuario www debe tener permisos de lectura y escritura en /var/www.


Creación de usuarios

Se utilizará la utenticacion de apache, para lo cual se creará la carpeta /var/www/passwds/
Luego se hará la siguiente operación:
# htpasswd -c /var/www/passwds/pass usuario_ejemplo
New password:
Re-type new password:
Adding password for user usuario_ejemplo
La opción c de htpaswd solo es necesaria para crear el fichero con las contraseñas, luego no hace falta.
Ya el usuario está creado, ahora hay que habilitar el login para el sitio, para lo cual se le añadirá lo siguiente a /etc/apache2/httpd.conf:


AuthType Basic
AuthName "ejemplo"
AuthUserFile /var/www/passwds/pass
Require valid-user

Se reinicia el apache nuevamente y listo.

NOTA: El fichero de contraseñas se hizo general en /ww/passwds/pass, pero es posible, e incluso aconsejable, crear un fichero de contraseñas para cada proyecto, solo basta con crearlo en la carpeta del sitio y poner el camino en httpd.conf.
Otorgar permisos
El nuevo usuario hereda los permisos del usuario anonymous, el cual solo puede ver todas las secciones y solo puede crear tickets, como se muestra más abajo.
Para otorgarle permisos más específicos es necesario usar trac-admin:
# trac-admin /var/www/trac/ejemplo/
Welcome to trac-admin 0.10.4
Interactive Trac administration console.
Copyright (c) 2003-2006 Edgewall Software

Type: '?' or 'help' for help on commands.

Trac [/var/www/trac/ejemplo]>permission list

User Action
--------------------------
anonymous BROWSER_VIEW
anonymous CHANGESET_VIEW
anonymous FILE_VIEW
anonymous LOG_VIEW
anonymous MILESTONE_VIEW
anonymous REPORT_SQL_VIEW
anonymous REPORT_VIEW
anonymous ROADMAP_VIEW
anonymous SEARCH_VIEW
anonymous TICKET_CREATE
anonymous TICKET_MODIFY
anonymous TICKET_VIEW
anonymous TIMELINE_VIEW
anonymous WIKI_CREATE
anonymous WIKI_MODIFY
anonymous WIKI_VIEW


Available actions:
BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, FILE_VIEW, LOG_VIEW,
MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE, MILESTONE_MODIFY,
MILESTONE_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE, REPORT_MODIFY,
REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW, SEARCH_VIEW,
TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, TICKET_MODIFY,
TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, WIKI_CREATE,
WIKI_DELETE, WIKI_MODIFY, WIKI_VIEW

Aqui se ven los permisos de anonymous, y todos los permisos posibles, si se desea, por ejemplo, que el usuario pueda editar la información de los milestones, se hace lo siguiente:
Trac [/var/www/trac/ejemplo]>permission add usuario_ejemplo MILESTONE_MODIFY


Notificación por e-mail

Trac© incorpora la posibilidad de notificar por correo electronico al desarrollador implicado en un ticket, para lo cual es necesario habilitar el SMPT al sitio del proyecto, para esto es necesario modificar el fichero /var/www/trac/ejemplo/conf/trac.ini para el ejemplo.
Dentro del fichero se encuentran las siguientes lineas:
[notification]
always_notify_owner = false
always_notify_reporter = false
always_notify_updater = true
mime_encoding = base64
smtp_always_bcc =
smtp_always_cc =
smtp_default_domain =
smtp_enabled = true
smtp_from = correo@dominio
smtp_password = pass
smtp_port = 25
smtp_replyto =
smtp_server = servidor.de.correo
smtp_subject_prefix = __default__
smtp_user = usuario_correo
use_public_cc = false
use_short_addr = false
use_tls = false

Las lineas modificadas para el ejemplo están en negritas, luego de estos cambios, solo basta crear un ticket, y en la caja de texto CC poner la dirección de correo del destinatario.
El correo que recibe el desarrollador es como el siguiente:
#1: mensaje
------------------------+---------------------------------------------------
Reporter: jefe | Owner: miguel
Type: defect | Status: new
Priority: major | Milestone: milestone1
Component: component1 | Version: 1.0
Keywords: |
------------------------+---------------------------------------------------


--
Ticket URL:
ejemplo
My example project


Conclusiones

Esto es solo un breve tutorial para la puesta en marcha de un sitio de proyecto utilizando Trac©, el cual, aunque limitado, tiene aun más posibilidades.