Delirios de un Informático

«¡No me digas lo que no puedo hacer!»

Cómo instalar Redmine con Apache en subdirectorio

Archivado en Software con fecha 31/ago/2011
Etiquetado con: , ,

Ya comenté anteriormente cómo instalar una aplicación programada en Ruby en Debian. En este caso se trata de Redmine, un estupendo gestor de proyectos que tiene la gran ventaja de ser muy completo para desarrolladores pero que también resulta muy sencillo para usuarios no técnicos.

El mayor problema que tuve al instalar Redmine fué al configurarlo para que funcionara sin problemas en un subdirectorio del tipo midominio.com/redmine, ya que parece pensado para ejecutarse en un dominio directamente. Para eso he optado por usar el directorio /var/lib/redmine porque si se ubica en la raiz del servidor web y se utiliza el servidor integrado a través de un proxy (que explicaré más adelante), se podría acceder directamente a los archivos Ruby en texto plano, lo que supone un evidente problema. Por otro lado, he utilizado SQLite de nuevo, pero también es posible utilizar MySQL.

El proceso sería el siguiente:

cd /var/lib
wget http://rubyforge.org/frs/download.php/75097/redmine-1.2.1.tar.gz
tar xzvf redmine-1.2.1.tar.gz
mv redmine-1.2.1.tar.gz redmine && cd redmine
sudo apt-get install ruby libruby rubygems rake ruby1.8-dev libsqlite3-dev
export GEM_HOME=/var/lib/redmine/vendor
gem install rails -v=2.3.11
gem install rake -v=1.1.0
gem install i18n -v=0.4.2
gem install fcgi sqlite3
cp config/database.yml.example config/database.yml

En este punto es necesario editar el archivo database.yml para añadir la configuración de la base de datos. En mi caso, para SQLite he usado lo siguiente:

production:
  adapter: sqlite3
  database: db/redmine.db
  host: localhost
  username: root
  password:
  encoding: utf8

El siguiente paso es realizar la instalación de Redmine:

rake generate_session_store
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data

Ahora es necesario dejar las primeras líneas del archivo environment.rb así:

# Be sure to restart your web server when you modify this file.

# Uncomment below to force Rails into production mode when 
# you don't control web/app server and can't set it the proper way
ENV['RAILS_ENV'] ||= 'production'
ENV['GEM_HOME'] = '/var/lib/redmine/vendor'

También es necesario añadir la línea Redmine::Utils::relative_url_root = "/redmine" al final del archivo para indicar el subdirectorio en donde estará instalado. Una vez realizados los cambios puede comprobarse que funcione correctamente ejecutando el servidor integrado mediante el comando ruby script/server webrick -e production que no debería dar ningún error.

Para integrar Redmine con Apache mediante FastCGI, es necesario añadir lo siguiente a la configuración, bien global o bien de un vhost:

Alias /redmine/ "/var/lib/redmine/public/"
FastCgiServer /var/lib/redmine/public/dispatch.fcgi -processes 1

<Directory "/var/lib/redmine/public>
	AddHandler fastcgi-script .fcgi
	Options +ExecCGI
	AllowOverride all
	Allow from all
	Order allow,deny
</Directory>

En el directorio /var/lib/redmine/public es necesario también renombrar el archivo dispatch.fcgi.example a dispatch.fcgi y añadir crear un .htaccess con el siguiente contenido:

RewriteEngine On
RewriteBase /redmine
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /redmine/dispatch.fcgi [QSA,L]

Con estos pasos por fin quedará instalado en el subdirectorio /redmine. Si esta alternativa no es posible, puede recurrirse al servidor integrado WEBRick y que Apache realice peticiones mediante proxy. Para este caso, la configuración de Apache sería:

<Location /redmine>
        ProxyPass http://127.0.0.1:3000
        ProxyPassReverse http://127.0.0.1:3000/
</Location>

El servidor se puede lanzar con el comando ruby /var/lib/redmine/script/server webrick -d -e production. Por último, si se quiere usar SSL con este método, es necesario añadir a la configuración de Apache la línea RequestHeader set X_FORWARDED_PROTO 'https' para que el servidor WEBRick genere las URLs correctamente.

Comentarios

Cómo instalar Redmine 2.2 con Apache en subdirectorio « Delirios de un Informático referenció el 15/02/2013 a las 9:44:

[…] 2011 ya comenté cómo instalar Redmine con Apache en subdirectorio pero se trataba de versión 1.2. Hace unos días recurrí a estas instrucciones para instalar la […]

Delirios de un Informático  §  Gestionado con WordPress  §  Licenciado bajo Creative Commons