Redmine è un'applicazione gratuita e open source per la gestione dei progetti e il monitoraggio dei problemi. È multipiattaforma e multidatabase e si basa sul framework Ruby on Rails.
Redmine include il supporto per più progetti, wiki, sistema di rilevamento dei problemi, forum, calendari, notifiche e-mail e molto altro.
In questo tutorial, ti mostreremo come installare e configurare l'ultima versione di Redmine su un server Debian 9 utilizzando MySQL come back-end di database e Passenger + Nginx come server di applicazioni Ruby.
Prerequisiti #
Assicurati di aver soddisfatto i seguenti prerequisiti prima di continuare con questo tutorial:
- Disponi di un nome di dominio che punta all'IP pubblico del tuo server. Useremo
example.com
. - Acceduto come utente con privilegi sudo.
- Avere installato Nginx.
- Disponi di un certificato SSL installato per il tuo dominio.
Creazione di un database MySQL #
Redmine supporta MySQL/MariaDB, Microsoft SQL Server, SQLite 3 e PostgreSQL. Useremo MariaDB come database back-end. Assicurati di avere almeno MySQL 5.7 o MariaDB 10.3 installato sulla tua macchina.
Se MariaDB o MySQL non sono installati sul tuo server Debian, puoi installarlo usando queste istruzioni.
Inizia accedendo alla console MySQL digitando:
sudo mysql
Esegui la seguente istruzione SQL per creare un nuovo database:
CREATE DATABASE redmine CHARACTER SET utf8mb4;
Crea un nuovo account utente MySQL e concedi l'accesso al database:
GRANT ALL ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'change-with-strong-password';
Non dimenticare di modificare change-with-strong-password
con una password complessa. Una volta terminato, esci dalla console di MariaDB digitando:
EXIT;
Installazione di Ruby #
Il modo più semplice per installare Ruby su Debian è usare apt
gestore dei pacchetti:
Installa Ruby digitando:
sudo apt install ruby-full
Al momento della scrittura, la versione nei repository Debian è 2.3.3p222
che è supportato dall'ultima versione di Redmine.
Se vuoi installare Ruby tramite Rbenv o RVM, visita questo tutorial.
Installazione di 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 che Nginx sia installato prima di continuare con i seguenti passaggi.
Installazione dei pacchetti necessari per abilitare un repository https:
sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common
Importa la chiave GPG del repository e abilita Phusionpassengerrepository:
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 stretch main'
Aggiorna l'elenco dei pacchetti e installa il modulo Passenger Nginx con:
sudo apt update
sudo apt install libnginx-mod-http-passenger
Installazione di Redmine su Debian #
Inizia installando le dipendenze necessarie per compilare Redmine:
sudo apt install build-essential libmariadbclient-dev imagemagick libmagickwand-dev curl ruby-dev libxslt-dev libxml2-dev zlib1g-dev
Al momento della stesura di questo articolo, l'ultima versione stabile di Redmine è la versione 4.0.4.
Prima di continuare con il passaggio successivo dovresti controllare la pagina di download di Redmine per una versione più recente.
1. Download di Redmine #
Scarica l'archivio Redmine usando il seguente comando curl:
sudo curl -L http://www.redmine.org/releases/redmine-4.0.4.tar.gz -o /tmp/redmine.tar.gz
Una volta completato il download, estrai l'archivio e spostalo in /opt
directory:
cd /tmp
sudo tar zxf /tmp/redmine.tar.gz
sudo mv /tmp/redmine-4.0.4 /opt/redmine
2. Configurazione del database Redmine #
Copia il file di configurazione di esempio di 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 production
sezione e inserisci il database MySQL e le informazioni sull'utente che abbiamo creato in precedenza:
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "change-with-strong-password"
encoding: utf8
Al termine, salva il file ed esci dall'editor.
3. Installazione delle dipendenze di Ruby #
Passa alla directory redmine e installa 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
4. Genera chiavi e migra 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
5. Imposta le autorizzazioni corrette #
Nginx viene eseguito come www-data
utente e gruppo. Imposta i permessi corretti emettendo il seguente comando chown:
sudo chown -R www-data: /opt/redmine/
Configura Nginx #
A questo punto dovresti già avere Nginx con certificato SSL installato sul tuo sistema, in caso contrario controlla i prerequisiti per questo tutorial.
Apri il tuo editor di testo e crea il seguente file di blocco del server Nginx:
sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-available/example.com# Redirect HTTP -> HTTPS
server {
listen 80;
server_name www.example.com example.com;
include snippets/letsencrypt.conf;
return 301 https://example.com$request_uri;
}
# Redirect WWW -> NON WWW
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
root /opt/redmine/public;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
# log files
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
passenger_enabled on;
passenger_min_instances 1;
client_max_body_size 10m;
}
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. Gli snippet utilizzati in questa configurazione vengono creati in questa guida.
Abilita il blocco del server creando un collegamento simbolico a sites-enabled
directory:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Prima di riavviare il servizio Nginx fai un test per assicurarti che non ci siano errori di sintassi:
sudo nginx -t
Se non ci sono errori, l'output dovrebbe essere simile a questo:
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
Accesso a Redmine #
Apri il browser, digita il tuo dominio e supponendo che l'installazione sia andata a buon fine, apparirà una schermata simile alla seguente:
Le credenziali di accesso predefinite per Redmine sono:
- Nome utente:amministratore
- Password:amministratore
Quando accedi per la prima volta, ti verrà chiesto di cambiare la password come mostrato di seguito:
Una volta modificata la password verrai reindirizzato alla pagina dell'account utente.