Come installare Redmine su Ubuntu 16.04

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.1come 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 sudonuovamente all'utente poiché non è necessario eseguire altri comandi utilizzando l' rootutente.

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>.

Configura Apache

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.socomando

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 admine 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.



Leave a Comment

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Gli attacchi ransomware sono in aumento, ma l'intelligenza artificiale può aiutare ad affrontare l'ultimo virus informatico? L'intelligenza artificiale è la risposta? Leggi qui sai è AI boone o bane

ReactOS: è questo il futuro di Windows?

ReactOS: è questo il futuro di Windows?

ReactOS, un sistema operativo open source e gratuito è qui con l'ultima versione. Può essere sufficiente alle esigenze degli utenti Windows moderni e abbattere Microsoft? Scopriamo di più su questo vecchio stile, ma un'esperienza del sistema operativo più recente.

Rimani connesso tramite lapp desktop WhatsApp 24*7

Rimani connesso tramite lapp desktop WhatsApp 24*7

Whatsapp ha finalmente lanciato l'app desktop per utenti Mac e Windows. Ora puoi accedere facilmente a Whatsapp da Windows o Mac. Disponibile per Windows 8+ e Mac OS 10.9+

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

Leggi questo per sapere come l'intelligenza artificiale sta diventando popolare tra le aziende di piccole dimensioni e come sta aumentando le probabilità di farle crescere e dare un vantaggio ai loro concorrenti.

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Recentemente Apple ha rilasciato macOS Catalina 10.15.4 un aggiornamento supplementare per risolvere i problemi, ma sembra che l'aggiornamento stia causando più problemi che portano al bricking delle macchine mac. Leggi questo articolo per saperne di più

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per l'estrazione dei dati dai Big Data

Che cosè un file system di journaling e come funziona?

Che cosè un file system di journaling e come funziona?

Il nostro computer memorizza tutti i dati in un modo organizzato noto come file system di journaling. È un metodo efficiente che consente al computer di cercare e visualizzare i file non appena si preme search.https://wethegeek.com/?p=94116&preview=true

Singolarità tecnologica: un lontano futuro della civiltà umana?

Singolarità tecnologica: un lontano futuro della civiltà umana?

Man mano che la scienza si evolve a un ritmo rapido, assumendo gran parte dei nostri sforzi, aumentano anche i rischi di sottoporci a una singolarità inspiegabile. Leggi, cosa potrebbe significare per noi la singolarità.

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Limpatto dellintelligenza artificiale nella sanità 2021

Limpatto dellintelligenza artificiale nella sanità 2021

L'intelligenza artificiale nell'assistenza sanitaria ha compiuto grandi passi avanti negli ultimi decenni. Pertanto, il futuro dell'IA in sanità continua a crescere giorno dopo giorno.