Cómo instalar y configurar Redmine en CentOS

Redmine es un popular sistema de gestión de proyectos y seguimiento de incidencias gratuito y de código abierto. Es compatible con las bases de datos PostgreSQL y MariaDB y está basado en el framework Ruby on Rails. Es compatible con complementos de terceros, lo que te permite configurar múltiples proyectos, wikis y foros. Ofrece una amplia gama de funciones, como notificaciones por correo electrónico y feeds, compatibilidad con varios idiomas, control de acceso basado en roles, gestión de archivos, etc.

Este tutorial explicará cómo instalar el sistema de gestión de proyectos Redmine en CentOS.

Requisitos previos

  • Un servidor que ejecute CentOS 8.
  • Una contraseña de root configurada en el servidor.

Instalar las dependencias necesarias

Antes de empezar, necesitarás instalar algunas dependencias en tu servidor. Puedes instalarlas todas utilizando el siguiente comando:

dnf group install "Development Tools"
dnf install zlib-devel curl-devel openssl-devel -y

Una vez instalados todos los paquetes, puedes pasar al siguiente paso.

Instalar y configurar la base de datos MariaDB

Redmine utiliza MariaDB como backend de base de datos, por lo que necesitarás instalar el servidor de base de datos MariaDB en tu servidor. Puedes instalarlo utilizando el siguiente comando:

dnf install mariadb-server mariadb-devel -y

Una vez instalado el servidor MariaDB, inicia el servicio MariaDB y habilítalo para que se inicie al reiniciar el sistema:

systemctl start mariadb
systemctl enable mariadb

A continuación, inicia sesión en el shell de MariaDB con el siguiente comando:

mysql

Una vez que hayas iniciado sesión, crea una base de datos y un usuario para Redmine con el siguiente comando:

MariaDB [(none)]> CREATE DATABASE redmine CHARACTER SET utf8mb4;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'password';

A continuación, vacía los privilegios y sal de MariaDB con el siguiente comando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Ruby y Passenger

A continuación, tendrás que instalar Ruby y Passenger en tu sistema.

En primer lugar, instala y habilita el repositorio EPEL con el siguiente comando:

dnf install epel-release -y
dnf config-manager --enable epel -y

A continuación, instala Ruby y Passenger con el siguiente comando:

dnf install mod_passenger passenger passenger-devel ruby ruby-devel -y

Una vez instalados todos los paquetes, puedes pasar al siguiente paso.

Instalar Redmine

En primer lugar, tendrás que crear un usuario independiente para Redmine. Puedes crearlo con el siguiente comando:

useradd -m -U -r -d /opt/redmine redmine

A continuación, accede al usuario Redmine y descarga la última versión de Redmine con el siguiente comando:

su - redmine
wget --no-check-certificate https://www.redmine.org/releases/redmine-4.2.1.zip

Una vez finalizada la descarga, descomprime el archivo descargado con el siguiente comando:

unzip redmine-4.2.1.zip

A continuación, cambia el nombre del directorio extraído con el siguiente comando:

mv redmine-4.2.1 redmine

A continuación, cambia el directorio a redmine y copia el archivo de configuración de la base de datos de ejemplo:

cd redmine
cp config/database.yml.example config/database.yml

A continuación, edita el archivo de configuración de la base de datos y define la configuración de tu base de datos:

nano config/database.yml

Cambia las siguientes líneas que coincidan con tu base de datos:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "password"
  encoding: utf8mb4

Guarda y cierra el archivo y luego instala el Bundler con el siguiente comando:

gem install bundler --no-rdoc --no-ri

A continuación, instala otras dependencias con el siguiente comando:

bundle install --without development test postgresql sqlite --path vendor/bundle

A continuación, genera un token secreto con el siguiente comando:

bundle exec rake generate_secret_token

A continuación, genera los objetos de base de datos que necesita la aplicación con el siguiente comando:

RAILS_ENV=production bundle exec rake db:migrate

Por último, inicia la aplicación con el siguiente comando:

bundle exec rails server webrick -e production

Deberías ver la siguiente salida:

/usr/bin/ruby: warning: shebang line ending with \r may cause problems
=> Booting WEBrick
=> Rails 5.2.5 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
[2021-06-24 00:40:15] INFO  WEBrick 1.4.2
[2021-06-24 00:40:15] INFO  ruby 2.5.5 (2019-03-15) [x86_64-linux]
[2021-06-24 00:40:15] INFO  WEBrick::HTTPServer#start: pid=43076 port=3000

Pulsa CTRL + C para detener la aplicación.

A continuación, sal del usuario de Redmine con el siguiente comando:

exit

Crear un archivo de servicio Systemd para Redmine

A continuación, tendrás que crear un archivo de servicio systemd para gestionar la aplicación Redmine. Puedes crearlo con el siguiente comando:

nano /usr/lib/systemd/system/redmine.service

Añade las siguientes líneas:

[Unit]
Description=Redmine server
After=syslog.target
After=network.target

[Service]
Type=simple
User=redmine
Group=redmine
ExecStart=/bin/ruby /opt/redmine/redmine/bin/rails server webrick -e production

# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300

[Install]
WantedBy=multi-user.target

Guarda y cierra el archivo y, a continuación, vuelve a cargar el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicia el servicio Redmine y habilítalo para que se inicie al reiniciar el sistema:

systemctl start redmine
systemctl enable redmine

Ahora, comprueba el estado de Redmine con el siguiente comando:

systemctl status redmine

Deberías ver la siguiente salida:

? redmine.service - Redmine server
   Loaded: loaded (/usr/lib/systemd/system/redmine.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-06-24 04:26:51 EDT; 1min 37s ago
 Main PID: 44044 (ruby)
    Tasks: 3 (limit: 25014)
   Memory: 121.6M
   CGroup: /system.slice/redmine.service
           ??44044 /bin/ruby /opt/redmine/redmine/bin/rails server webrick -e production

Jun 24 04:26:51 centos8 systemd[1]: Started Redmine server.
Jun 24 04:26:52 centos8 ruby[44044]: /bin/ruby: warning: shebang line ending with \r may cause problems
Jun 24 04:26:56 centos8 ruby[44044]: [2021-06-24 04:26:56] INFO  WEBrick 1.4.2
Jun 24 04:26:56 centos8 ruby[44044]: [2021-06-24 04:26:56] INFO  ruby 2.5.5 (2019-03-15) [x86_64-linux]
Jun 24 04:26:56 centos8 ruby[44044]: [2021-06-24 04:26:56] INFO  WEBrick::HTTPServer#start: pid=44044 port=3000

En este punto, Redmine está iniciado y escuchando en el puerto 3000. Puedes comprobarlo con el siguiente comando:

ss -antpl | grep 3000

Deberías obtener la siguiente salida:

LISTEN    0         128                0.0.0.0:3000             0.0.0.0:*        users:(("ruby",pid=44044,fd=9))   

Configurar Nginx como proxy inverso para Redmine

A continuación, tendrás que instalar y configurar Nginx como proxy inverso para Redmine. En primer lugar, instala el servidor Nginx con el siguiente comando:

dnf install nginx -y

A continuación, crea un archivo de configuración de host virtual Nginx con el siguiente comando:

nano /etc/nginx/conf.d/redmine.conf

Añade las siguientes líneas:

upstream backend {
  server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name redmine.example.com;
    access_log /var/log/nginx/redmine.example.com-access.log;
    error_log /var/log/nginx/redmine.example.com-error.log;

    location / {
        proxy_pass http://backend/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;
        proxy_redirect off;
    }
}

Guarda y cierra el archivo y, a continuación, comprueba si Nginx tiene algún error de sintaxis con el siguiente comando:

nginx -t

Deberías obtener la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, inicia el servicio Nginx y habilítalo para que se inicie al reiniciar el sistema:

systemctl start nginx
systemctl enable nginx

También puedes comprobar el estado del Nginx con el siguiente comando:

systemctl status nginx

Deberías obtener la siguiente salida:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/nginx.service.d
           ??php-fpm.conf
   Active: active (running) since Thu 2021-06-24 04:33:48 EDT; 25s ago
  Process: 45832 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 45830 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 45828 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 45833 (nginx)
    Tasks: 3 (limit: 25014)
   Memory: 5.3M
   CGroup: /system.slice/nginx.service
           ??45833 nginx: master process /usr/sbin/nginx
           ??45834 nginx: worker process
           ??45835 nginx: worker process

Jun 24 04:33:48 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jun 24 04:33:48 centos8 nginx[45830]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jun 24 04:33:48 centos8 nginx[45830]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jun 24 04:33:48 centos8 systemd[1]: Started The nginx HTTP and reverse proxy server.

Acceder a Redmine

Ahora, puedes acceder a la interfaz web de Redmine utilizando la URL http://redmine.example.com. Deberías ver la siguiente página:

Haz clic en el botón Iniciar sesión. Deberías ver la página de inicio de sesión de Redmine:

Introduce el usuario y la contraseña por defecto como admin y pulsa el botón Iniciar sesión. Serás redirigido a la pantalla de cambio de contraseña:

Establece tu nueva contraseña de administrador y haz clic en el botón Guardar para guardar los cambios.

Conclusión

¡Enhorabuena! Has instalado correctamente Redmine en CentOS 8 con Nginx. Ahora puedes utilizar Redmine en tu organización y gestionar tu proyecto desde la ubicación central.

También te podría gustar...