Cómo instalar Redmine en CentOS 8

En esta entrada vamos a ver cómo instalar Redmine en CentOS 8 paso a paso, de manera que al final de este artículo podrás empezar a trabajar con este administrador de proyectos desde tu servidor o VPS CentOS. La instalación no es un proceso trivial, pero en esta guía te detallaremos todos los pasos necesarios para llegar a la meta con éxito.

Antes de instalar Redmine en CentOS 8

Si quieres seguir los pasos de esta guía de instalación de Redmine en CentOS 8 debes satisfacer los siguientes requisitos básicos:

  • Una instalación actualizada de CentOS 8.
  • Un entorno o pila LAMP (servicio web con PHP y servicio de bases de datos).
  • El repositorio EPEL.
  • Conexión a Internet.

Si no dispones aún del entorno necesario sin duda te servirán nuestras guías de instalación de la pila LAMP en CentOS 8 e instalación del repositorio EPEL en CentOS 8.

También necesitaremos algunas herramientas que podemos obtener desde los repositorios de CentOS 8, por lo que actualizamos las listas de paquetes:

~$ sudo yum update

E instalamos las herramientas necesarias:

~$ sudo yum install -y policycoreutils-python-utils tar wget

Cómo descargar Redmine para CentOS 8

Vamos a descargar Redmine para CentOS 8 desde la sección de descargas del sitio web oficial, donde encontraremos la última versión estable:

como descargar redmine para centos 8

Encontraremos el paquete de Redmine en formatos .tar.gz y .zip. Aunque podemos realizar la descarga directamente desde el navegador, en este tutorial copiaremos el enlace del paquete .tar.gz para descargar desde consola con el comando wget (ideal en caso de trabajar en remoto):

~$ wget https://www.redmine.org/releases/redmine-4.2.1.tar.gz

Cómo instalar Redmine en CentOS 8

El proceso de instalar Redmine en CentOS 8 es bastante laborioso y no está exento de problemas, es fácil quedarse estancado si no se cuenta con una guía exhaustiva, como la presente. A continuación veremos los pasos necesarios para hacer funcionar esta aplicación.

Archivos de Redmine

Creamos un directorio para Redmine:

~$ sudo mkdir /opt/redmine

Y descomprimimos el paquete que acabamos de descargar:

~$ sudo tar xf redmine-4.2.1.tar.gz -C /opt/redmine/

Instalar los pre-requisitos

Instalamos ciertas dependencias para la aplicación y el servicio web:

~$ sudo yum install -y gcc make patch redhat-rpm-config ruby-devel rubygem-bundler zlib-devel mod_passenger passenger-devel

Dependencias según el servicio de bases de datos

En el caso de tener instalado MariaDB instalaremos además la biblioteca de desarrollo:

~$ sudo yum install -y mariadb-devel

Si se trata de MySQL:

~$ sudo yum install -y mysql-devel

Y para PostgreSQL, teniendo en cuenta la versión que tengamos instalada (en este caso procedente de los repositorios oficiales de este motor de base de datos):

~$ sudo yum install -y postgresql13-devel

Servicio de bases de datos

En este paso prepararemos el servicio de bases de datos sobre sobre el que trabajará Redmine, teniendo en cuenta los más populares en CentOS 8.

MariaDB/MySQL

Conectamos con el cliente mysql y un usuario administrador:

~$ mysql -u root -p

Creamos la base de datos:

> create database redmine charset utf8mb4 collate utf8mb4_unicode_ci;

En MySQL 5 o MariaDB creamos el usuario de la forma habitual:

> create user redmine@localhost identified by 'XXXXXXXX';

Pero en MySQL 8 al crear el usuario es importante especificar el plugin de autenticación adecuado:

> create user redmine@localhost identified with mysql_native_password by 'XXXXXXXX';

Damos los permisos necesarios al usuario sobre la base:

> grant all privileges on redmine.* to redmine@localhost;

Y cerramos la sesión:

> exit

PostgreSQL

Iniciamos sesión con el cliente psql y el usuario postgres:

~$ sudo -iu postgres psql

Creamos un rol con contraseña:

# create role redmine login encrypted password 'XXXXXXXX' noinherit valid until 'infinity';

Creamos la base de datos:

# create database redmine with encoding='utf8' owner='redmine';

Y cerramos la conexión:

# exit

Instalación de Redmine

Cambiamos el directorio de trabajo al nuevo subdirectorio de Redmine:

~$ cd /opt/redmine/redmine-4.2.1/

Creamos el archivo de configuración de bases de datos para Redmine:

$ nano config/database.yml

Si trabajamos con MariaDB/MySQL el contenido será el siguiente:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "XXXXXXXX"
  # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
  encoding: utf8mb4

Mientras que si se trata de PostgreSQL será este otro:

production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "XXXXXXXX"
  encoding: utf8

Las variables database, username y password deben contener los valores que usaste anteriormente en la preparación del servicio de bases de datos.

Guardamos los cambios y cerramos el archivo.

Compilación

Editamos el archivo Gemfile:

$ nano Gemfile

En este archivo hay algunas líneas relativas a sistemas Windows que provocarán avisos al realizar la instalación:

...
gem 'tzinfo-data', platforms: [:mingw, :x64_mingw, :mswin]
...
  gem "ffi", platforms: [:mingw, :x64_mingw, :mswin]
...

Desactivamos dichas líneas insertando un carácter # al inicio de línea:

...
#gem 'tzinfo-data', platforms: [:mingw, :x64_mingw, :mswin]
...
#  gem "ffi", platforms: [:mingw, :x64_mingw, :mswin]
...

Guardamos el archivo y comenzamos la compilación.

Si usamos PostgreSQL, instalamos la gema para usar dicha base de datos:

$ sudo gem install pg -- --with-pg-config=/usr/pgsql-13/bin/pg_config

Independientemente del motor de bases de datos usado, ejecutamos bundle para compilar el grupo principal de gemas:

$ bundle install --without development test

Es posible que durante el proceso se solicite la contraseña del usuario para realizar algunas tareas con sudo.

En el momento de redactar este tutorial algunas gemas no quedan correctamente instaladas tras este proceso, así que las instalamos de nuevo con sudo:

$ sudo gem pristine racc nio4r websocket-driver redcarpet

Finalmente, si usas MariaDB/MySQL también habrá que hacer lo mismo con la gema correspondiente:

$ sudo gem pristine mysql2

Generamos el token para cifrar las cookies del sitio:

$ bundle exec rake generate_secret_token

Si esta operación falla debida a la falta de alguna gema, repite el paso interior para instalar la gema concreta con sudo.

Preparamos la base de datos para Redmine:

$ RAILS_ENV=production bundle exec rake db:migrate

Cargamos los datos iniciales:

$ RAILS_ENV=production bundle exec rake redmine:load_default_data

Nos solicitará el idioma a instalar:

...
Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]

En este tutorial elegiremos el español, por lo que teclearemos es.

Ya podemos salir de este directorio y regresar a nuestro directorio personal:

$ cd

Concedemos la propiedad del directorio de Redmine al usuario con el que corre el servicio web:

~$ sudo chown -R apache: /opt/redmine/redmine-4.2.1/

Ajustamos los permisos de lectura y escritura:

~$ sudo chmod -R 755 /opt/redmine/redmine-4.2.1/{files,log,tmp,public/plugin_assets}

Creamos un enlace simbólico:

~$ sudo ln -s /opt/redmine/redmine-4.2.1/public/ /var/www/html/redmine

Configuración de Apache

Es posible que la configuración por defecto del módulo Passenger de Apache por defecto sea errónea. Obtendremos el valor de la raíz de archivos del módulo con el comando passenger-config:

~$ passenger-config --root
/usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini

Editamos la configuración del módulo Passenger:

~$ sudo nano /etc/httpd/conf.d/passenger.conf

Y buscamos la directiva PassengerRoot:

...
   PassengerRoot /usr/share/passenger/phusion_passenger/locations.ini
...

Podemos comprobar que el valor por defecto difiere del valor del sistema, así que podemos cambiarlo o desactivar la directiva presente y añadir una nueva con el valor correcto:

...
#   PassengerRoot /usr/share/passenger/phusion_passenger/locations.ini
   PassengerRoot /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini
...

Dentro del mismo bloque IfModule, añadimos la directiva PassengerUser con el valor del usuario con el que corre el servicio web:

...
   PassengerUser apache
...

Ya podemos guardar y cerrar este archivo.

Ahora es turno de crear la configuración de Apache para Redmine:

~$ sudo nano /etc/httpd/conf.d/redmine.conf

Con el contenido:

<Directory /var/www/html/redmine>
        RailsEnv production
        RailsBaseURI /redmine
        Options -MultiViews
</Directory>

Guardamos el archivo y reiniciamos el servicio web:

~$ sudo systemctl restart httpd

Cómo acceder a Redmine en CentOS 8 por primera vez

En caso de usar SELinux, antes de acceder a Redmine en CentOS 8 desde un navegador por primera vez, debemos desactivarlo temporalmente:

~$ sudo setenforce 0

Accedemos a Redmine desde el navegador, añadiendo el alias /redmine a la dirección IP, nombre DNS, dominio, etc. de la máquina CentOS 8.

Por ejemplo, la máquina CentOS 8 sobre la que hemos preparado este artículo es accesible en el subdominio centos8.local.lan, así que accedemos empleando http://centos8.local.lan/redmine como URL:

como instalar redmine en centos 8

El primer acceso puede tomar unos instantes. Una vez mostrada la página de inicio, iniciamos sesión mediante el enlace «Iniciar sesión«:

instalar redmine en centos 8

Utilizamos el usuario administrador por defecto y su contraseña, que son admin y admin, respectivamente.

Automáticamente Redmine nos obliga a cambiar la contraseña por seguridad:

instalando redmine en centos 8

Una vez cambiada la contraseña se nos redirige a la página del perfil del administrador, donde se nos comunica que la contraseña ha sido cambiada con éxito:

redmine para centos 8

En este momento, si usas SELinux en tu sistema y lo has desactivado hace unos instantes según lo dicho antes, regresamos a consola y cremos un módulo de política de SELinux para el módulo Passenger de Apache:

~$ sudo grep httpd /var/log/audit/audit.log | sudo audit2allow -M passenger

Cargamos esta nueva política desde el archivo que acabamos de crear:

~$ sudo semodule -i passenger.pp

Se puede borrar el archivo, puesto que no lo neceistaremos más:

~$ sudo rm passenger.pp

Y ya podemos activar SELinux de nuevo:

~$ sudo setenforce 1

A partir de este momento seguiremos usando la aplicación con normalidad.

Por ejemplo, podríamos visitar el área de administración:

redmine en centos 8

¡Todo listo para trabajar y gestionar tus proyectos con Redmine en CentOS 8!

Conclusión

Ahora que sabes cómo instalar Redmine en CentOS 8 ya puedes trabajar con este fantástico gestor de proyectos. Habrás visto que el proceso de instalación dista bastante de ser simple y, créeme, teniendo los pasos ordenados a mano, te ahorras un buen dolor de cabeza gracias a esta guía.

¡Apoya comoinstalar.me!

¿Ya funciona Redmine en tu máquina CentOS 8? Si es así y quieres agradecérmelo, puedes hacerlo dejando 1 $ de propina con PayPal:

O, si te sientes especialmente agradecido, invitándome a un café:

¡Gracias!

Valora esta entrada

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies