A la hora de gestionar proyectos existen multitud de herramientas y opciones disponibles. Algunas son gratis, otras no, unas ofrecen la posibilidad de instalarlas en tus propios servidores, otras se contratan "en la nube".
Redmine es una de las que permiten instalarlo en tus propios servidores. Se trata de un gestor de proyectos escrito con Ruby on Rails, es multiplataforma y soporta múltiples bases de datos. Además es software libre con licencia GPLv2.
Entre sus características destaca el soporte multi-proyecto, sistema de roles y permisos muy flexible y personalizable, gestión de tareas, wikis, foros, subida de archivos y documentos, notificaciones por email y por RSS,...
Llevo casi 4 años utilizando Redmine en el día a día del trabajo (además de administrándolo) y después de instalarlo varias veces de cero y actualizarlo entre versiones otras tantas por fin me he decidido a juntar todas mis notas y escribir un tutorial actualizado.
Partimos de una Debian 7 64 bits recién instalada sin nada adicional a excepción de OpenSSH. Toda la instalación se realizará con un usuario no root en su home, aunque algunos comandos requieren el uso de sudo. Aunque Redmine viene configurado por defecto para utilizar MySQL, en mi caso lo voy a instalar utilizando Postgresql.
Instalación de Postgresql 9.3
En los repos de Debian no está la última versión por lo que lo mejor es utilizar un repo oficial. En la actualidad ya se ha publicado la versión 9.3.2 y será ésta la que utilicemos.sudo vi /etc/apt/sources.list.d/pgdg.list # Postgresql deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update sudo apt-get install postgresql-9.3
sudo vi /etc/postgresql/9.3/main/pg_hba.conf # Cambiar la siguiente línea: local all postgres peer # por: local all postgres trust
sudo /etc/init.d/postgresql restart
$ psql -U postgres psql (9.3.2) Type "help" for help. postgres=# CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my-secret-password' NOINHERIT VALID UNTIL 'infinity'; postgres=# CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
Instalación de paquetes adicionales
Para poder compilar las gemas de ruby que instalaremos más tarde necesitamos una serie de paquetes. Algunos son los mínimos para poder compilar cualquier fuente: gcc, make,... y otros son necesarios para las gemas.sudo apt-get install build-essentialInstalar librería necesaria para utilizar Postgresql desde una aplicación Ruby on Rails
sudo apt-get install libpq-dev
Instalación de Apache
Para poder servir el Redmine una vez instalado vamos a utilizar apache.Instalar apache2 y habilitar los módulos necesarios:
sudo apt-get install apache2 libapache2-mod-fcgid libapache2-mod-proxy-html libfcgi-dev sudo a2enmod rewrite sudo a2enmod proxy_http sudo a2enmod proxy
Instalación de ImageMagick
Para la generación de pdfs y pngs Redmine utiliza ImageMagick, por lo que si queremos utilizar esta funcionalidad deberemos instalarlo junto con las librerías necesarias.$ sudo apt-get install imagemagick libmagickwand-dev libmagickcore-dev
Instalación de Ruby
Ahora ya podemos instalar Ruby. Utilizaremos la versión 1.9.3.sudo apt-get install ruby1.9.3
Instalación de Redmine
Por fin, después de haber instalado todas las dependencias podemos empezar con la instalación de Redmine.wget http://www.redmine.org/releases/redmine-2.4.2.tar.gz tar zxvf redmine-2.4.2.tar.gz ln -s redmine-2.4.2 redmine cd redmineLa creación del enlace simbólico no es necesaria pero es una buena práctica. Además nos sirve en el futuro para actualizar la versión sin tener que tocar la configuración del Apache.
cp config/database.yml.example config/database.yml vi config/database.yml production: adapter: postgresql database: redmine host: localhost username: redmine password: "my-secret-password" encoding: utf8Importante quitar mysql de los environments de develop y test porque sino luego intentará instalar las dependencias y fallará. Poner "postgresql" en todos aunque no se configure nada más. Sólo vamos a usar el environment de producción.
echo 'gem "fcgi"' > Gemfile.local
sudo gem install pg
sudo gem install bundler
sudo bundle install --without development test
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data
mkdir -p tmp tmp/pdf public/plugin_assets chmod -R 755 files log tmp public/plugin_assets
rake generate_secret_tokenY listo, ahora sólo falta probar que todo funciona correctamente. Para ello, ejecutamos el servidor web embebido (no utilizar en producción).
$ ruby script/rails server webrick -e production => Booting WEBrick => Rails 3.2.13 application starting in production on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2013-12-28 11:05:17] INFO WEBrick 1.3.1 [2013-12-28 11:05:17] INFO ruby 1.9.3 (2013-11-22) [x86_64-linux] [2013-12-28 11:05:17] INFO WEBrick::HTTPServer#start: pid=25214 port=3000Nos conectamos con el navegador a http://localhost:3000 y nos logamos con admin/admin.
Configuración de Apache
Para servir el Redmine para poder utilizarlo en producción vamos a utilizar Apache junto con fcgi.cp public/htaccess.fcgi.example public/.htaccess cp public/dispatch.fcgi.example public/dispatch.fcgi chmod +x public/dispatch.fcgi
vi config/environment.rb # Añadir la siguiente línea al principio del archivo ENV['RAILS_ENV'] ||= 'production'
sudo vi /etc/apache2/sites-enabled/000-default <VirtualHost *:80> ErrorLog /var/log/apache2/redmine-error-log CustomLog /var/log/apache2/redmine-access-log combined ServerName redmine.my-domain.com ServerAdmin admin@my-domain.com DocumentRoot /home/ivan/redmine/public ProxyPreserveHost On <Directory "/home/ivan/redmine/public/"> Options Indexes ExecCGI FollowSymLinks Order allow,deny Allow from all AllowOverride all </Directory> </VirtualHost>
sudo chown -R www-data:www-data files log tmp public/plugin_assets
sudo /etc/init.d/apache2 restartY listo, si todo va bien deberíamos poder conectarnos a nuestro nuevo Redmine con el dominio que hayamos definido en nuestro virtual host, en este caso http://redmine.my-domain.com.
Bola extra: Actualizar una versión antigua de Redmine
Como he comentado al principio del artículo, llevo utilizando Redmine casi 4 años (empecé en la versión 0.9.6) y he actualizado de versión en bastantes ocasiones. El proceso de actualización es muy simple.sudo /etc/init.d/apache2 stop pg_dump -U postgres redmine > db_redmine.sql
rake db:migrate RAILS_ENV=productionEsto lo que hace es ejecutar todas las migraciones desde la versión que teníamos instalada hasta la versión actual para que el modelo de datos sea el adecuado.
rake redmine:plugins:migrate RAILS_ENV=production
rake tmp:cache:clear rake tmp:sessions:clear
Para el que no esté muy seguro sobre las actualizaciones, decir que en todas las actualizaciones de estos años no he tenido ningún problema y todas han funcionado a la perfección. En esta última actualización he pasado directamente de la versión 1.4.4 a la 2.4.2. Han sido cinco versiones mayor (2.0, 2.1, 2.2, 2.3 y 2.4) y 27 versiones en total de diferencia entre ambas y cero problemas :-)
12 comentarios:
Quizás valdría la pena mencionar, que en caso de ocupar la versión de redmine que hay empaquetada en debian, se gana la posibilidad de tener múltiples instancias de redmine corriendo con solo una instalación, ahorrando tiempo de gestión sobre la instancia, en caso de que se necesaria esta figura.
Igualmente la guía está súper útil. Muchas gracias!
Hola Roberto,
nunca he necesitado tener varias instancias de Redmine sobre la misma instalación. Me lo apunto por si alguna vez lo necesito.
Aún así, para estos casos me gusta instalar la versión que yo quiero y no la que está en los repos (que además es muy antigua):
$ apt-cache show redmine
Package: redmine
Version: 1.4.4+dfsg1-2+deb7u1
Buenas. He seguido tu tutorial y me ha ayudado a saber cómo instalar y configurar todos los componentes necesarios para tener corriendo redmine en local(apache, ruby y sus gemas,...). Quiero instalar redmine en un servicio de hosting, pero no tengo ni idea de cómo hacerlo. ¿Cambia mucho este tutorial para el caso que planteo?
PD: por supuesto el hosting soporta ruby on rails.
Hola Isaac,
si tienes acceso por ssh a la máquina y permisos de root para instalar todas las dependencias y configurar apache no debería cambiar nada. Es igual que si lo instalas en tu máquina.
Saludos, Iván.
Gracias por el tutorial, todo funciono a la perfección, a excepción del ultimo paso (CONFIGURACION APACHE) ¿Como hago si lo instale en un server de mi misma red? que coloco en el nameserver?
Hola, he seguido tu tutorial y me ha servido mucho, antes de dar con él no sabía ni la mitad del software que necesitaba instalar jejeje He seguido los pasos a rajatabla pero no soy capaz de hacer que funcione correctamente en la prueba final, me sale esto: $ ruby script/rails server webrick -e production
=> Booting WEBrick
=> Rails 3.2.16 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/var/lib/gems/1.8/gems/activerecord-3.2.16/lib/active_record/connection_adapters/postgresql_adapter.rb:1222:in `initialize': FATAL: la autentificación password falló para el usuario «root» (PG::ConnectionBad)
FATAL: la autentificación password falló para el usuario «root»
Si se te ocurre alguna solución te lo agradecería mucho puesto que ando perdida. Un saludo
Hola,
@Anónimo1: En el ServerName tienes que poner el nombre por el que te quieras conectar al servidor. Si no necesitas que sea accesible desde internet puedes poner alguno que puedas resolver con los dns de tu red interna. Sino, siempre puedes poner cualquier nombre y forzar en tu /etc/hosts ese nombre a la ip del servidor.
@Anónimo2: El error indica que el password para el usuario root no es válido. Revisa todos los pasos porque yo creo un usuario en Postgresql para el redmine y luego configuro ese para conectarse a la base de datos.
Saludos, Iván.
Excelente post!!
Hola, por favor necesito instalarlo con Mysql, ya trate dos veces distintas y no logro dejarlo configurado. Me ayudas con algun post, o link que me diga como hacer, segui los pasos de algun tutorial pero no lo puedo hacer andar. Mi problema creo que esta con ruby :(
@Inés: Nunca he instalado Redmine con Mysql así que no te puedo ayudar demasiado. Supongo que la única diferencia es que tendrás que instalar las gemas de ruby y los paquetes necesarios de mysql en lugar de los de Postgresql.
Saludos, Iván.
Buenas tardes amigo, excelente post, mis felicitaciones. Ya lo apliqué y me funcionó todo excepto los dos siguientes detalles:
1. Para ejecutarlo con el server web embebido debe hacerse con la siguiente línea:
ruby bin/rails server webrick -e production
y no con esta:
ruby script/rails server webrick -e production
2. El enlace simbólico de la APP recomiendo que se haga en /var/www
Es importante acotar que lo instalé con GNU/Linux Debian Jessie y Postgres 9.4
Publicar un comentario