Redmine è uno strumento di gestione dei progetti basato sul Web gratuito e open source. È scritto in Ruby on Rails e supporta più server di database per l'archiviazione del database. È un'applicazione ricca di funzionalità che supporta più progetti, ACL basata sui ruoli e un sistema di tracciamento dei problemi. Dispone inoltre di supporto per grafici e calendari Gantt, gestione dei file, wiki di progetto e forum, oltre a molte altre funzionalità. Supporta sistemi di controllo versione come Git, SVN o CVS. È anche multilingue e supporta fino a 49 lingue.
Prerequisiti
- Un'istanza del server Vultr Ubuntu 16.04.
- Un utente sudo .
- Un nome di dominio puntato verso il server.
Per questo tutorial, utilizzeremo 192.168.1.1
come indirizzo IP pubblico e redmine.example.com
come nome di dominio puntato verso l'istanza Vultr. Assicurati di sostituire tutte le occorrenze del nome di dominio e dell'indirizzo IP di esempio con quello effettivo.
Aggiorna il tuo sistema di base usando la guida Come aggiornare Ubuntu 16.04 . Dopo aver aggiornato il sistema, procedere con l'installazione delle dipendenze.
Installa Apache
Redmine è scritto in Ruby on Rails, pertanto sarà necessario che Phusion Passenger si integri con il server Web Apache per servire l'applicazione.
Installa Apache.
sudo apt -y install apache2 apache2-dev libcurl4-openssl-dev
Per costruire Ruby e Passenger, avremo bisogno anche di alcuni strumenti di sviluppo. Installa gli strumenti richiesti.
sudo apt -y install imagemagick libmagickwand-dev git build-essential automake libgmp-dev
Installa PostgreSQL
Redmine supporta più tipi di server di database come MySQL, PostgreSQL e MSSQL. In questo tutorial, useremo PostgreSQL per ospitare il server di database Redmine.
PostgreSQL è un sistema di database relazionale ad oggetti. Il repository Ubuntu predefinito contiene una vecchia versione di PostgreSQL, quindi aggiungi il repository PostgreSQL al sistema.
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
Installa il server di database PostgreSQL.
sudo apt -y install postgresql
Avviare il server PostgreSQL e abilitarlo ad avviarsi automaticamente all'avvio.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Cambia la password per l'utente PostgreSQL predefinito.
sudo passwd postgres
Accedi come utente PostgreSQL.
sudo su - postgres
Crea un nuovo utente PostgreSQL per Redmine.
createuser redmine
È consentito utilizzare qualsiasi nome utente anziché redmine
. PostgreSQL fornisce la psql
shell per eseguire query sul database. Passa alla shell PostgreSQL.
psql
Impostare una password per l'utente appena creato per il database Redmine.
ALTER USER redmine WITH ENCRYPTED password 'DBPassword';
Sostituisci DBPassword
con una password sicura. Creare un nuovo database per l'installazione di Redmine.
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
Esci dalla psql
shell.
\q
Passa sudo
all'utente.
exit
Installa alcune dipendenze PostgreSQL necessarie.
sudo apt -y install libpqxx-dev protobuf-compiler
Installa Ruby
Installeremo l'ultima versione di Ruby usando RVM. Viene utilizzato per installare e gestire più versioni di Ruby.
Aggiungi il repository RVM.
sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update
Installa RVM.
sudo apt -y install rvm
Poiché è necessario installare il sistema Ruby a livello, passeremo temporaneamente all'utente root.
sudo -i
Aggiorna le variabili di ambiente.
echo "source /etc/profile.d/rvm.sh" | tee -a /etc/profile
source /etc/profile.d/rvm.sh
Installa l'ultima versione di Ruby.
rvm install 2.5.1
Nota: se si utilizza una versione diversa di Ruby, assicurarsi di aggiornare il percorso Ruby di conseguenza.
Utilizzare la versione installata di Ruby.
rvm use 2.5.1 --default
Puoi verificarne la versione.
ruby -v
Vedrai un risultato simile.
root@vultr:~# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
Installa bundler
, che è il gestore delle dipendenze per l'applicazione Ruby.
gem install bundler
Ruby è ora installato. Prima di installare Redmine, dovremo installare Phusion Passenger.
Installa passeggero
Eseguire il comando seguente per installare Passenger.
gem install passenger
Installa il modulo Apache per Passenger.
passenger-install-apache2-module
Lo script di installazione ti farà alcune domande. Innanzitutto, ti fornirà informazioni sul processo di installazione. Quindi ti chiederà di selezionare la lingua che utilizzerai. Poiché la nostra applicazione è scritta in Ruby on Rails, seleziona Ruby dal menu e premi ENTERper procedere ulteriormente.
Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
‣ ⬢ Ruby
⬢ Python
⬡ Node.js
⬡ Meteor
L'installer ora controllerà i requisiti. Il programma di installazione non incontrerà alcuna dipendenza mancante e procederà automaticamente alla compilazione e all'installazione del modulo.
Una volta installato il modulo, ti verrà chiesto di aggiungere il modulo al file di configurazione di Apache.
Almost there!
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
</IfModule>
After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!
Press ENTER when you are done editing.
Salteremo questo per ora e lo completeremo più avanti nel tutorial. Premere ENTERper saltare questo passaggio.
Infine, lo script del programma di installazione convaliderà l'installazione e verrà visualizzato un avviso che informa che il modulo Passenger non è specificato nella configurazione di Apache.
Validating installation...
* Checking whether this Passenger install is in PATH... ✓
* Checking whether there are no other Passenger installations... ✓
* Checking whether Apache is installed... ✓
* Checking whether the Passenger module is correctly configured in Apache... (!)
You did not specify 'LoadModule passenger_module' in any of your Apache
configuration files. Please paste the configuration snippet that this
installer printed earlier, into one of your Apache configuration files, such
as /etc/apache2/apache2.conf.
Detected 0 error(s), 1 warning(s).
Press ENTER to continue.
Ora che abbiamo installato il modulo Passenger per Apache, procedi con il download e l'installazione di Redmine. Passa sudo
nuovamente all'utente poiché non è necessario eseguire altri comandi utilizzando l' root
utente.
exit
Installa Redmine
Si consiglia di utilizzare un utente senza privilegi per eseguire l'applicazione per tenerla isolata dal resto del sistema. Crea un nuovo utente per Redmine e passa all'utente appena creato.
sudo adduser --disabled-password --gecos "Redmine User" redmine
sudo su - redmine
Scarica l'ultima versione di Redmine dalla pagina di download ufficiale di Redmine .
cd ~
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gz
Estrarre l'archivio e rinominare la directory per comodità.
tar -xf redmine-*.tar.gz
mv redmine-*/ redmine/
Copia i file di configurazione di esempio nella posizione di produzione.
cd redmine
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.yml
Apri il file di configurazione del database che abbiamo appena copiato per inserire i dettagli del database.
nano config/database.yml
Per impostazione predefinita, il file del database è configurato per MySQL. Trova le configurazioni per la produzione e lo sviluppo e verifica che utilizza l'adattatore MySQL. Commenta tutte queste righe.
#production:
# adapter: mysql2
# database: redmine
# host: localhost
# username: root
# password: ""
# encoding: utf8
#development:
# adapter: mysql2
# database: redmine_development
# host: localhost
# username: root
# password: ""
# encoding: utf8
#test:
# adapter: mysql2
# database: redmine_test
# host: localhost
# username: root
# password: ""
# encoding: utf8
Furthur, trova le righe che sono commentate, con production
configurazione per l' postgresql
adattatore. Rimuovi il commento da tali righe e aggiorna il nome del database e le credenziali dell'utente. Assicurati di utilizzare il rientro corretto, ovvero due spazi.
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "DBPassword"
Configurare l'applicazione per utilizzare la configurazione PostgreSQL.
bundle config build.pg --with-pg-config=/usr/bin/pg_config
Installa le dipendenze richieste dall'applicazione.
bundle install --path vendor/bundle --without development test
Vedrai il seguente messaggio alla fine dell'installazione.
Installing roadie-rails 1.1.1
Bundle complete! 31 Gemfile dependencies, 55 gems now installed.
Gems in the groups development and test were not installed.
Bundled gems are installed into `./vendor/bundle`
Il comando seguente genera token segreti che vengono utilizzati per codificare i dati della sessione.
bundle exec rake generate_secret_token
Scrivi il database PostgreSQL.
RAILS_ENV=production bundle exec rake db:migrate
Eseguire il comando seguente, che scrive i dati predefiniti nel database PostgreSQL.
RAILS_ENV=production bundle exec rake redmine:load_default_data
Il comando sopra ti chiederà di scegliere la lingua predefinita da usare con l'applicazione. La scelta predefinita è inglese; scegli in base alle tue preferenze.
[redmine@vultr redmine]$ RAILS_ENV=production bundle exec rake redmine:load_default_data
Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]
====================================
Default configuration data loaded.
L'installazione dell'applicazione Redmine è ora terminata. Modifica la proprietà e le autorizzazioni delle directory e dei file.
mkdir -p tmp tmp/pdf public/plugin_assets
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets
Abbiamo configurato tutto ciò di cui abbiamo bisogno dall'utente non privilegiato. Torna sudo
all'utente eseguendo su - <username>
.
Aggiungi il modulo Passenger per Apache nel file di configurazione di Apache. Questo caricherà automaticamente il modulo Passeggero.
echo "LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so" | sudo tee -a /etc/apache2/apache2.conf
Nota: il percorso del modulo Passeggero può cambiare in caso di una nuova versione di Passeggero. Per trovare il percorso del modulo, utilizzare il sudo find / -name mod_passenger.so
comando
Crea un nuovo file host virtuale per la tua applicazione Redmine.
sudo nano /etc/apache2/sites-available/redmine.conf
Popolare il file con il seguente contenuto.
<VirtualHost *:80>
ServerName redmine.example.com
DocumentRoot /home/redmine/redmine/public
PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
PassengerUser redmine
<Directory /home/redmine/redmine/public>
Allow from all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
Assicurati di sostituire redmine.example.com
con il tuo vero nome di dominio. Inoltre, assicurarsi che il percorso verso PassengerRoot
e PassengerDefaultRuby
sia corretto. Il percorso dei file binari può cambiare quando è disponibile una nuova versione di Ruby o Passenger. Per trovare questi percorsi, eseguire il comando seguente.
passenger-config about ruby-command
Otterrai il seguente output.
user@vultr:~$ passenger-config about ruby-command
passenger-config was invoked through the following Ruby interpreter:
Command: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
Version: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
To use in Apache: PassengerRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
To use in Nginx : passenger_ruby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
To use with Standalone: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/bin/passenger start
## Notes for RVM users
Do you want to know which command to use for a different Ruby interpreter? 'rvm use' that Ruby interpreter, then re-run 'passenger-config about ruby-command'.
Una volta creato il file host virtuale. Attiva la configurazione.
sudo a2ensite redmine
Riavvia il server Web Apache.
sudo systemctl restart apache2
Ora puoi accedere alla tua interfaccia di Redmine su http://redmine.example.com
. Accedi con il nome utente admin
e la password admin
. Al tuo primo accesso, Redmine ti chiederà di aggiornare la password.
Protezione di Apache con Let's Encrypt SSL
Poiché la nostra installazione Redmine è su un server pubblico, si consiglia di utilizzare SSL per proteggere lo scambio di dati dal server.
Aggiungi il repository Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Installa Certbot, che è l'applicazione client per Let's Encrypt CA.
sudo apt -y install certbot
Nota: per ottenere certificati da Let's Encrypt CA, il dominio per il quale devono essere generati i certificati deve essere puntato verso il server. In caso contrario, apportare le modifiche necessarie ai record DNS del dominio e attendere la propagazione del DNS prima di effettuare nuovamente la richiesta di certificato. Certbot controlla l'autorità di dominio prima di fornire i certificati.
Genera i certificati SSL.
sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com
È probabile che i certificati generati siano archiviati in /etc/letsencrypt/live/redmine.example.com/
. Il certificato SSL verrà archiviato come cert.pem
e la chiave privata verrà archiviata come privkey.pem
.
Let's Encrypt certificati scadranno tra 90 giorni, quindi si consiglia di impostare il rinnovo automatico dei certificati utilizzando i processi Cron.
Aprire il file di lavoro Cron per l' root
utente.
sudo crontab -e
Aggiungi la seguente riga alla fine del file.
30 5 * * * /usr/bin/certbot renew --quiet
Il precedente lavoro Cron verrà eseguito ogni giorno alle 5:30. Se il certificato è in scadenza, verrà automaticamente rinnovato.
Abilita il modulo SSL per Apache.
sudo a2enmod ssl
Modifica il file host virtuale che abbiamo creato in precedenza per Redmine.
sudo nano /etc/apache2/sites-available/redmine.conf
Modificare il file host virtuale in modo che sia simile al seguente.
<VirtualHost *:80>
ServerName redmine.example.com
Redirect permanent / https://redmine.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName redmine.example.com
DocumentRoot "/home/redmine/redmine/public"
<Directory "/home/redmine/redmine/public">
Options None
Require all granted
</Directory>
PassengerAppEnv production
PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
PassengerUser redmine
PassengerHighPerformance on
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/redmine.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/redmine.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/redmine.example.com/chain.pem
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
<IfModule headers_module>
Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
</IfModule>
</VirtualHost>
Salvare il file ed uscire dall'editor.
Riavvia Apache per rendere effettive le modifiche.
sudo systemctl restart apache2
Ora puoi accedere a Redmine HTTPS
all'indirizzo https://redmine.example.com
.
Congratulazioni, hai installato con successo Redmine sulla tua istanza di Ubuntu 16.04. Inizia a sviluppare il tuo progetto creando o importando il tuo progetto.