Redmine è uno strumento basato sul Web open source gratuito per la gestione dei progetti e il monitoraggio dei problemi. Costruito sulla base del framework Ruby on Rails, offre una soluzione multipiattaforma e multidatabase che include il supporto per più progetti, wiki, forum, calendari, notifiche e-mail e molto altro.
Ecco una guida dettagliata su come installare e configurare Redmine sul server CentOS 7.
Prerequisiti
Prima di tutto, hai bisogno di un nome di dominio puntato all'IP del tuo server pubblico. Per questo tutorial, faremo riferimento a example.com. Inoltre, dovrai essere loggato come utente con privilegi sudo.
Oltre a questo, avrai anche bisogno di un database back-end. Nel nostro caso, utilizzeremo MariaDB. Tuttavia, puoi anche utilizzare Microsoft SQL Server, SQLite 3 e PostgreSQL, poiché Redmine li supporta tutti.
Infine, avrai bisogno di un server delle applicazioni Ruby per il quale utilizzeremo Passenger con Nginx. Nel caso in cui non ne hai installato nessuno sul tuo sistema, non devi preoccuparti. Ti mostreremo anche come installarli e configurarli.
Preparazione del sistema prima di installare Redmine
Come abbiamo discusso, ci sono diverse cose di cui hai bisogno sul tuo sistema CentOS prima di poter installare ed eseguire Redmine. Se non li hai installati, ecco una procedura dettagliata che ti mostra come impostare le cose.
Nota:Inutile dire che se hai già un database back-end o un server di applicazioni Ruby installato, puoi saltare questi passaggi e passare a quello successivo.
Fase 1:installazione dei pacchetti necessari
Prima di installare Redmine, devi preparare il tuo sistema installando i pacchetti Redmine e Ruby necessari dal sorgente.
Per fare ciò, digita i seguenti comandi nel tuo terminale:
$ sudo yum install curl gpg gcc gcc-c++ make patch autoconf automake bison libffi-devel libtool $ sudo yum install readline-devel sqlite-devel zlib-devel openssl-develh readline glibc-headers glibc-devel $ sudo yum install mariadb-devel zlib libyaml-devel bzip2 iconv-devel ImageMagick ImageMagick-devel
Una volta fatto, è il momento di creare un database MySQL.
Passaggio 2:installa MariaDB su CentOS 7
Sei libero di utilizzare qualsiasi back-end di database che ti piace. Tuttavia, per questo tutorial, poiché utilizzeremo MariaDB/MySQL, ecco un breve tutorial che ti mostra come installarlo sul tuo sistema.
Dato che MariaDB versione 5.5 viene fornita con il repository CentOS, lo installeremo esclusivamente per comodità. Non è l'ultima versione, ma è eccezionalmente stabile e non dovresti riscontrare problemi.
Digita il seguente comando nel tuo terminale per installare i pacchetti MariaDB:
$ sudo yum install mariadb-server
Una volta completata l'installazione, digita il seguente comando per consentirne l'avvio durante l'avvio del sistema.
$ sudo systemctl start mariadb $ sudo systemctl enable mariadb
Successivamente, controlla se l'installazione è andata a buon fine o meno immettendo il seguente comando:
$ sudo systemctl status mariadb
L'output dovrebbe dirti che il servizio è attivo e in esecuzione. Una volta risolto, esegui il seguente script per eseguire diverse attività relative alla sicurezza per assicurarti che tutto funzioni correttamente e come previsto.
$ sudo mysql_secure_installation
Verranno visualizzati i seguenti prompt:
Do you want to set up the root user password?
Do you want to remove anonymous user accounts?
Do you want to restrict root user access to the local machine?
Do you want to remove the test database?
Rispondi con Y (sì) a tutte queste domande.
E voilà, hai installato correttamente MariaDB sul tuo sistema CentOS. Ora è il momento di passare al passaggio successivo.
Fase 3:crea un database MySQL
Con MariaDB installato sul tuo sistema CentOS, segui questi passaggi per creare un database MySQL. Innanzitutto, dovrai accedere alla tua shell MySQL. Per fare ciò, inserisci il seguente comando nel terminale:
$ sudo mysql
Successivamente, dovrai creare un nuovo database. Per fare ciò, inserisci il seguente comando dall'interno della tua shell MySQL:
mysql> CREATE DATABASE redmine CHARACTER SET utf8;
Una volta fatto, dovrai creare un account utente MySQL e fornirgli l'accesso al database appena creato. Questo viene fatto usando il seguente comando:
mysql> GRANT ALL ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'EnterPasswordHere';
Sostituisci EnterPasswordHere con una password complessa a tua scelta.
Hai creato con successo un database MySQL. Ora esci dalla shell usando il seguente comando e vai al passaggio successivo:
mysql> EXIT;
Fase 4:installa Passenger e Nginx
Passenger è un server di applicazioni web progettato per Ruby, Node.js e Python. È super veloce, leggero e può essere integrato con Apache e Nginx. Per questo tutorial, installeremo il modulo Passenger per Nginx.
Per fare ciò, dovremo prima installare alcuni pacchetti necessari, incluso il repository EPEL. Per fare ciò, inserisci il seguente comando nel tuo terminale:
$ sudo yum install epel-release yum-utils pygpgme $ sudo yum-config-manager --enable epel
Successivamente, dovrai abilitare il repository Phusionpassenger. Questo può essere fatto usando questo comando:
$ sudo yum-config-manager --add-repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo
Infine, aggiorna l'elenco dei pacchetti e installa sia Nginx che Passenger usando questo comando:
$ sudo yum install nginx passenger passenger-devel
Fase 5:crea un nuovo utente di sistema
Abbiamo quasi finito di configurare tutto per installare Redmine. La prossima cosa che dobbiamo fare è creare un nuovo utente e gruppo di sistema che eseguirà l'istanza Redmine. Per prima cosa creiamo un nuovo utente inserendo il seguente comando nel terminale:
$ sudo useradd -m -U -r -d /opt/redmine redmine
Per semplicità, abbiamo mantenuto il nome utente come redmine; tuttavia, sei libero di utilizzare il nome utente che preferisci.
Quindi, aggiungi l'utente ngnix al nuovo gruppo di utenti usando questo comando:
$ sudo usermod -a -G redmine nginx
E infine, cambia i permessi della directory /opt/redmine in modo che possa essere accessibile da Nginx. Per fare ciò, inserisci questo comando:
$ sudo chmod 750 /opt/redmine
Passaggio 6:installa Ruby
E ora, per il passaggio finale per preparare tutto, dovremo installare Ruby sul nostro sistema CentOS.
Ora, la parte difficile è che la versione Ruby fornita con il repository CentOS è obsoleta e non è supportata da Redmine. Questo è il motivo per cui dovremo installarlo utilizzando RVM.
Innanzitutto, passa all'utente Redmine digitando il seguente comando:
$ sudo su - redmine
Dovrai importare la chiave GPG usando questo comando:
$ gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
Una volta fatto, installa RVM con questo comando:
$ curl -sSL https://get.rvm.io | bash -s stable
Ora, per utilizzare RVM, dovrai creare il file RVM usando questo comando:
$ source /opt/redmine/.rvm/scripts/rvm
Infine, è il momento di installare Ruby sul nostro sistema. Per fare ciò, inserisci il seguente comando nel tuo terminale.
$ rvm install 2.7 $ rvm --default use 2.7
Nota:Qui, 2.7 si riferisce a Ruby versione 2.7, che è l'ultima versione di Ruby al momento della scrittura. Se c'è una versione aggiornata di Ruby mentre stai leggendo questo, allora scaricala invece. Puoi sempre utilizzare la versione 2.7 purché Redmine la supporti.
E questo è tutto! Hai configurato correttamente il tuo sistema CentOS e ora è pronto per installare Redmine.
Installa Redmine su CentOS 7
Quando installi Redmine, dovresti sempre controllare la pagina di download di Redmine per vedere l'ultima versione e scaricarla. Per il bene di questo tutorial, installeremo Redmine versione 4.1.1 poiché è l'attuale versione stabile al momento della scrittura.
Ora, con quello fuori mano, ecco una guida passo passo sull'installazione di Redmine 4.1.1 su CentOS 7.
Passaggio 1:scarica Redmine
Prima di iniziare, assicurati di eseguire tutti i comandi accedendo come utente Redmine.
Una volta fatto, scarica l'archivio Redmine sul tuo sistema. Puoi farlo usando il seguente comando curl:
$ curl -L http://www.redmine.org/releases/redmine-4.1.1.tar.gz -o redmine.tar.gz
Dopo aver scaricato l'archivio, estrarlo utilizzando il seguente comando:
$ tar -xvf redmine.tar.gz
Fase 2:configura il database Redmine
Successivamente, dovrai configurare il database Redmine. Inizia copiando il file di configurazione del database di esempio Redmine utilizzando il seguente comando:
$ cp /opt/redmine/redmine-4.1.1/config/database.yml.example /opt/redmine/redmine-4.1.1/config/database.yml
Quindi, apri il file utilizzando l'editor di testo di tua scelta. Useremo nano editor.
nano /opt/redmine/redmine-4.1.1/config/database.yml
Ora, cerca nella sezione di produzione e inserisci le informazioni del database MySQL precedentemente create, inclusi nome utente e password, come mostrato di seguito.
production: adapter: mysql2 database: redmine host: localhost username: redmine password: "EnterPasswordHere" encoding: utf8
Sostituisci EnterPasswordHere con una password complessa a tua scelta.
Al termine, salva ed esci dal file per passare al passaggio successivo.
Fase 3:installa le dipendenze Ruby
Successivamente, dovrai installare tutte le dipendenze di ruby e il bundler.
Per fare ciò, vai alla directory redmine-4.1.1, apri il terminale e inserisci i seguenti comandi:
$ cd ~/redmine-4.1.1 $ gem install bundler --no-rdoc --no-ri $ bundle install --without development test postgresql sqlite
Fase 4:generazione di chiavi e migrazione del database
Inserisci i seguenti comandi nel tuo terminale per generare chiavi e migrare il database:
$ bundle exec rake generate_secret_token $ RAILS_ENV=production bundle exec rake db:migrate
Fase 5:Configura Nginx
Ora, prima di poter accedere a Redmine, dovrai configurare Nginx. Per fare ciò, prima torna al tuo utente sudo immettendo il seguente comando:
$ exit
Ora apri l'editor di testo e crea il file di blocco del server Nginx. Per fare ciò, inserisci il seguente comando:
$ sudo nano /etc/nginx/conf.d/example.com.conf
Quindi, copia e incolla il seguente contenuto all'interno del file:
Nota:ricorda di cambiare example.com con il tuo dominio Redmine.
passenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /opt/redmine/.rvm/gems/default/wrappers/ruby; passenger_instance_registry_dir /var/run/passenger-instreg; server { listen 80; server_name example.com www.example.com; root /opt/redmine/redmine-4.1.1/public; # 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; }
Una volta fatto, esegui un test per assicurarti che non ci siano errori di sistema immettendo il seguente comando:
$ sudo nginx -t
Un output pulito senza errori dovrebbe apparire così:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Una volta ottenuta la luce verde, puoi riavviare il server Nginx inserendo questo comando:
sudo systemctl restart nginx
Fase 6:crittografa Nginx con SSL
Dovrai configurare Nginx con una certificazione SSL. Nel caso in cui il tuo dominio non sia già protetto da un certificato SSL affidabile, puoi generarne uno gratuito utilizzando Let's Encrypt.
Una volta che hai il certificato in mano, dovrai nuovamente modificare il file di configurazione di Nginx. Per fare ciò, devi prima aprirlo nel tuo editor di testo usando il seguente comando:
$ sudo nano /etc/nginx/conf.d/example.com.conf
Ora modifica il file, come mostrato di seguito:
passenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /opt/redmine/.rvm/gems/default/wrappers/ruby; passenger_instance_registry_dir /var/run/passenger-instreg; # 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/redmine-4.1.1/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; }
Nota:ricorda di cambiare example.com con il tuo dominio Redmine.
E questo è tutto! Ora sei pronto per accedere a Redmine.
Accesso a Redmine
Ora hai installato e configurato correttamente Redmine su CentOS. È finalmente arrivato il momento di accedervi e vedere se tutto funziona correttamente.
Per accedere a Redmine, devi prima aprire il browser e digitare il tuo dominio. Se l'installazione è andata a buon fine, dovresti vedere la seguente schermata che ti chiede nome utente e password.
Per impostazione predefinita, le credenziali di accesso sono le seguenti:
Username: admin Password: admin
Dopo il primo accesso, il sistema ti chiederà di cambiare la tua password con una più sicura.
Dopo aver modificato la password, verrai reindirizzato alla pagina del tuo account utente principale da dove potrai iniziare a utilizzare Redmine.