Montaje del servidor de pruebas de la platafoma de software libre:

Se instaló Debian lenny (sistema operativo y entorno de escritorio), posteriormente se instaló la herramienta que facilita la instalación de componentes creados para python: easy_install

Como superusuario se obtiene el código fuente o scritp desde:

wget http://peak.telecommunity.com/dist/ez_setup.py

Se ejecuta:

python ez_setup.py

con lo cual se descarga la herramienta setuptools

Para instalar trac se verifica la version de Python:

python -V

En nuestro servidor esta instalado la version Python 2.5.2

luego se instala Genshi (Libreria de python que integra un conjunto de componentes para parsear, generar y procesar HTML, XML u otro contenido textual para generar salidas en la web)

easy_install_pygments
easy_install Genshi

Se instala la libreria Clearsilver

aptitude install python-clearsilver
o
wget http://www.clearsilver.net/downloads/clearsilver-0.10.5.tar.gz
tar -xzvf clearsilver-0.10.5.tar.gz
cd clearsilver-0.10.5
aptitude install gcc
aptitude install make
./configure --disable-compresion --disable-perl
make
make install

Se instala el manejador de las bases de datos en este caso Mysql y el control de versiones Subversion

aptitude install mysql-server-5.0

Se creo un usuario nuevo (accesa como superusuario y crea al usuario asignando los permisos correspondientes):

mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO 'administrador'@'localhost'
->     IDENTIFIED BY 'clave' WITH GRANT OPTION;
mysql> \q

Se comprueba el usuario y password creado:

mysql -u administrador -p

Se cambio el password del root

mysqladmin -u root -h localhost password '123456'

opcionalmente se instala el phpmyadmin (para facilitar la adminsitracion via web de las bases de datos)

aptitude install phpmyadmin
cd /var/www
ln -s /usr/share/phpmyadmin phpmyadmin

se comprueba con: http://localhost/phpmyadmin o de foma remota http://dir.ecc.ion.ip/phpmyadmin

Se crea una nueva base de datos para nuestro caso: plataforma

Se instala en control de versiones y se crea un nuevo repositorio:

aptitude install subversion
aptitude install python-subversion
svnadmin create /home/usuario/svn

Se configura los usuarios:

Añadir al archivo passwd una linea por usuario

vim /home/usuario/svn/conf/passwd
i nsertar
administrador = clave
Esc + wq! para guardarlo

en el archivo:

nano /home/usuario/svn/conf/svnserver.conf

Descomentar las lineas:

anon-access = read

auth-access = write

y

password-db = passwd

para que se inicie el servicio de svn y este escuchando permanentemente verificar las lineas:

En el archivo /etc/inetd.conf
#habilita el servicio subversion
svn stream tcp nowait root /usr/bin/svnserve svnserve -i
y que exista un puerto escuchando en
nano /etc/services
buscar svn

Salir y comprobar desde otro pc que este en la red (esta operación se puede realizar luego de instalado el trac):

svn co  svn://direccion.ip/home/usuario/svn/ --username administrador
cd svn
vim prueba.txt
i nsertar
Prueba
Esc + wq!
svn add prueba.txt
svn commit -m "mensaje" --username administrador

Posteriormente se descarga los fuentes del Trac

wget http://ftp.edgewall.com/pub/trac/trac-0.10.4.tar.gz
tar -xzvf trac-0.10.4.tar.gz

Se ejecuto el comando que se indica en la documentación de Trac:

python ./setup.py install

Se crea el directorio donde se almacenan los proyectos

mkdir /home/usuario/proyectos

y se ejcuta el comando de inicio de ambientes de proyectos:

trac-admin /home/usuario/proyectos/pdsl initenv

se Escribe un nombre del proyecto:

Plataforma para el Desarrollo de Software Libre

luego se le indica la cadena para la conexion a la base de datos:

mysql://administrador:clave@localhost:3306/plataforma

Esta se puede modificar luego en el trac.ini del proyecto que esta en /home/usuario/proyectos/pdsl/conf/

se indico la ruta del repositorio

/home/usuario/svn

Se deja por defecto el directorio de templates

Posteriormente

Y este ejecuta el comando de crear la base de datos y el proyecto

para activarlo se indica el siguiente comando:

tracd --port 8000 /home/usuario/proyectos/pdsl

y se ejecuta desde un navegador la siguiente linea:

http://localhost:8000/pdsl

o la cambiar la direccion ip por el localhost dentro de la intranet.


Para ejecutarlo desde apache

aptitude install libapache2-mod-python
a2enmod mod_python

se modifica el archivo: /etc/apache2/httpd.conf

<Location /mpinfo>
   SetHandler mod_python
   PythonInterpreter main_interpreter
   PythonHandler mod_python.testhandler
</Location>
<Location /pdsl>
   SetHandler mod_python
   PythonInterpreter main_interpreter
   PythonHandler trac.web.modpython_frontend
   PythonOption TracEnv  /home/usuario/proyectos/pdsl
   PythonOption TracUriRoot /pdsl
</Location>
<Location /pdsl/login>
   AuthType Basic
   AuthName "pdsl"
   AuthUserFile /home/usuario/proyectos/pdsl/conf/trac.htpasswd
Require valid-user
</Location>

Se crear el arcchivo de autenticación:

htpasswd -c trac.htpasswd administrador

Se coloca la clave y se mueve a la dirección que se indico en el httpd.conf

mv /root/trac.htpasswd /home/usuario/proyectos/pdsl/conf/

Se reinicia el apache

/etc/init.d/apache2 force-reload

y se ejcuta desde el navegador

http://localhost/pdsl

Se logea con administrador y clave

se puede observar los permisos que tiene el "administrador"

trac-admin /home/usuario/proyectos/pdsl/ permission list administrador

allí se observa que permisos tiene y cuales no.

podemos asignar el permiso de TRAC_ADMIN

trac-admin /home/usuario/proyectos/pdsl/ permission add administrador TRAC_ADMIN


Para la version <= 0.10.4 debemos instalar el pluginsWebAdmin .

cd /home/usuario/proyectos/pdsl/plugins
svn export http://svn.edgewall.com/repos/trac/sandbox/webadmin/

Se añade las lineas al archivo trac.ini

vim /home/usuario/proyectos/pdsl/conf/trac.ini
[components]
webadmin.* = enabled

Se guardan los cambios y se ejecuta el componente:

cd webadmin
python setup.py bdist_egg
cp /home/usuario/proyectos/pdsl/plugins/webadmin/dist/TracWebAdmin-0.1.2dev-py2.5.egg /home/usuario/proyectos/pdsl/plugins
chown www-data.www-data TracWebAdmin-0.1.2dev-py2.5.egg
easy_install TracWebAdmin-0.1.2dev-py2.5.egg
/etc/init.d/apache2 force-reload

Si aparece el siguiente error al entrar al trac

[Errno 13] Permission denied: '/var/www/.python-eggs'

agregar al httpd.conf la siguiente linea:

SetEnv PYTHON_EGG_CACHE /home/usuario/proyectos/pdsl

debería quedar para el proyecto pdsl

nano /etc/apache2/httpd.conf

<Location /pdsl>
   SetHandler mod_python
   PythonInterpreter main_interpreter
   PythonHandler trac.web.modpython_frontend
   PythonOption TracEnv  /home/usuario/proyectos/pdsl
   PythonOption TracUriRoot /pdsl
   # Línea agregada para el WebAdmin
   SetEnv PYTHON_EGG_CACHE /home/usuario/proyectos/pdsl
</Location>

Reiniciar el Apache

/etc/init.d/apache2 force-reload

Se ejecuta http://localhost/pdsl

Al entrar en el trac se debe tener activado el webadmin.


Plugins TracGantt Se descarga de la dirección y descomprime:

wget http://willbarton.com/files/TracGantt-0.3.2a.tar.gz
tar -xzvf TracGantt-0.3.2a.tar.gz
cd TracGantt-0.3.2a
python setup.py bdist_egg
cp dist/TracGantt-0.3.2a-py2.5.egg /home/usuario/proyectos/pdsl/plugins
cd /home/usuario/proyectos/pdsl/plugins
chown www-data: TracGantt-0.3.2a-py2.5.egg

Se edita el trac.ini

nano /home/usuario/proyectos/pdsl/conf/trac.ini
[ticket-custom]
due_assign = text
due_assign.label = Due to assign
due_assign.value = DD/MM/YYYY
dependencies = text
dependencies.label = Dependencies
dependencies.value =
due_close= text
due_close.label = Due to close
due_close.value = DD/MM/YYYY
include_gantt = checkbox
include_gantt.label = Include in GanttChart
include_gantt.value =
[gantt-charts]
# The format of dates entered by humans in the above ticket fields
date_format = %m/%d/%Y
# Include the ticket summary in the gantt chart display
include_summary = true
# Trim the included summary to the given number of characters
summary_length = 16
# Use the creation date of a ticket as the "due assign" date if no
# assignment date is given
use_creation_date = true
# Show on the gantt chart the date the ticket was opened, to contrast
# with the assignment date.
show_opened = true
[components]
tracgantt.* = enabled

Se modifica el archivo httpd.conf y se agrega nueva directiva:

nano /etc/apache2/httpd.conf
<Location /pdsl>
   SetHandler mod_python
   PythonInterpreter main_interpreter
   PythonHandler trac.web.modpython_frontend
   PythonOption TracEnv  /home/usuario/proyectos/pdsl
   PythonOption TracUriRoot /pdsl
   SetEnv PYTHON_EGG_CACHE /home/usuario/proyectos/pdsl
</Location>

y se recarga apache

/etc/init.d/apache2 force-reload


El DiscussionPlugin añade un foro de discusión al Trac, el cual depende de!WebAdminPlugin [Previamente instalado en el punto anterior] ya que muchas opciones de configuración solo se encuentran disponibles a través de las páginas del!WebAdminPlugin. El plugins!SpamFilterPlugin también es requerido.Si instalo el SpamFilterPlugin omita el siguiente paso.

Instalando Dependencias SpamFilterPlugin, requeridas por el DiscussionPluguin

cd /home/usuario/proyectos/pdsl/plugins
svn co http://svn.edgewall.com/repos/trac/sandbox/spam-filter
cd spam-filter/
python setup.py bdist_egg
cp ./dist/TracSpamFilter-0.2.1dev_r6990-py2.5.egg ../
cd ..
chown www-data:www-data TracSpamFilter-0.2.1dev_r6990-py2.5.egg
easy_install TracSpamFilter-0.2.1dev_r6990-py2.5.egg

Si al instalar el plugins produce el siguiente error:

NameError: global name 'log' is not defined

se debe instalar el setuptool, si no omita este paso.

Dentro del directorio de plugins de pdsl:

svn co http://svn.python.org/projects/sandbox/branches/setuptools-0.6 setuptools
cd setuptools
python setup.py install
cd ..
easy_install TracSpamFilter-0.2.1dev_r6990-py2.5.egg

Agregar en trac.ini

vim ../conf/trac.ini

[components]
tracspamfilter.* = enabled

Instalación del DiscussionPlugin en el Trac

cd /home/usuario/proyectos/pdsl/plugins
svn export http://trac-hacks.org/svn/discussionplugin/0.10
cd 0.10/
python setup.py bdist_egg
cp ./dist/TracDiscussion-0.5-py2.5.egg /home/luispc/proyectos/prueba/plugins/
cd ..
chown www-data:www-data TracDiscussion-0.5-py2.5.egg
easy_install TracDiscussion-0.5-py2.5.egg

Editar trac.ini y agregar:

nano ../conf/trac.ini

[discussion]
title = Discussion
default_display = tree
forum_sort = id
forum_sort_direction = asc
topic_sort = id
topic_sort_direction = asc

[components]
# Enable this component for 0.11 branch and 0.10 branch from revision r3518.
tracdiscussion.api.DiscussionApi = enabled
tracdiscussion.admin.DiscussionWebAdmin = enabled
tracdiscussion.core.DiscussionCore = enabled
tracdiscussion.init.DiscussionInit = enabled
tracdiscussion.search.DiscussionSearch = enabled
tracdiscussion.timeline.DiscussionTimeline = enabled
tracdiscussion.wiki.DiscussionWiki = enabled
tracdiscussion.notification.DiscussionNotifyEmail = enabled

Agregar los permisos

# trac-admin /home/usuario/proyectos/pdsl permission add administrador DISCUSSION_VIEW
# trac-admin /home/usuario/proyectos/pdsl permission add administrador DISCUSSION_APPEND
# trac-admin /home/usuario/proyectos/pdsl permission add administrador DISCUSSION_MODERATE
# trac-admin /home/usuario/proyectos/pdsl permission add administrador DISCUSSION_ADMIN

Ejecutar la actualizacion:

trac-admin /home/usuario/proyectos/pdsl upgrade –no-backup

Si se produce el error de permiso de acceso para escribir

TracSpamFilter-0.2.1dev_r6990-py2.5.egg-tmp

en el servidor Web, se debe asignar los permisos www-data a la carpeta pdsl

cd /home/usuario/proyectos
chown www-data:www-data /pdsl

pdslinstrac (last edited 2008-09-11 10:11:26 by lpena)