Documente Academic
Documente Profesional
Documente Cultură
Esta entrada versa sobre la instalacin de un servicio Redmine (gestin de tareas y proyectos) en un equipo con Linux, ms en particular esta entrada se ha instalado en Ubuntu Server 10.10 de 64 bits, pero debera ser fcilmente adaptable a cualquier otra distribucin o versin.
Algunas de las funcionalidades que le pediremos a esta instalacin sern las siguientes:
Balanceo de carga (mediante servidor web Apache y mdulo proxy y proxy_balancer). Acceso seguro por medio de HTTPS (mdulo SSL de Apache). Arranque del servicio mediante un script (basado en gem mongrel) que se auto ejecute al reiniciar la mquina. Rotacin de logs (con logrotate). Instalacin del servicio de modo que se facilite la actualizacin de versin de Redmine (configuracin, plugins, ).
Pasos a seguir:
Descomprimimos y creamos un enlace para poder hacer referencia a la carpeta de Redmine con independencia de la versin instalada:
tar xzf redmine-1.1.1.tar.gz ln -s redmine-1.1.1 redmine
Ahora creamos carpetas especficas para la configuracin y plugins, para facilitar tambin la actualizacin de versin:
mkdir redmine-config redmine-files redmine-logs redmine-plugins
Creamos los ficheros de configuracin a partir de los de ejemplo y los enlazamos en su carpeta:
cd cp ln cp ln cd redmine/config database.yml.example ../../redmine-config/database.yml -s ../../redmine-config/database.yml email.yml.example ../../redmine-config/email.yml -s ../../redmine-config/email.yml -
Ahora editamos y configuramos la base de datos (con produccin y desarrollo basta), personaliza los campos [user_name] y [password], e incluso el nombre de la base de datos o el adaptador, aqu hemos usado MySQL:
vim redmine-config/database.yml production: adapter: mysql database: redmine host: localhost username: [user_name] password: [password] encoding: utf8 development: adapter: mysql database: redmine host: localhost username: [user_name] password: [password] encoding: utf8
Y la informacin para envo de correos (esto evidentemente depende del servidor de correo que utilices para enviar correos, por favor, no me preguntis a m a este respecto, para ello mejor usad Google), personaliza el [dominio] con el nombre del dominio dnde alojes a Redmine:
vim redmine-config/email.yml production: delivery_method: :smtp smtp_settings: address: localhost port: 25 domain: [dominio] authentication: :none development: delivery_method: smtp_settings: address: port: domain: authentication: :smtp localhost 25 [dominio] :none
Para los plugins, la idea es bajarlos en la carpeta redmine-plugins y enlazarlos en la carpeta de Redmine vendor/plugins; por ejemplo si tuvisemos que instalar el plugin Advanced Roadmap (tambin de la casa), haramos lo siguiente:
cd redmine-plugins wget http://ociotec.com/redmine/attachments/download/140/advanced_roadmap.0.4.0.tar.gz tar xzf advanced_roadmap.0.4.0.tar.gz ln -s advanced_roadmap.0.4.0 advanced_roadmap cd ../redmine/vendor/plugins ln -s ../../../redmine-plugins/advanced_roadmap cd cd redmine rake db:migrate:plugins cd -
Llegado este punto sera conveniente probar lo instalado aunque sea en modo de desarrollo y con webrick:
cd redmine ruby script/server ---> Press CTRL+C to STOP cd -
Probamos lo instalado en un navegador web en la URL que tengamos (si es en la misma mquina sera localhost) con el puerto 3000 (por defecto al lanzarlo con la lnea de comandos de arriba): http://localhost:3000. Tal y como se lee arriba, una vez que hayamos accedido, pulsamos CTRL + C para terminar y volvemos al directorio anterior.
command = ARGV.shift case command when 'start' start exit 0 when 'stop' stop exit 0 when 'restart' stop start exit 0 else p "Usage: /etc/init.d/#{name} start|stop|restart" exit 1 end
seleccionado 4 puertos, recordad que si el usuario no es root, deben de ser puertos por encima del 1024. Le dotamos de permisos de ejecucin:
sudo chmod +x /etc/init.d/redmine
Actualizamos los scripts de arranque para incluir el recin creado script de arranque de Redmine:
sudo update-rc.d redmine defaults
Aprovechamos y arrancamos los servicios (para parar se usa stop y restart para reiniciar):
sudo /etc/init.d/redmine start
Podemos probar que las 4 instancias funcionan en http://localhost:3000, http://localhost:3001, http://localhost:3002 y http://localhost:3003.
Prefijo para acceder a Redmine, en el ejemplo se presupone que se acceder a Redmine mediante una URL del estilo a http://dominio.com/redmine, de ah el prefijo /redmine en las lneas 1, 2, 4 y 14. Las lneas 7 a 10 redirigen a los 4 procesos en los 4 puertos que ya habamos configurado en el script de arranque de la seccin anterior, si no hubisemos usado los puertos sugeridos, aqu habra que hacer las modificaciones pertinentes. Las lneas 4 y 11 son opcionales, sirven para luego poder depurar desde el navegador web cul de todos los procesos que servirn Redmine nos ha tocado, mediante la visualizacin de una cookie.
Ya podemos acceder a nuestro Redmine con balanceo de carga con la URL que tengamos, del estilo a http://dominio.com/redmine, podemos ver qu proceso nos ha atendido buscando la coockie BalancerMember dentro de las coockies de nuestro dominio.
Con esto ya quedara habilitado el acceso seguro. Si adems queremos forzar a que siempre se acceda de forma segura (para evitar el robo de claves a nuestros usuarios), debemos modificar el fichero de configuracin Apache de Redmine:
sudo vim /etc/apache2/sites-available/redmine 1 ... 2 <location /redmine> 3 Order Deny,Allow 4 Allow from All 5 RewriteEngine On 6 RewriteCond %{HTTPS} off 7 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 8 </location>
Esto redirigir cualquier peticin HTTP a HTTPS de manera automtica. Slo queda instalar los mdulos de redireccin de Apache y reniciarlo:
sudo a2enmod rewrite sudo /etc/init.d/apache2 restart
Rotacin de logs
Slo nos falta hacer una gestin de los logs adecuada, para que no nos colapse el disco duro con megas y megas de logs Para ello haremos uso del estupendo paquete logrotate, lo primero es instalarlo (si es que no lo tuvieras ya instalado, dado que es de uso muy generalizado por otros paquetes):
sudo apt-get install logrotate
Este fichero rotar los logs todos los das, y comprimir y guardar 7 copias de das pasados, para los logs de mongrel y de los entornos de produccin y desarrollo.
En el ejemplo de arriba se examinarn cambios cada 30 minutos, esto puedes cambiarlo a tu gusto.