Instalar Redmine con Phusion Passenger en SLES 11 SP1 (mod_rails)

Tengo que instalar Redmine en un cliente. La maquina es una SLES 11, para variar y ya tiene funcionando un Apache2 con mod_jk. Necesitamos instalar las herramientas de desarrollo de apache, así como ruby y su sistema de gestión de modulos, gem.

servidor:~# zypper install gcc make ruby rubygems rubt-devel rubygem-rake rubygem-rails apache2-devel gcc-c++
servidor:~# gem install passenger
servidor:~# /usr/bin/passenger-install-apache2-module

Este ultimo comando, nos dira si nos falta algo. En caso contrario, nos compila el modulo en /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so

Lo copiamos a /usr/lib/apache2/ porque si no, al figurar en /etc/sysconfig/apache2, no lo encontrara en el inicio y no lo cargará (demasiado automatismo tonto)

Posteriormente añadimos estas dos lineas a un .conf de apache, yo creo
/etc/apache2/redmine-adicionales.conf y lo incluyo en /etc/apache2/httpd.conf añadiendole la linea Include /etc/apache2/redmine-adicionales.conf
PassengerRoot /var/lib/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/bin/ruby1.8

Ahora creamos un VirtualHost nuevo en /etc/apache2/conf.d/0x-hostname.dominio.tld.conf que contenga:

ServerName redmine.tudominio.tld
ServerAlias respondeaquitambien.tudominio.tld
DocumentRoot /srv/redmine/publicAllowOverride all
Options -MultiViews

LogLevel warn
CustomLog /var/log/apache2/redmine.dominio.tld-access.log combined
ErrorLog /var/log/apache2/redmine.dominio.tld-error.log

Nos vamos a /srv y nos bajamos el tarball de redmine:

servidor:~# cd /srv
servidor:~# wget 'http://rubyforge.org/frs/download.php/71723/redmine-1.0.0.tar.gz'
servidor:~# tar zxvf redmine-1.0.0.tar.gz
servidor:~# mv redmine-1.0.0 redmine
servidor:~# chown -R wwwrun.www redmine

Redmine depende de una base de datos, así que creamos la base de datos, usuario y la poblamos con la estructura que viene con el programa.

servidor:~# mysql -u root -p
mysql> create database redmine charset utf8;
mysql> grant all on redmine.* to redmine@'localhost' identified by 'contraseñaquequieras';
mysql> flush privileges;

##NOTA: En caso de que esto te de algún problema, puedes ejecutar en el mysql también:

mysql> grant all on redmine.* to redmine@'%' identified by 'contraseñaquequieras';
mysql> flush privileges;

##

La configuración de la base de datos va en /srv/redmine/config/database.yml y este es su contenido:

production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: contraseniaquequieras
encoding: utf8
socket: /var/run/mysqld/mysqld.sock

Ahora vamos a poblar la base de datos con la estructura propia de redmine y pasarla a modo producción:

servidor:~# rake db:migrate RAILS_ENV="production"

*** opcional***

servidor:~# rake redmine:load_default_data RAILS_ENV="production"

*** nos llena la db datos que vienen de fabrica ***

Por ultimo activamos el modulo, reiniciamos apache y debería salirnos Redmine al acceder con un navegador a http://redmine.dominio.tld

a2enmod passenger
service apache2 restart
/etc/init.d/apache2 restart

A gusto del consumidor 🙂

Si actualizamos a una versión mas nueva de Redmine, también hay que ejecutar

rake db:migrate RAILS_ENV=production