Ricerca nel sito web

Come installare il software di gestione dei progetti Redmine su Rocky Linux 8


Su questa pagina

  1. Prerequisiti
  2. Passaggio 1: configurazione del firewall
  3. Passaggio 2 - Installa il server Apache
  4. Passaggio 3 - Installa e configura il server MySQL
  5. Passaggio 4 - Installa il repository EPEL
  6. Passaggio 5 - Installa Ruby e altri requisiti
  7. Passaggio 6 - Installa Redmine
  8. Passaggio 7 - Installa Phusion Passenger
    1. Configura il server Apache

    1. Cambia la porta di ascolto di Apache
    2. 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. Scegli 2 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 tasto INVIO 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://:3000/login per ottenere la schermata di accesso di Redmine.

    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.