Este manual explica cómo instalar Redmine en un servidor con CentOS y WHM/Cpanel. A diferencia de otras distribuciones no podemos configurar Apache así como así, ya que WHM tiene un sistema de plantillas interno para restaurar los ficheros de configuración modificados en base a la configuración del servidor, esto evita problemas y aporta gran estabilidad en entornos de producción.
WHM está preparado para desplegar aplicaciones Rails que cada usuario podrá configurar desde su Cpanel, el único problema es que las gemas disponibles y a la vez necesarias en WHM no son compatibles con redmine.
Para desplegar la aplicación utilizaremos Apache 2.2 junto con phusion_passenger, además del propio Redmine 1.3. Así que en primer lugar obtendremos el código fuente necesario e instalaremos passenger. A través de ssh ejecutaremos:
cd /root/tmp wget http://rubyforge.org/frs/download.php/75814/redmine-1.3.1.tar.gz tar zxvf redmine-1.3.1.tar.gz gem install passenger passenger-install-apache2-module
El siguiente paso es habilitar el módulo passenger en apache, podremos hacerlo desde el panel de configuración de Apache en WHM. Dentro del panel encontraremos la opción “include editor” y en el selector de pre-virtual-host include añadiremos lo siguiente:
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11 PassengerRuby /usr/bin/ruby
y pulsamos Update, esto debería reiniciar Apache sin errores. Si el reboot devuelve errores quizás alguna ruta no sea correcta, podemos usar find para ve en que ruta se encuentra cada cosa.
Volvemos al ssh y preparamos nuestro proyecto para ser desplegado:
cd /root/tmp/redmine-1.3.1/config mv database.yml.example database.yml cd ../public mv dispatch.cgi.example dispatch.cgi mv dispatch.fcgi.example dispatch.fcgi mv dispatch.rb.example dispatch.rb mv htaccess.fcgi.example .htaccess
Ahora editaremos el fichero de configuración de la BD:
cd .. nano config/database.yml
Es evidente que necesitamos crear una BD en mysql, además es aconsejable crear un usuario que tenga todos los privilegios sobre esta BD pero sobre ninguna más. Esto podemos hacerlo desde Cpanel o desde la linea de comandos de mysql.
Ahora debemos preparar las gemas que Redmine necesita, pero en primer lugar necesitamos una versión más antigua de RubyGems:
cd /root/tmp wget http://production.cf.rubygems.org/rubygems/rubygems-1.4.2.tgz tar zxvf rubygems-1.4.2.tgz cd rubygems-1.4.2 ruby setup.rb gem install bundler
Creamos un fichero ./Gemfile y añadimos las siguientes lineas:
source "http://rubygems.org" gem "rake", "0.8.3" gem "rack", "1.1.0" gem "i18n", "0.4.2" gem "rubytree", "0.5.2", :require => "tree" gem "RedCloth", "~>4.2.3", :require => "redcloth" # for CodeRay gem "mysql" gem "coderay", "~>0.9.7"
y ejecutamos:
bundle install
Ahora debemos copiar la carpeta donde está redmine en /home/{user}/public_html y cambiar su nombre por redmine:
cp /root/tmp/redmine-1.3.1 /home/{user}/public_html/ mv /home/{user}/public_html/redmine-1.3.1 /home/{user}/public_html/redmine cd /home/{user}/public_html/redmine chown -R apache:apache ./ chmod -R 755 ./
Y procedemos a sincronizar la BD:
Editamos el fichero config/environment.rb y descomentamos la linea:
ENV['RAILS_ENV'] ||= 'production'
ejecutamos:
RAS_ENV=production bundle exec rake generate_session_store RAILS_ENV=prodILuction bundle exec rake db:migrate RAILS_ENV=production bundle exec rake redmine:load_default_data
En el último paso podremos elegir el idioma del sistema.
Si hemos llegado hasta aquí, hemos hecho la parte más difícil, la aplicación está lista para usarse, solo falta desplegarla en Apache usando passenger. Como ya comenté no podemos editar los ficheros de configuración generales de Apache pero podemos pedirle al sistema que nos incluya ficheros adicionales creados por nosotros usando un script.
/scripts/ensure_vhost_includes --user=nombre_usuario /scripts/rebuildhttpdconf /scripts/restartsrv_httpd
Una vez hecho esto podemos añadir ficheros de configuración adicionales en la carpeta
/etc/httpd/conf/userdata/std/2/ que acabe en “.conf”
Por ejemplo crearemos el fichero:
/etc/httpd/conf/userdata/std/2/redmine.conf donde escribiremos:
RailsEnv production RailsBaseURI /redmine Allow from all Options -MultiViews
Con esto, tras reiniciar Apache:
/etc/init.d/httpd restart
debería estar disponible en la URL: nombre_dominio/redmine