Sunteți pe pagina 1din 9

Cmo instalar Redmine en Ubuntu Server

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:

Instalacin de Ruby on Rails


Esto ya lo he documentado anteriormente en la siguiente entrada: Cmo instalar Ruby on Rails en Ubuntu. Slo aadir la instalacin de la gema mongrel para lanzar un servidor Rails que atienda a Redmine:
sudo gem install mongrel

Bajar y configurar Redmine


Iremos a la web de Redmine y descargaremos la ltima versin estable, en este tutorial es la versin 1.1.1, adems haremos la descarga sobre la carpeta y usuario de Apache (/var/www a partir de ahora todas las operaciones de configuracin se harn relativas a este directorio):
cd /var/www wget http://rubyforge.org/frs/download.php/74128/redmine-1.1.1.tar.gz

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

Creamos la base de datos:


cd redmine rake db:create cd -

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

Hacemos lo propio para los ficheros adjuntos:


mv cd ln cd redmine/files redmine-files redmine -s ../redmine-files files -

Para los logs:


mv cd ln cd redmine/log redmine-log redmine -s ../redmine-log log -

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.

Servicios para Redmine


Tendremos que crear un script que apoyndose en mongrel_rails lance varias instancias de Redmine para atender las peticiones con balanceo de carga, cada una de las instancias atender peticiones en un puerto.

Editamos el fichero que arrancar Redmine:


sudo vim /etc/init.d/redmine #!/usr/bin/env ruby require "fileutils" include FileUtils require "rubygems" begin gem 'mongrel' rescue => e puts "Error: daemon mode of redmine requires mongrel installed" exit 1 end def name "redmine" end def path "/var/www/redmine" end def user "www-data" end def environment "production" end def ports ["3000", "3001", "3002", "3003"] end def start ports.each do |port| system "su - #{user} -c 'cd #{path}; mongrel_rails start -d -e #{environment} -p #{port} -P #{path}/log/mongrel.#{port}.pid'" end end def stop ports.each do |port| system "cd #{path}; mongrel_rails stop -P #{path}/log/mongrel.#{port}.pid" system "rm -f #{path}/log/mongrel.#{port}.pid" end end

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

Tendremos que configurar los siguientes valores:


name: Nombre corto del script. path: Path a la instalacin de Redmine. user: Usuario con el que lanzaremos las instancias de Redmine, normalmente con el usuario de Apache. environment: Entorno de ejecucin Rails, normalmente el de produccin. ports: Puertos para las instancias de los procesos que atendern las peticiones. En nuestro ejemplo hemos

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.

Apache con balanceo de carga


Lo primero es instalar los mdulos de Apache de proxy y balanceo de carga:
sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod proxy_balancer

Editamos un nuevo sitio para Apache:


sudo vim /etc/apache2/sites-available/redmine ProxyPass /redmine balancer://redmine_cluster 1 ProxyPassReverse /redmine balanver://redmine_cluster 2 3 Header add Set-Cookie "BalancerMember=%{BALANCER_WORKER_NAME}e; path=/redmine" 4 env=BALANCER_ROUTE_CHANGED 5 6 <proxy balancer://redmine_cluster> 7 BalancerMember http://127.0.0.1:3000 8 BalancerMember http://127.0.0.1:3001 9 BalancerMember http://127.0.0.1:3002 10 BalancerMember http://127.0.0.1:3003 11 ProxySet stickysession=BalancerMember 12 </proxy> 13 14 <location /redmine> 15 Order Deny,Allow 16 Allow from All 17 </location>

En la configuracin de arriba tendremos que tocar varias cosas:


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.

Habilitamos el sitio y reiniciamos Apache para aplicar los cambios:


sudo a2ensite redmine sudo /etc/init.d/apache2 restart

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.

Acceso seguro con SSL


Lo primero es habilitar el mdulo de SSL de Apache, si es que no est ya habilitado y reniciar Apache:
sudo a2enmod ssl sudo /etc/init.d/apache2 restart

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

Editamos un fichero de configuracin para los logs de redmine:


sudo vim /etc/logrotate.d/redmine /var/www/redmine-log/mongrel.log /var/www/redmine-log/production.log /var/www/redminelog/development.log { rotate 7 daily compress copytruncate }

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.

Enlazar Redmine con la gestin de configuracin


Si queremos que Redmine examine los cambios realizados en los repositorios que tengamos en Gestin de la Configuracin (Subversion, CVS, GIT, Mercurial, ) tendremos que aadir una tarea al CRON para que examine cambios peridicamente:
sudo vim /etc/cron.d/redmine_subversion */30 * * * * www-data ruby /var/www/redmine/script/runner "Repository.fetch_changesets" -e production &> /dev/null

En el ejemplo de arriba se examinarn cambios cada 30 minutos, esto puedes cambiarlo a tu gusto.

S-ar putea să vă placă și