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.