Redmine es una de las herramientas de software de gestión de proyectos y seguimiento de problemas de código abierto más populares. Es multiplataforma y multibase de datos y está construido sobre el marco Ruby on Rails.
Redmine incluye soporte para múltiples proyectos, wikis, sistema de seguimiento de problemas, foros, calendarios, notificaciones por correo electrónico y mucho más.
En este tutorial cubriremos los pasos necesarios para instalar y configurar la última versión de Redmine en un servidor CentOS 7 utilizando MariaDB como back-end de base de datos y Passenger + Nginx como servidor de aplicaciones Ruby.
Requisitos previos #
Asegúrese de cumplir con los siguientes requisitos previos antes de continuar con este tutorial:
- Nombre de dominio que apunta a la IP pública de su servidor. En este tutorial usaremos
example.com
. - Iniciar sesión como usuario con privilegios sudo.
Instale los paquetes necesarios para compilar Redmine y Ruby desde la fuente:
sudo yum install curl gpg gcc gcc-c++ make patch autoconf automake bison libffi-devel libtool
sudo yum install readline-devel sqlite-devel zlib-devel openssl-develh readline glibc-headers glibc-devel
sudo yum install mariadb-devel zlib libyaml-devel bzip2 iconv-devel ImageMagick ImageMagick-devel
Creando base de datos MySQL #
Redmine es compatible con MySQL/MariaDB, Microsoft SQL Server, SQLite 3 y PostgreSQL. En este tutorial usaremos MariaDB como back-end de base de datos.
Si no tiene instalado MariaDB o MySQL en su servidor CentOS, puede instalarlo siguiendo estas instrucciones.
Inicie sesión en el shell de MySQL escribiendo el siguiente comando:
sudo mysql
Desde el shell de MySQL, ejecute la siguiente instrucción SQL para crear una nueva base de datos:
CREATE DATABASE redmine CHARACTER SET utf8;
A continuación, cree una cuenta de usuario de MySQL y otorgue acceso a la base de datos:
GRANT ALL ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'change-with-strong-password';
Asegúrate de cambiar change-with-strong-password
con una contraseña segura. Una vez completado, salga del shell mysql escribiendo:
EXIT;
Instalando Pasajero y Nginx #
Passenger es un servidor de aplicaciones web rápido y liviano para Ruby, Node.js y Python que se puede integrar con Apache y Nginx. Instalaremos Passenger como un módulo Nginx.
Instale el repositorio EPEL y los paquetes requeridos:
sudo yum install epel-release yum-utils pygpgme
sudo yum-config-manager --enable epel
Habilite el depósito de pasajeros de Phusion:
sudo yum-config-manager --add-repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo
Una vez que el repositorio esté habilitado, actualice la lista de paquetes e instale Nginx y Passenger con:
sudo yum install nginx passenger passenger-devel
Creando Nuevo Usuario del Sistema #
Cree un nuevo usuario y grupo, que ejecutará la instancia de Redmine, por simplicidad llamaremos al usuario redmine
:
sudo useradd -m -U -r -d /opt/redmine redmine
Agregue el nginx
usuario al nuevo grupo de usuarios y cambie el /opt/redmine
permisos de directorio para que Nginx pueda acceder a él:
sudo usermod -a -G redmine nginx
sudo chmod 750 /opt/redmine
Instalando Ruby #
La versión de Ruby en los repositorios de CentOS está bastante desactualizada y no es compatible con Redmine. Instalaremos Ruby usando RVM.
Cambiar al usuario redmine
escribiendo:
sudo su - redmine
Importe las claves GPG e instale RVM:
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable
Para comenzar a usar la fuente RVM, el rvm
archivo:
source /opt/redmine/.rvm/scripts/rvm
Ahora podemos instalar Ruby ejecutando:
Si desea instalar Ruby a través de Rbenv, consulte esta guía.rvm install 2.5
rvm --default use 2.5
Instalando Redmine en CentOS #
Al momento de escribir este artículo, la última versión estable de Redmine es la versión 4.0.1.
Antes de continuar con los siguientes pasos, debe consultar la página de descarga de Redmine para ver si hay una versión más nueva disponible.
Asegúrate de ejecutar los siguientes pasos comoredmine
usuario. 1. Descargando Redmine #
Descarga el archivo de Redmine con el siguiente comando curl:
curl -L http://www.redmine.org/releases/redmine-4.0.1.tar.gz -o redmine.tar.gz
Una vez que se complete la descarga, extraiga el archivo:
tar -xvf redmine.tar.gz
2. Configuración de la base de datos de Redmine #
Copie el archivo de configuración de la base de datos de ejemplo de Redmine:
cp /opt/redmine/redmine-4.0.1/config/database.yml.example /opt/redmine/redmine-4.0.1/config/database.yml
Abra el archivo con su editor de texto:
nano /opt/redmine/redmine-4.0.1/config/database.yml
Busque la production
e ingrese la base de datos MySQL y la información del usuario que creamos anteriormente:
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "change-with-strong-password"
encoding: utf8
Una vez hecho esto, guarde el archivo y salga del editor.
3. Instalación de dependencias de Ruby #
Navega a redmine-4.0.1
directorio e instale el paquete y otras dependencias de Ruby:
cd ~/redmine-4.0.1
gem install bundler --no-rdoc --no-ri
bundle install --without development test postgresql sqlite
4. Generar claves y migrar la base de datos #
Ejecute el siguiente comando para generar claves y migrar la base de datos:
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
Configuración de Nginx #
Vuelve a tu usuario sudo:
exit
Abra su editor de texto y cree el siguiente archivo de bloque del servidor Nginx:
sudo nano /etc/nginx/conf.d/example.com.conf
/etc/nginx/conf.d/example.com.confpassenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /opt/redmine/.rvm/gems/default/wrappers/ruby;
passenger_instance_registry_dir /var/run/passenger-instreg;
server {
listen 80;
server_name example.com www.example.com;
root /opt/redmine/redmine-4.0.1/public;
# log files
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
passenger_enabled on;
passenger_min_instances 1;
client_max_body_size 10m;
}
No olvides reemplazar example.com con tu dominio de Redmine. Antes de reiniciar el servicio Nginx, haga una prueba para asegurarse de que no haya errores de sintaxis:
sudo nginx -t
Si no hay errores, la salida debería verse así:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Finalmente, reinicie el servicio Nginx escribiendo:
sudo systemctl restart nginx
Configurar Nginx con SSL #
Si no tiene un certificado SSL de confianza para su dominio, puede generar un certificado SSL gratuito de Let's Encrypt siguiendo estas instrucciones.
Una vez que se genera el certificado, edite la configuración del dominio Nginx de la siguiente manera:
sudo nano /etc/nginx/conf.d/example.com.conf
/etc/nginx/conf.d/example.compassenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /opt/redmine/.rvm/gems/default/wrappers/ruby;
passenger_instance_registry_dir /var/run/passenger-instreg;
# Redirect HTTP -> HTTPS
server {
listen 80;
server_name www.example.com example.com;
include snippets/letsencrypt.conf;
return 301 https://example.com$request_uri;
}
# Redirect WWW -> NON WWW
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
root /opt/redmine/redmine-4.0.1/public;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
# log files
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
passenger_enabled on;
passenger_min_instances 1;
client_max_body_size 10m;
}
No olvide reemplazar example.com con su dominio de Redmine y establezca la ruta correcta a los archivos del certificado SSL. Todas las solicitudes HTTP se redirigirán a HTTPS. Accediendo a Redmine #
Abra su navegador, escriba su dominio y suponiendo que la instalación sea exitosa, aparecerá una pantalla similar a la siguiente:
Las credenciales de inicio de sesión predeterminadas para Redmine son:
- Nombre de usuario:administrador
- Contraseña:administrador
Cuando inicie sesión por primera vez, se le pedirá que cambie la contraseña como se muestra a continuación:
Una vez que cambie la contraseña, será redirigido a la página de la cuenta de usuario.