Guida alle tecnologie

Installare Redmine su Rocky Linux con PostgreSQL e Apache (Passenger)

8 min read Sysadmin Aggiornato 22 Oct 2025
Installare Redmine su Rocky Linux con PostgreSQL e Apache
Installare Redmine su Rocky Linux con PostgreSQL e Apache

Questo guida mostra come installare Redmine 4.2.x su Rocky Linux 8 con PostgreSQL, Ruby 2.7 via RVM e Phusion Passenger integrato con Apache/httpd. Copre prerequisiti, dipendenze, configurazione database, installazione di Passenger, virtual host Apache (HTTP/HTTPS), verifica, sicurezza, backup e checklist operative.

Importante: sostituire nomi host, password e percorsi di esempio con i valori dell’ambiente di produzione.

Indicazioni principali

  • Intento primario: installare Redmine in produzione su Rocky Linux con PostgreSQL e Apache
  • Varianti correlate: Redmine su CentOS/AlmaLinux, Redmine con MySQL, Redmine + Nginx + Passenger, deployment containerizzato, aggiornamento di Redmine

Panoramica e definizione rapida

Redmine è un software open source per la gestione dei progetti e il tracciamento dei ticket, sviluppato principalmente in Ruby on Rails. Nell’architettura proposta Redmine viene eseguito con Ruby 2.7 gestito da RVM, persiste i dati su PostgreSQL e viene esposto tramite Phusion Passenger integrato in Apache/httpd.

Nota: questa guida assume privilegi di root o sudo e una conoscenza di base della shell Linux.

Requisiti e ambiente di esempio

Ambiente usato nell’esempio:

  • Sistema operativo: Rocky Linux 8.4
  • IP: 192.168.1.10
  • Privilegi: root o sudo
  • Nome a dominio: redmine.example.com

Obiettivi pratici della guida:

  • Installare Ruby 2.7 con RVM
  • Configurare PostgreSQL per Redmine
  • Installare Passenger e integrarlo con Apache
  • Configurare virtual host Apache per Redmine (HTTP e HTTPS)
  • Installare e configurare Redmine

Prerequisito raccomandato: completare l’installazione di PostgreSQL prima di procedere.

Fattore di rischio e note importanti

Important: eseguire questa guida in un ambiente di test prima della produzione. Conservare backup dei dati PostgreSQL e dei file di Redmine prima di ogni aggiornamento.

Installare le dipendenze

Eseguire i comandi seguenti con sudo o come root.

  1. Abilitare il repository EPEL
sudo dnf install epel-release -y
  1. Installare pacchetti di base necessari
sudo dnf install curl gpg gnupg2 gcc gcc-c++ make patch autoconf automake bison ImageMagick libffi-devel libtool patch redhat-rpm-config readline-devel postgresql-devel zlib-devel openssl-devel -y
  1. Pacchetti per la compilazione del modulo Apache/Passenger
sudo dnf install libcurl-devel httpd-devel httpd apr-devel apr-util-devel -y
  1. Avviare e abilitare il servizio httpd
sudo systemctl enable --now httpd
sudo systemctl status httpd

Stato del servizio httpd e avvio

Nota: se la macchina è dotata di firewall attivo, aprire le porte 80 e 443.

Installare RVM e Ruby 2.7

Redmine 4.2.x richiede Ruby 2.7. Seguire i passaggi per installare RVM e Ruby.

  1. Importare le chiavi GPG dei manutentori di RVM
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
  1. Installare RVM e caricare l’ambiente
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh

Installazione di RVM

  1. Ricaricare RVM e soddisfare i requisiti
rvm reload
rvm requirements run

Requisiti RVM

  1. Installare Ruby 2.7
rvm install 2.7
rvm use 2.7 --default
rvm list
ruby --version

Ruby 2.7 installato con RVM

Verificare che la versione attiva sia Ruby 2.7.x.

Configurare PostgreSQL per Redmine

Se PostgreSQL non è già installato, installarlo e avviarlo secondo le procedure standard per Rocky Linux.

  1. Accedere alla shell di PostgreSQL
sudo -u postgres psql
  1. Creare ruolo e database per Redmine (sostituire la password con una forte)
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'StrongPasswordRedmine' NOINHERIT VALID UNTIL 'infinity';
CREATE DATABASE redminedb WITH ENCODING='UTF8' OWNER=redmine;
\q

Creazione database PostgreSQL per Redmine

Consiglio: gestire i segreti con strumenti come vault o almeno file di configurazione accessibili solo a utenti privilegiati.

Scaricare e preparare Redmine

In questo esempio si installa Redmine 4.2.3 in /var/www/redmine.

  1. Scaricare l’archivio e estrarlo
cd /var/www/
wget https://www.redmine.org/releases/redmine-4.2.3.tar.gz
tar -xzvf redmine-4.2.3.tar.gz
mv redmine-*/ redmine
  1. Configurare il database
export REDMINE=/var/www/redmine
cd $REDMINE
nano config/database.yml

Inserire la sezione production come nel seguente esempio (modificare nome database, utente e password):

production:
  adapter: postgresql
  database: redminedb
  host: localhost
  username: redmine
  password: 'StrongPasswordRedmine'
  encoding: utf8

Salvare e uscire.

  1. Installare Bundler e dipendenze Ruby
gem install bundler
bundle config set --local path 'vendor/bundle'
bundle config set --local without 'development test'
bundle install

Configurazione bundle per Redmine

  1. Generare il token segreto e migrare il database
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate

Generare secret token e migrare DB

  1. Impostare proprietà dei file
sudo chown -R apache:apache $REDMINE

Nota: se si utilizza un altro utente web (ad esempio nginx), adattare l’ownership.

Installare e configurare Phusion Passenger

Passenger è il server applicazioni consigliato per applicazioni Rails in produzione quando si usa Apache o Nginx.

  1. Installare il gem passenger
gem install passenger

Installare Passenger

  1. Compilare il modulo Apache per Passenger
passenger-install-apache2-module

Durante l’installazione il programma mostrerà le istruzioni da aggiungere a un file di configurazione Apache.

  1. Creare il file di configurazione di Passenger per Apache
sudo nano /etc/httpd/conf.d/passenger.conf

Esempio di contenuto (verificare i percorsi di passenger e ruby prodotti dall’installazione):

LoadModule passenger_module /usr/local/rvm/gems/ruby-2.7.2/gems/passenger-6.0.12/buildout/apache2/mod_passenger.so

  PassengerRoot /usr/local/rvm/gems/ruby-2.7.2/gems/passenger-6.0.12
  PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.7.2/wrappers/ruby
  1. Riavviare Apache
sudo systemctl restart httpd

Configurare apache per passenger

Verificare l’output dell’installer e assicurarsi che non siano presenti errori.

Installazione Passenger completata

Configurare httpd (virtual host) per Redmine

  1. Creare il virtual host base (HTTP)
sudo nano /etc/httpd/conf.d/redmine.conf

Esempio di configurazione HTTP:

PassengerRuby /usr/local/rvm/gems/ruby-2.7.2/wrappers/ruby


  ServerName redmine.example.io
  DocumentRoot "/var/www/redmine/public"

  ErrorLog logs/redmine_error_log
  LogLevel warn

  
    Options Indexes ExecCGI FollowSymLinks
    Require all granted
    AllowOverride all
  
  1. Configurazione HTTPS con redirect da HTTP (esempio con percorsi Let’s Encrypt)
PassengerRuby /usr/local/rvm/gems/ruby-2.7.2/wrappers/ruby


  ServerName redmine.example.io
  Redirect permanent / https://redmine.example.io/



  ServerName redmine.example.io

  Protocols h2 http/1.1

  DocumentRoot "/var/www/redmine/public"

  ErrorLog /var/log/httpd/redmine.example.io-error.log
  CustomLog /var/log/httpd/redmine.example.io-access.log combined

  SSLEngine On
  SSLCertificateFile /etc/letsencrypt/live/redmine.example.io/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/redmine.example.io/privkey.pem

  
    Options Indexes ExecCGI FollowSymLinks
    Require all granted
    AllowOverride all
  

Importante: abilitare mod_ssl e ottenere certificati validi (Let’s Encrypt, CA interna, ecc.).

  1. Verificare configurazione e riavviare Apache
apachectl configtest
sudo systemctl restart httpd

Configurazione Virtual Host Apache per Redmine

Verificare l’installazione di Redmine

Aprire il browser su:

https://redmine.example.io/login

Credenziali di default dopo installazione iniziale:

  • Username: admin
  • Password: admin
  1. Primo accesso: login con admin/admin

Schermata login Redmine

  1. Reimpostare la password admin per sicurezza

Cambia password di default

  1. Controllare dati account e informazioni installazione

Dettagli account admin

  1. Pagina amministrazione e caricamento lingua predefinita

Dashboard amministrazione Redmine

Se tutto funziona, la pagina di amministrazione mostrerà le informazioni sull’installazione.

Elenco utenti Redmine

Dettagli installazione Redmine

Risoluzione dei problemi comuni

  • Errore Passenger o modulo non caricato: ricontrollare i percorsi indicati dall’installer passenger e che il file mod_passenger.so esista.
  • Errori bundle install: assicurarsi che postgresql-devel e le dipendenze C siano installate; verificare la versione di Ruby.
  • Permessi 403 su /login: verificare ownership e permessi della directory public e che AllowOverride all sia impostato.
  • Timeout o 502: controllare i log Apache e i log di produzione di Redmine (log/production.log) per stacktrace.

Comandi utili per il debug:

sudo tail -n 200 /var/log/httpd/error_log
sudo tail -n 200 /var/www/redmine/log/production.log
sudo systemctl status httpd

Sicurezza e hardening raccomandati

  • Eseguire Redmine dietro HTTPS con certificati validi.
  • Limitare l’accesso SSH e usare chiavi pubbliche.
  • Proteggere il file database.yml: permessi 640 e proprietario root:apache o simile.
sudo chmod 640 /var/www/redmine/config/database.yml
sudo chown root:apache /var/www/redmine/config/database.yml
  • Abilitare SELinux in modalità enforcing e applicare i contesti corretti per httpd. Testare prima su ambiente non critico.
  • Aggiornare regolarmente gem e Redmine, testando aggiornamenti in staging.
  • Disabilitare account o funzioni non utilizzate e impostare politiche password robuste.

Nota GDPR: se Redmine elabora dati personali, documentare la base giuridica, il periodo di conservazione dei dati e i ruoli di accesso. Utilizzare crittografia a riposo e backup sicuri.

Backup e manutenzione

  • Backup database PostgreSQL (esempio con pg_dump):
pg_dump -U redmine -h localhost -F c redminedb > /root/backups/redminedb-$(date +%F).dump
  • Backup file applicazione e allegati:
tar -czf /root/backups/redmine-files-$(date +%F).tar.gz /var/www/redmine/files
  • Verificare restore periodicamente su un ambiente separato.

Aggiornamenti e migrazioni

Processo di aggiornamento consigliato:

  1. Eseguire backup completo di database e filesystem.
  2. Testare l’upgrade in staging.
  3. Aggiornare le gem richieste e la versione Redmine seguendo la guida ufficiale.
  4. Eseguire le migrazioni RAILS_ENV=production bundle exec rake db:migrate.
  5. Eseguire sanity check e rollback se necessario.

Checklist rapida per il deploy (SOP minimale)

  • Sistema aggiornato (dnf update)
  • EPEL abilitato
  • PostgreSQL installato e database creato
  • RVM e Ruby 2.7 installati
  • Dipendenze C e pacchetti dev installati
  • Redmine estratto in /var/www/redmine
  • config/database.yml configurato e test connessione
  • bundle install completato senza errori
  • Passenger installato e modulo Apache caricato
  • Virtual host Apache configurato per HTTP/HTTPS
  • Certificati SSL in ordine (se HTTPS)
  • Ownership dei file impostata su apache
  • Primo accesso e cambio password admin
  • Backup pianificato automatico

Checklist ruoli (azione raccomandata per ruolo)

  • Sysadmin:
    • Preparare host, firewall e certificati
    • Installare pacchetti di sistema
    • Configurare Apache e Passenger
  • DBA:
    • Installare e configurare PostgreSQL
    • Gestire backup e restore
    • Monitorare performance delle query
  • Applicazioni/Dev:
    • Gestire gem e plugin
    • Eseguire test su staging per aggiornamenti
    • Installare plugin verificandone compatibilità
  • Security Officer:
    • Verificare configurazioni SSL/TLS
    • Revisionare permessi e policy password
    • Pianificare audit e logging

Esempi di casi in cui questa procedura può fallire

  • Ambienti con policy SELinux non allineate: possono impedire l’accesso di Apache ai file Ruby.
  • Versioni di Ruby non compatibili: usare 2.7 per Redmine 4.2.x.
  • Plugin incompatibili dopo aggiornamento: testare sempre prima.
  • Risorse di sistema insufficienti: Passenger può saturare memoria se non configurato correttamente.

Mini-metodologia per rollout sicuro

  1. Deploy su ambiente di test che replica produzione.
  2. Esecuzione test funzionali e carico leggero.
  3. Pianificare rollback e avere snapshot backup.
  4. Eseguire deploy fuori orario di punta.
  5. Monitorare log e metriche nelle prime 24 ore.

Matrice di priorità: Impatto × Sforzo (qualitativa)

  • HTTPS e certificati: impatto alto, sforzo basso — PRIORITARIO
  • Backup e restore testati: impatto alto, sforzo medio — OBBLIGATORIO
  • SELinux controintuitivo: impatto medio, sforzo medio — TESTARE
  • Plugin di terze parti: impatto variabile, sforzo medio — TESTARE

Come aggiungere plugin e SMTP (indicazioni rapide)

  • Plugin: scaricare la cartella del plugin in /var/www/redmine/plugins e poi eseguire bundle install e rake db:migrate se richiesto.
  • SMTP: aggiungere la configurazione SMTP in config/configuration.yml seguendo la sintassi ufficiale di Redmine.

Piccola galleria di edge-case e note locale

  • Se il server è dietro un proxy o load balancer, aggiungere header X-Forwarded-Proto e configurare Protocols/SSL in Apache.
  • Per installazioni in Italia: considerare normativa sulla retention dei dati personali e requisiti privacy locali.

Criteri di verifica (Критерии приёмки)

  • La pagina login di Redmine è raggiungibile via HTTPS
  • Login con admin e cambio password riuscito
  • Creazione di un progetto di test e apertura/chiusura di un issue
  • Backup del DB eseguito e ripristinato con successo in ambiente di test

Sommario

Hai installato Redmine 4.2.x su Rocky Linux usando PostgreSQL, Ruby 2.7 via RVM e Phusion Passenger con Apache. Sono stati mostrati i passaggi per installare dipendenze, creare database PostgreSQL, preparare Redmine, installare Passenger, configurare virtual host HTTP/HTTPS e controllare il funzionamento. Sono inoltre incluse raccomandazioni per sicurezza, backup, troubleshooting e checklist operative.

Conclusione: dopo il deploy iniziale, pianificare aggiornamenti regolari, backup, testare plugin e mantenere i certificati aggiornati.

Extras

  • Documenti utili: consultare la documentazione ufficiale di Redmine e di Passenger per dettagli su compatibilità e opzioni avanzate.
Autore
Redazione

Materiali simili

Installare e usare Podman su Debian 11
DevOps

Installare e usare Podman su Debian 11

Guida rapida a apt-pinning su Debian
Linux

Guida rapida a apt-pinning su Debian

Forzare FSR 4 con OptiScaler: guida completa
Guide.

Forzare FSR 4 con OptiScaler: guida completa

Dansguardian + Squid NTLM su Debian Etch
Rete

Dansguardian + Squid NTLM su Debian Etch

Riparare errore installazione SD su Android
Android

Riparare errore installazione SD su Android

Cartelle di rete con KNetAttach e remote:/
Linux

Cartelle di rete con KNetAttach e remote:/