Introduzione

Redmine è uno dei più popolari strumenti software di gestione dei progetti open source e di monitoraggio dei problemi. È multipiattaforma e cross-database e costruito sul framework Ruby on Rails.

Redmine include supporto per più progetti, wiki, sistema di tracciamento dei problemi, forum, calendari, notifiche e-mail e molto altro.

Questo tutorial descrive come installare e configurare l'ultima versione di Redmine su un server Ubuntu 18.04 utilizzando MySQL come back-end del database e Passenger + Nginx come server delle applicazioni Ruby.

Prerequisiti

Assicurati di aver soddisfatto i seguenti prerequisiti prima di continuare con questo tutorial:

  • Hai un nome di dominio che punta all'IP pubblico del tuo server. In questo tutorial useremo example.com.
  • Hai effettuato l'accesso come utente con privilegi sudo.
  • Hai installato Nginx seguendo queste istruzioni.
  • Hai un certificato SSL installato per il tuo dominio. È possibile installare un certificato SSL Let's Encrypt gratuito seguendo queste istruzioni.

Se desideri installare Redmine su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Creare un database MySQL

Redmine supporta MySQL/MariaDB, Microsoft SQL Server, SQLite 3 e PostgreSQL . In questo tutorial useremo MySQL come back-end del database.

Se non hai già installato MySQL sul tuo server Ubuntu puoi installarlo seguendo queste istruzioni.

Accedi alla shell MySQL digitando il comando seguente:

sudo mysql

Oppure se hai impostato una password per l'utente root, utilizzare il seguente comando per accedere alla shel MySQL:

sudo mysql -u root -p

Dall'interno della shell MySQL, eseguire la seguente istruzione SQL per creare un nuovo database:

CREATE DATABASE redmine CHARACTER SET utf8mb4;

Successivamente, crea un account utente MySQL e concedi l'accesso al database:

GRANT ALL ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'change-with-strong-password';

Assicurati di cambiare change-with-strong-password con una password complessa.

Una volta terminato, esci dalla console mysql digitando:

EXIT;

Installare Ruby

Il modo più semplice per installare Ruby sul tuo sistema Ubuntu è tramite il gestore pacchetti apt. Al momento in cui scrivo, la versione nei repository Ubuntu è 2.5.1, che è l'ultima versione stabile di Ruby.

Installa Ruby digitando:

sudo apt install ruby-full

Installare Passenger e Nginx

Passenger è un server di applicazioni web veloce e leggero per Ruby, Node.js e Python che può essere integrato con Apache e Nginx. Installeremo Passenger come modulo Nginx.

Assicurati di aver seguito i prerequisiti e installato Nginx prima di continuare con i seguenti passaggi.

Inizia installando i pacchetti necessari:

sudo apt install dirmngr gnupg apt-transport-https ca-certificates

Importa la chiave GPG del repository e abilita il repository Phusionpassenger:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 561F9B9CAC40B2F7
sudo add-apt-repository 'deb https://oss-binaries.phusionpassenger.com/apt/passenger bionic main'

Una volta abilitato il repository apt, aggiornare l'elenco dei pacchetti e installare il modulo Passenger Nginx con:

sudo apt update
sudo apt install libnginx-mod-http-passenger

Installare Redmine su Ubuntu

Inizieremo installando le dipendenze necessarie per compilare Redmine:

sudo apt install build-essential libmysqlclient-dev imagemagick libmagickwand-dev

Al momento della stesura di questo articolo, l'ultima versione stabile di Redmine è la versione 4.1.0.

Prima di continuare con il passaggio successivo, è necessario controllare la pagina di download di Redmine per verificare se è disponibile una versione più recente.

Download di Redmine

Scarica l'archivio Redmine con il seguente comando curl:

sudo curl -L http://www.redmine.org/releases/redmine-4.1.0.tar.gz -o /tmp/redmine.tar.gz

Una volta completato il download, estrarre l'archivio e spostarlo nella directory /opt:

cd /tmp
sudo tar zxf /tmp/redmine.tar.gz
sudo mv /tmp/redmine-4.1.0 /opt/redmine

Configurare il database Redmine

Inizia copiando il file di configurazione di esempio Redmine:

sudo cp /opt/redmine/config/database.yml.example /opt/redmine/config/database.yml

Apri il file con il tuo editor di testo:

sudo nano /opt/redmine/config/database.yml

Cerca la sezione production e inserisci il database MySQL e le informazioni utente che abbiamo creato in precedenza:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "change-with-strong-password"
  encoding: utf8

Una volta fatto, salva il file ed esci dall'editor.

Installare le dipendenze di Ruby

Passare alla directory redmine e installare il bundler e altre dipendenze di Ruby:

cd /opt/redmine/
sudo gem install bundler --no-rdoc --no-ri 
sudo bundle install --without development test postgresql sqlite

Generare chiavi e migrare il database

Eseguire il comando seguente per generare chiavi e migrare il database:

cd /opt/redmine/
sudo bundle exec rake generate_secret_token
sudo RAILS_ENV=production bundle exec rake db:migrate

Impostare le autorizzazioni corrette

Nginx funziona come utente e gruppo www-data. Imposta i permessi corretti emettendo il seguente comando chown:

sudo chown -R www-data: /opt/redmine/

Configurare Nginx

Ormai, dovresti già avere Nginx con certificato SSL installato sul tuo sistema, altrimenti controlla i prerequisiti per questo tutorial.

Adesso è necessario configurare Nginx per servire Redmine, fare attenzione ad aggiungere correttamente i seguenti parametri passenger_enabled on;  e passenger_min_instances 1;.

Apri il tuo editor di testo e crea/modifica il seguente file di blocco del server Nginx in questo modo:

sudo nano /etc/nginx/sites-available/example.com
server {

    root /opt/redmine/public;

    index index.html;

    server_name example.com www.example.com;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;


    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    
    
    passenger_enabled on;
    passenger_min_instances 1;
    client_max_body_size 10m;


}
server {
    if ($host = www.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;
    return 404; # managed by Certbot


}

Non dimenticare di sostituire example.com con il tuo dominio Redmine e impostare il percorso corretto per i file del certificato SSL. Tutte le richieste HTTP verranno reindirizzate a HTTPS.

Abilitare il blocco server creando un collegamento simbolico alla directory sites-enabled:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Prima di riavviare il servizio Nginx, eseguire un test per accertarsi che non vi siano errori di sintassi:

sudo nginx -t

Se non ci sono errori, l'output dovrebbe apparire così:

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

Infine, riavvia il servizio Nginx digitando:

sudo systemctl restart nginx

Accedere Redmine

Apri il tuo browser, digita il tuo dominio e supponendo che l'installazione sia andata a buon fine, apparirà una schermata di login.

Le credenziali di accesso predefinite per Redmine sono:

  • Nome utente: admin
  • Password: admin

Quando accedi per la prima volta, ti verrà richiesto di modificare la password.

Dopo aver modificato la password, verrai reindirizzato alla pagina dell'account utente.

Conclusione

Redmine è stato installato correttamente sul sistema Ubuntu. Ora dovresti controllare la documentazione di Redmine e saperne di più su come configurare e utilizzare Redmine.