Come installare il software di gestione dei progetti Redmine su Rocky Linux 8
Su questa pagina
- Prerequisiti
- Passaggio 1: configurazione del firewall
- Passaggio 2 - Installa il server Apache
- Passaggio 3 - Installa e configura il server MySQL
- Passaggio 4 - Installa il repository EPEL
- Passaggio 5 - Installa Ruby e altri requisiti
- Passaggio 6 - Installa Redmine
- Passaggio 7 - Installa Phusion Passenger
- Configura il server Apache
- Cambia la porta di ascolto di Apache
- Configura Nginx
Redmine è un software di gestione dei progetti gratuito e open source e uno strumento di monitoraggio dei problemi. È scritto utilizzando il framework Ruby on Rails e può essere integrato con vari sistemi di controllo della versione. Include un browser di repository e un visualizzatore di differenze. Può essere utilizzato per gestire le funzionalità dei progetti per wiki e forum del progetto, il monitoraggio del tempo e il controllo degli accessi basato sui ruoli. È multipiattaforma, multidatabase e supporta 49 lingue.
In questo tutorial imparerai come installare Redmine su un server basato su Rocky Linux 8.
Prerequisiti
-
A Server running Rocky Linux.
-
A non-sudo user with root privileges.
-
Disable SELinux.
-
Everything is updated.
$ sudo dnf update
Passaggio 1: configurare il firewall
Il primo passo è configurare il firewall. Rocky Linux utilizza Firewalld Firewall. Controlla lo stato dei firewall.
$ sudo firewall-cmd --state running
Apri la porta 3000, che possiamo usare per controllare Redmine.
$ sudo firewall-cmd --permanent --add-port=3000
Consenti porte HTTP e HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Ricarica il firewall per abilitare le modifiche.
$ sudo firewall-cmd --reload
Passaggio 2: installa il server Apache
Useremo il server web Apache per distribuire Redmine. Installa Apache usando il seguente comando.
$ sudo dnf install httpd
Abilita e avvia il servizio Apache.
$ sudo systemctl enable --now httpd.service
Concedi il tuo attuale utente connesso all'utente apache in modo che abbia l'accesso necessario alla directory
/var/www/redmine
.$ sudo usermod -aG $USER apache
Passo 3 - Installa e configura MySQL Server
Useremo il database MySQL per memorizzare i dati. Il repository Appstream di Rocky Linux viene fornito con l'ultima versione di MySQL.
Installa MySQL.
$ sudo dnf install mysql-server
Abilita e avvia il servizio MySQL.
$ sudo systemctl enable mysqld --now
Installazione sicura di MySQL.
$ sudo mysql_secure_installation
Per il primo passaggio, ti verrà chiesto se desideri configurare il plug-in Validate Password, che puoi utilizzare per testare la sicurezza della tua password MySQL. Scegli
Y
per procedere. Ti verrà chiesto di scegliere il livello di convalida della password nel passaggio successivo. Scegli2
che è il livello più forte e richiederà che la tua password sia lunga almeno otto caratteri e includa un mix di caratteri maiuscoli, minuscoli, numerici e speciali.Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Ti verrà chiesto di scegliere una password di root nel passaggio successivo. Scegli una password complessa che soddisfi i requisiti del plug-in di convalida della password. Nel passaggio successivo, ti verrà chiesto se continuare con la password scelta. Premi
y
per continuare.Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
Premi
Y
e poi il tastoINVIO
per tutti i seguenti prompt per rimuovere gli utenti anonimi e il database di test, disabilitare i login root e caricare le nuove regole impostate.... Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Success. ... Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Success. ... Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. ... Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y Success. All done!
Inserisci la shell MySQL. Inserisci la tua password di root per continuare.
$ mysql -u root -p
Crea un utente
redmine
. Assicurati che la password soddisfi i requisiti impostati in precedenza.mysql> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'Your_password2';
Crea un database
redmine
.mysql> CREATE DATABASE redmine CHARACTER SET utf8mb4;
Concedi all'utente i privilegi sul database
redmine
.mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
Esci dalla shell.
mysql> exit
Passo 4 - Installa il repository EPEL
Alcuni dei pacchetti richiesti per Redmine sono disponibili nel repository EPEL. Eseguire il seguente comando per installare il repository EPEL.
$ sudo dnf install epel-release
Abilita il repository di PowerTools.
$ sudo dnf config-manager --set-enabled powertools
Passo 5 - Installa Ruby e altri requisiti
Rocky Linux 8 viene fornito con quattro diverse versioni di Ruby: 2.5, 2.6, 2.7 e 3.0.
Elenca tutti i moduli Ruby disponibili.
$ dnf module list ruby Last metadata expiration check: 0:18:58 ago on Mon 03 Jan 2022 11:50:10 AM UTC. Rocky Linux 8 - AppStream Name Stream Profiles Summary ruby 2.5 [d] common [d] An interpreter of object-oriented scripting language ruby 2.6 common [d] An interpreter of object-oriented scripting language ruby 2.7 common [d] An interpreter of object-oriented scripting language ruby 3.0 common [d] An interpreter of object-oriented scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
L'ultima versione di Redmines è compatibile con tutte le versioni tranne la 3.0. Installeremo Ruby 2.7 per il nostro tutorial.
Ripristina le altre versioni e abilita la versione 2.7 di Ruby.
$ sudo dnf module reset ruby $ sudo dnf module enable ruby:2.7
Installa Rubino.
$ sudo dnf install ruby ruby-devel
Verificare l'installazione.
$ ruby -v ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]
Installa tutti i pacchetti rimanenti richiesti da Redmine.
$ sudo dnf install rpm-build wget libxml2-devel make automake libtool ImageMagick ImageMagick-devel mariadb-devel httpd-devel openssl-devel libcurl-devel gcc gcc-c++
Passaggio 6: installa Redmine
Visita la pagina dei download di Redmine e controlla l'ultima versione stabile disponibile. Al momento della stesura di questo tutorial, l'ultima versione disponibile è la 4.2.3.
Usa
wget
per scaricare Redmine.$ wget https://redmine.org/releases/redmine-4.2.3.tar.gz
Estrai e sposta i file nella directory
/var/www/redmine
.$ tar xfz redmine-4.2.3.tar.gz $ sudo mv redmine-4.2.3 /var/www/redmine
Passa alla directory
/var/www/redmine
.$ cd /var/www/redmine
Crea i file di configurazione di Redmine utilizzando i file di esempio forniti.
$ cp config/configuration.yml.example config/configuration.yml $ cp config/database.yml.example config/database.yml $ cp public/dispatch.fcgi.example public/dispatch.fcgi
Apri il file
database.yml
per la modifica.$ nano config/database.yml
Trova e configura le impostazioni del database nella sezione seguente.
production: adapter: mysql2 database: redmine host: localhost username: redmine password: "Your_password2" # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7 encoding: utf8mb4
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Installa il bundler per la gestione delle dipendenze di ruby gem.
$ gem install bundler
Impostare l'ambiente per l'installazione delle dipendenze gem.
$ bundle config set --local without 'development test'
Installa le dipendenze gem.
$ bundle install
In caso di problemi con le versioni gem, utilizzare il seguente comando per ripristinare.
$ sudo gem pristine --all
Genera una chiave segreta casuale per impedire la manomissione dei cookie per la memorizzazione dei dati della sessione.
$ bundle exec rake generate_secret_token
Creare la struttura del database.
$ RAILS_ENV=production bundle exec rake db:migrate
Inserisci i dati nel database MySQL.
$ RAILS_ENV=production REDMINE_LANG=en bundle exec rake redmine:load_default_data
Crea le directory necessarie e imposta i permessi dei file.
$ mkdir -p tmp/pdf $ mkdir -p public/plugin_assets $ chown -R $USER:$USER files log tmp public/plugin_assets $ chmod -R 755 /var/www/remine/
Esegui il seguente comando per avviare un'istanza del server Rails.
$ bundle exec rails server webrick -e production => Booting WEBrick => Rails 5.2.6 application starting in production on http://0.0.0.0:3000 => Run `rails server -h` for more startup options [2022-01-03 12:58:19] INFO WEBrick 1.6.1 [2022-01-03 12:58:19] INFO ruby 2.7.4 (2021-07-07) [x86_64-linux] [2022-01-03 12:58:19] INFO WEBrick::HTTPServer#start: pid=117224 port=3000
Apri l'URL
http://
per ottenere la schermata di accesso di Redmine.:3000/login Inserisci le credenziali predefinite (admin/admin) per accedere. Ti verrà chiesto di cambiare la password.
Successivamente, verrai reindirizzato alla pagina Il mio account.
Redmine è stato installato correttamente.
Successivamente, premi CTRL+C sul terminale per arrestare il server.
Passaggio 7: installare Phusion Passenger
Phusion Passenger è un server di applicazioni Ruby che ci consente di servire Redmine tramite un server di terze parti. Nel nostro caso, useremo Apache.
Installa Passeggero.
$ gem install passenger
Installa il modulo Passenger per il server Apache.
$ passenger-install-apache2-module
Sarai accolto con un messaggio di benvenuto. Premere Invio per continuare.
Welcome to the Phusion Passenger Apache 2 module installer, v6.0.12. This installer will guide you through the entire installation process. It shouldn't take more than 3 minutes in total. Here's what you can expect from the installation process: 1. The Apache 2 module will be installed for you. 2. You'll learn how to configure Apache. 3. You'll learn how to deploy a Ruby on Rails application. Don't worry if anything goes wrong. This installer will advise you on how to solve any problems. Press Enter to continue, or Ctrl-C to abort. --------------------------------------------
Successivamente, ti verrà chiesta la lingua. Ruby è selezionato per impostazione predefinita, quindi premi Invio per continuare.
Which languages are you interested in? Use <space> to select. If the menu doesn't display correctly, press '!' ? ? Ruby ? Python ? Node.js ? Meteor --------------------------------------------
Potresti ricevere un avviso sui permessi dei file. Se hai seguito il nostro tutorial, premi Invio per continuare.
Warning: some directories may be inaccessible by the web server! The web server typically runs under a separate user account for security reasons. That user must be able to access the Phusion Passenger(R) files. However, it appears that some directories have too strict permissions. This may prevent the web server user from accessing Phusion Passenger(R) files. It is recommended that you relax permissions as follows: sudo chmod o+x "/home/navjot" Press Ctrl-C to return to the shell. (Recommended) After relaxing permissions, re-run this installer. -OR- Press Enter to continue anyway.
L'intero processo richiederà circa 10-15 minuti per terminare. Se ricevi un errore come il seguente, molto probabilmente è dovuto alla poca RAM. Dovresti aumentare la RAM sul tuo server o installare lo spazio di swap.
c++: fatal error: Killed signal terminated program cc1plus compilation terminated. rake aborted!
Una volta completato il processo, riceverai il seguente messaggio.
-------------------------------------------- Almost there! Please edit your Apache configuration file, and add these lines: LoadModule passenger_module /home/navjot/.gem/ruby/gems/passenger-6.0.12/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /home/navjot/.gem/ruby/gems/passenger-6.0.12 PassengerDefaultRuby /usr/bin/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.
Non premere ancora Invio. Apri una nuova sessione sul tuo server come utente corrente ed esegui le seguenti configurazioni.
Configura il server Apache
Crea un file di configurazione del modulo Apache per Phusion Passenger.
$ sudo nano /etc/httpd/conf.modules.d/00-passenger.conf
Incolla il codice che hai ottenuto alla fine dell'installazione del passeggero.
LoadModule passenger_module /home/navjot/.gem/ruby/gems/passenger-6.0.12/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /home/username/.gem/ruby/gems/passenger-6.0.12 PassengerDefaultRuby /usr/bin/ruby </IfModule>
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Crea un altro file di configurazione Apache per il sito Redmine.
$ sudo nano /etc/httpd/conf.d/redmine.conf
Incolla il seguente codice al suo interno.
Listen 3000 <IfModule mod_passenger.c> PassengerRoot /home/username/.gem/ruby/gems/passenger-6.0.12 PassengerDefaultRuby /usr/bin/ruby </IfModule> <VirtualHost *:3000> ServerName redmine.example.com DocumentRoot "/var/www/redmine/public" CustomLog logs/redmine_access.log combined ErrorLog logs/redmine_error_log LogLevel warn <Directory "/var/www/redmine/public"> Options Indexes ExecCGI FollowSymLinks Require all granted AllowOverride all </Directory> </VirtualHost>
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Apri il file di configurazione principale di Apache
/etc/httpd/conf/httpd.conf
per modificarlo.$ sudo nano /etc/httpd/conf/httpd.conf
Trova la variabile
NomeServer
e rimuovi il commento rimuovendo il cancelletto (#) davanti ad essa e impostando il suo valore come segue.ServerName localhost
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Verifica la configurazione di Apache.
$ httpd -t Syntax OK
Torna indietro e premi Invio per continuare l'installazione di Passenger. Eseguirà alcuni controlli e dovresti vedere il seguente messaggio al suo completamento con successo.
Deploying a web application To learn how to deploy a web app on Passenger, please follow the deployment guide: https://www.phusionpassenger.com/library/deploy/apache/deploy/ Enjoy Phusion Passenger, a product of Phusion® (www.phusion.nl) :-) https://www.phusionpassenger.com Passenger® is a registered trademark of Phusion Holding B.V.
Riavvia il tuo server Apache.
$ sudo systemctl restart httpd
Il tuo sito web dovrebbe essere disponibile all'indirizzo
http://redmine.example.com:3000
.Questo non è il modo perfetto per accedere a Redmine. Viene ancora servito tramite il protocollo HTTP non sicuro e utilizza un numero di porta. Installeremo Nginx per fungere da proxy inverso e servire Redmine utilizzando il protocollo HTTPS per migliorare questo. Prima di passare all'installazione e alla configurazione di Nginx, dobbiamo impostare il certificato SSL.
Passaggio 8: installa SSL
Per installare un certificato SSL utilizzando Lets Encrypt, è necessario installare lo strumento Certbot. Eseguire i seguenti comandi per installare Certbot.
$ sudo dnf install certbot
Arresta il server Apache.
$ sudo systemctl stop httpd
Genera il certificato SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d redmine.example.com
Il comando precedente scaricherà un certificato nella directory
/etc/letsencrypt/live/redmine.example.com
sul tuo server.Avvia il server Apache.
$ sudo systemctl start httpd
Genera un certificato di gruppo Diffie-Hellman.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Crea una directory webroot di verifica per il rinnovo automatico di Lets Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni giorno per controllare il certificato e rinnovarlo se necessario. Per questo, per prima cosa, crea il file
/etc/cron.daily/certbot-renew
e aprilo per modificarlo.$ sudo nano /etc/cron.daily/certbot-renew
Incolla il seguente codice.
#!/bin/sh certbot renew --cert-name redmine.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl restart nginx"
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Modificare le autorizzazioni sul file dell'attività per renderlo eseguibile.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Passaggio 9: installare e configurare Nginx come proxy inverso
Rocky Linux 8 viene fornito con quattro diverse versioni di Nginx: 1.14, 1.16, 1.18 e 1.20.
Elenca tutti i moduli Nginx disponibili.
$ dnf module list nginx Last metadata expiration check: 20:23:20 ago on Mon 03 Jan 2022 12:38:07 PM UTC. Rocky Linux 8 - AppStream Name Stream Profiles Summary nginx 1.14 [d] common [d] nginx webserver nginx 1.16 common [d] nginx webserver nginx 1.18 common [d] nginx webserver nginx 1.20 common [d] nginx webserver Extra Packages for Enterprise Linux Modular 8 - x86_64 Name Stream Profiles Summary nginx mainline common nginx webserver nginx 1.20 common [d] nginx webserver Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Ripristina le altre versioni e abilita la versione 1.20 di Nginx.
$ sudo dnf module reset nginx $ sudo dnf module enable nginx:1.20
Installa Nginx. Disabilitiamo temporaneamente il repository
Epel
poiché vogliamo acquisire Nginx dall'Appstream.$ sudo dnf install nginx --disablerepo=epel-modular
Verificare l'installazione.
$ nginx -v nginx version: nginx/1.20.0
Per evitare qualsiasi conflitto con Nginx, dobbiamo cambiare la porta predefinita su cui Apache è in ascolto.
Cambia la porta di ascolto di Apache
Apri il file
/etc/httpd/conf/httpd.conf
per modificarlo.$ sudo nano /etc/httpd/conf/httpd.conf
Modificare la porta da 80 a 8080 come segue.
Listen 8080
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Riavvia Apache.
$ sudo systemctl restart httpd
Configura Nginx
Crea e apri il file
/etc/nginx/conf.d/redmine.conf
per la modifica.$ sudo nano /etc/nginx/conf.d/redmine.conf
Incolla il seguente codice al suo interno.
# Redirect all non-encrypted to encrypted server { listen 80; server_name redmine.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name redmine.example.com; ssl_certificate /etc/letsencrypt/live/redmine.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/redmine.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/redmine.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; access_log /var/log/nginx/redmine.example.com.access.log main; error_log /var/log/nginx/redmine.example.com.error.log; location / { proxy_pass http://localhost:3000; proxy_redirect off; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.
Apri il file
/etc/nginx/nginx.conf
per la modifica.$ sudo nano /etc/nginx/nginx.conf
Aggiungere la riga seguente prima della riga
include /etc/nginx/conf.d/*.conf;
.server_names_hash_bucket_size 64;
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Verificare la sintassi del file di configurazione di Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Avvia il servizio Nginx per abilitare la nuova configurazione.
$ sudo systemctl start nginx
La tua applicazione Redmine dovrebbe essere accessibile su
https://redmine.example.com
.Conclusione
Questo conclude il nostro tutorial in cui hai imparato come installare Redmine Project Manager su un server basato su Rocky Linux 8. Hai anche imparato a servire l'applicazione Redmine tramite Nginx utilizzando il protocollo HTTPS. Se hai domande, pubblicale nei commenti qui sotto.