Installare Redmine su Ubuntu 18.04 con Apache e MariaDB

Redmine è un’applicazione web gratuita, open source e multiprogetto per la gestione dei progetti, il tracciamento del tempo, wiki e gestione documentale. È cross-platform e basata su Ruby on Rails. Supporta più progetti, controllo di versione (Git, SVN, CVS), controllo degli accessi basato sui ruoli e notifiche via e-mail.
Intento primario e varianti correlate
Intento principale: installare e configurare Redmine su Ubuntu 18.04. Varianti correlate: installazione Redmine con Apache, configurare MariaDB per Redmine, alternative Docker per Redmine, sicurezza Redmine, migrazione Redmine.
Requisiti
- Un server Ubuntu 18.04 installato.
- Un utente non-root con privilegi sudo.
- Accesso a Internet per scaricare pacchetti e gemme.
Panoramica dei componenti
- Sistema operativo: Ubuntu 18.04.
- Web server: Apache con Passenger.
- Database: MariaDB (compatibile con MySQL).
- Applicazione: Redmine (pacchetto disponibile nei repository di Ubuntu 18.04).
Importante: questa guida usa i pacchetti di repository standard di Ubuntu 18.04. Per versioni più recenti o esigenze di produzione si può valutare l’installazione da sorgente o l’uso di container.
1. Installare Apache e MariaDB
Redmine richiede un web server e un database. Installa Apache, MariaDB e Passenger con:
sudo apt-get install apache2 mariadb-server libapache2-mod-passenger -y
Avvia e abilita i servizi:
sudo systemctl start apache2
sudo systemctl start mariadb
sudo systemctl enable apache2
sudo systemctl enable mariadb
Verifica lo stato di Apache:
sudo systemctl status apache2
2. Configurare MariaDB (sicurezza e database)
Per prima cosa esegui lo script di hardening di MariaDB:
sudo mysql_secure_installation
Rispondi alle domande come nell’esempio seguente (la procedura rimuove utenti anonimi e database di test):
Enter current password for root (enter for none):
Set root password? [Y/n]: N
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
Crea (opzionale) un database e un utente dedicato per Redmine se preferisci non usare lo schema gestito dal pacchetto:
sudo mysql -u root -p
CREATE DATABASE redmine CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password_sicura';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Sostituisci password_sicura con una password robusta.
3. Installare Redmine dal repository di Ubuntu
Il pacchetto redmine è disponibile nei repository di Ubuntu 18.04. Installa Redmine e il pacchetto mysql helper:
sudo apt-get install redmine redmine-mysql -y
Durante l’installazione il setup ti chiederà di configurare Redmine. Seleziona “Yes” quando richiesto e scegli mysql come database. Fornisci la password che vuoi usare per registrare Redmine nel database.
Dopo l’installazione, installa Bundler per le gemme Ruby:
sudo gem install bundler
Crea il link simbolico verso la directory pubblica di Redmine nell’albero web di Apache:
sudo ln -s /usr/share/redmine/public /var/www/html/redmine
Crea il file di lock delle gemme e correggi i permessi:
sudo touch /usr/share/redmine/Gemfile.lock
sudo chown www-data:www-data /usr/share/redmine/Gemfile.lock
sudo chown -R www-data:www-data /var/www/html/redmine
4. Configurare Apache per Redmine (Passenger)
Apri il file passenger.conf:
sudo nano /etc/apache2/mods-available/passenger.conf
Modifica o assicurati che contenga queste linee:
PassengerDefaultUser www-data
PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
PassengerDefaultRuby /usr/bin/ruby
Crea il file del virtual host per Redmine:
sudo nano /etc/apache2/sites-available/redmine.conf
Copia questo contenuto e sostituisci example.com con il tuo dominio:
ServerAdmin [email protected]
DocumentRoot /var/www/html/redmine
ServerName example.com
ServerAlias www.example.com
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Abilita il sito e il modulo rewrite:
sudo a2ensite redmine
sudo a2enmod rewrite
sudo systemctl restart apache2
Controlla che Apache sia attivo:
sudo systemctl status apache2
5. Accedere all’interfaccia web di Redmine
Apri il browser e vai all’URL del tuo dominio (es. http://example.com). Dovresti vedere la pagina iniziale di Redmine:
Clicca su “Sign In” per accedere:
Credenziali predefinite:
- Username: admin
- Password: admin
Alla prima connessione cambia immediatamente la password dell’amministratore:
Dopo il login vedrai la dashboard principale:
Congratulazioni: Redmine è installato e funzionante.
Controlli di post-installazione
- Verifica che /var/www/html/redmine sia di proprietà www-data.
- Controlla i log di Apache in /var/log/apache2/error.log.
- Verifica con sudo systemctl status apache2 e sudo systemctl status mariadb.
- Assicurati di cambiare la password admin e creare account con ruoli appropriati.
Checklist rapida (playbook di deployment)
- Aggiornare il server: sudo apt-get update && sudo apt-get upgrade
- Installare Apache, MariaDB, Passenger
- Proteggere MariaDB (mysql_secure_installation)
- Installare Redmine e Bundler
- Creare link simbolico e impostare permessi
- Configurare virtual host Apache
- Riavviare Apache e testare l’accesso web
- Cambiare password admin e creare utenti/ruoli
- Configurare backup regolari del DB e della directory files
Criteri di verifica (Критерии приёмки)
- Redmine risponde via HTTP all’indirizzo configurato.
- Login con admin funziona e la password è stata cambiata.
- L’applicazione può connettersi al database (nessun errore di connessione nei log).
- I permessi dei file consentono a Apache/Passenger di leggere e scrivere dove necessario.
Casi di test e criteri di accettazione
- Accesso base: visitare /, visualizzare la home di Redmine.
- Login: autenticarsi con admin e cambiare la password.
- Creare progetto: creare un nuovo progetto e verificare che si salvi.
- Gestire file: caricare un documento nel progetto.
- Notifiche: impostare un account utente con email valida e verificare l’invio di notifica (richiede SMTP configurato).
Risoluzione dei problemi comuni
- Errore PassengerDefaultRuby: verifica che /usr/bin/ruby esista e sia corretto.
- 500 Internal Server Error: controlla /var/log/apache2/error.log e i permessi dei file.
- Connessione DB negata: verifica user/password e che il database sia accessibile su localhost.
- Pagina bianca: controlla Gemfile.lock e che bundler sia installato.
Alternative e approcci diversi
Installazione via Docker (rapida, isolata)
- Vantaggi: isolamento, facilità di upgrade e rollback.
- Svantaggi: gestione dei volumi, networking e backup richiedono attenzione.
- Esempio: usare immagini ufficiali/community per Redmine con docker-compose.
Installazione da sorgente (più controllo)
- Vantaggi: versione più aggiornata, personalizzazioni di gem.
- Svantaggi: più lavoro, gestione delle dipendenze Ruby e delle migrazioni.
Uso di Nginx invece di Apache
- Nginx + Passenger è una combinazione comune e performante per produzioni ad alto carico.
Maturità e quando evitare questa procedura
- Questa procedura è adatta a server dedicati o VM con carico da basso a medio.
- Per ambienti di produzione con molti utenti considerare bilanciamento, HTTPS obbligatorio, backup e monitoraggio.
- Per test rapidi o sviluppo locale valutare Docker invece dell’installazione su host.
Security hardening essenziale
- Abilitare HTTPS (Let’s Encrypt) e forzare redirect HTTP→HTTPS.
- Disabilitare l’accesso root remoto per MariaDB (mysql_secure_installation lo propone).
- Limitare l’accesso SSH e usare chiavi pubbliche.
- Impostare firewall (ufw) consentendo solo le porte necessarie (80, 443, SSH).
- Installare fail2ban per proteggere da tentativi di login.
- Eseguire backup criptati regolari del DB e della directory files di Redmine.
Privacy e note GDPR (se gestisci dati personali)
- Documentare dove risiedono i dati degli utenti.
- Garantire accesso controllato ai dati e log di accesso.
- Conservare i backup in modo sicuro e prevedere procedure di cancellazione su richiesta.
Backup e rollback rapido
- Backup DB: mysqldump –single-transaction -u root -p redmine > redmine-backup.sql
- Backup file: tar -czf redmine-files-$(date +%F).tar.gz /var/www/html/redmine/files
- Rollback: ripristinare DB e sovrascrivere la directory files, disabilitare site e ripristinare configurazioni precedenti.
Mini-metodologia di deployment
- Preparazione: aggiornamento OS, utenti e permessi.
- Installazione: Apache, MariaDB, Redmine.
- Configurazione: virtual host, SSL, SMTP.
- Verifica: test funzionali e accesso.
- Hardening: firewall, fail2ban, backup.
- Monitoraggio: log, Uptime, alert.
Checklists per ruoli
Sysadmin:
- Configura server, sicurezza, backup e monitoraggio.
- Mantieni aggiornamenti e SSL.
Sviluppatore / Maintainer:
- Gestisci plugin/gem, migrazioni e personalizzazioni.
- Testa in staging prima di deploy in produzione.
Project Manager / Utente:
- Crea progetti, definisci ruoli, verifica permessi utente.
- Configura notifiche e flussi di lavoro.
Suggerimenti di compatibilità e migrazione
- Se porti dati da una versione precedente, esegui migrazioni su una copia del DB prima di applicarle in produzione.
- Verifica compatibilità delle gemme e dei plugin con la versione di Redmine installata.
Riepilogo
Questa guida mostra come installare Redmine su Ubuntu 18.04 con Apache e MariaDB, come completare la configurazione iniziale, i controlli post-installazione e le raccomandazioni di sicurezza. Per ambienti di produzione valuta HTTPS, backup regolari, monitoraggio e alternative come Docker o installazione da sorgente.
Materiali simili

RSS da thread di forum con Blogger e email
Installare OCS Inventory NG 2 su CentOS 5.5

Funzione CHAR in Google Sheets: guida pratica

Migliorare la qualità foto su iPhone

Protezione da SQL Injection nei database
