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
Instalación delDiscussionPlugin
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