Ricerca nel sito web

Configura Tomcat, Nginx e SSL su AlmaLinux/Rocky Linux 9


Ecco come installare e configurare Tomcat 10.1 con Nginx per proxy inverso e certificato SSL Let's Encrypt su AlmaLinux/Rocky Linux 9.

Apache Tomcat è un server web open source e un contenitore servlet di lunga durata che implementa le specifiche Jakarta Enterprise Edition.

La sua ultima versione, Tomcat 10.1, supporta le specifiche Servlet 6.0, JavaServer Pages 3.1, WebSocket 2.1 e JASPIC 3.0, oltre a molte altre funzionalità che lo rendono una piattaforma utile per lo sviluppo e la distribuzione di applicazioni e servizi Web basati su Java.

AlmaLinux e Rocky Linux sono i sostituti di Red Hat Enterprise Linux più popolari. Sono distribuzioni Linux orientate al server affidabili, sicure e stabili, che garantiscono il funzionamento senza interruzioni del tuo server.

Questa guida ti guiderà attraverso l'installazione e la configurazione di Tomcat 10.1 su AlmaLinux 9 o Rocky Linux 9. Oltre a ciò, tuttavia, faremo un ulteriore passo avanti.

Installeremo e configureremo Nginx come server proxy inverso davanti a Tomcat, servendo richieste HTTP(S) e inoltrandole a Tomcat. Inoltre, garantiremo una connessione SSL sicura emettendo un certificato SSL Let’s Encrypt gratuito.

Prerequisiti

Avrai bisogno dell'accesso a un server AlmaLinux 9 o Rocky Linux 9 per completare questa guida. Inoltre, tutti i comandi mostrati vengono eseguiti da un utente normale con autorizzazioni di esecuzione sudo. Pertanto, dovresti possederne uno.

Ovviamente puoi saltare la parte sudo dei comandi ed eseguirli direttamente come utente root. Il risultato sarà lo stesso in entrambi i casi.

Inoltre, assicurati che il firewall non blocchi le porte 80 e 443 sul server.

sudo firewall-cmd --permanent --add-service={http,https}
sudo firewall-cmd --reload

Passaggio 1: aggiorna i repository software

Innanzitutto, utilizzeremo il comando DNF per aggiornare l'elenco dei pacchetti disponibili. Ciò garantisce che durante l'installazione vengano utilizzate solo le versioni più recenti dei pacchetti ed evita difficoltà.

Inoltre, assicurati che il sistema sia completamente aggiornato. Se i pacchetti sono in attesa di essere aggiornati, applicali prima di proseguire.

sudo dnf update

Passaggio 2: installare Java Runtime Environment

Apache Tomcat 10.1 richiede la versione 11 o successiva di Java Runtime Environment (JRE) Standard Edition. Quindi installeremo OpenJDK 11, l'implementazione open source della piattaforma Java.

sudo dnf install java-11-openjdk-headless

Una volta completata l'installazione, confermiamo che ora abbiamo un ambiente Java funzionante.

java -version

Passaggio 3: creare un utente del sistema Tomcat

Anche questo passaggio può essere considerato facoltativo, ma lo consiglio vivamente. In esso creeremo un utente di sistema che verrà utilizzato solo per il lavoro di Tomcat.

In questo modo si riduce la possibilità di complicazioni in termini di sicurezza se, ad esempio, utilizziamo l'account root per questo scopo.

Il seguente comando creerà un utente e un gruppo con il nome tomcat sul tuo sistema AlmaLinux 9 o Rocky Linux 9:

sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

Passaggio 4: installa Tomcat su AlmaLinux/Rocky Linux 9

Tomcat è un server indipendente dalla piattaforma e, finché è installato Java, l'installazione è semplice. Sfortunatamente, per impostazione predefinita, Tomcat non è disponibile nei repository Alma Linux 9 o Rocky Linux 9.

Quindi, per prima cosa devi scaricare la versione appropriata. Al momento in cui scrivo, la versione più recente disponibile è Tomcat 10.1.

Puoi controllare la versione più recente prima di scaricarla dalla pagina di download di Tomcat e, se necessario, apportare modifiche al comando wget riportato di seguito.

Naturalmente, assicurati che sul tuo sistema Linux sia installato lo strumento wget. Se non lo è, puoi installarlo facilmente digitando:

sudo dnf install wget

Quindi, scarica il server Tomcat:

wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.1/bin/apache-tomcat-10.1.1.tar.gz

Una volta completato il download, estrai il file tar nella directory /opt/tomcat:

sudo tar xzvf apache-tomcat-10.*.tar.gz -C /opt/tomcat --strip-components=1

Successivamente, imposta le autorizzazioni corrette per i file:

sudo chown -R tomcat:tomcat /opt/tomcat/

Passaggio 5: configurare l'interfaccia di gestione Web Tomcat

Tomcat fornisce una console di gestione basata sul Web, ma per utilizzarla è necessario creare un utente e un ruolo. Sono definiti nel file /opt/tomcat/conf/tomcat-users.xml. Quindi, apri il file con il tuo editor di testo preferito:

sudo vim /opt/tomcat/conf/tomcat-users.xml

Incolla il seguente codice all'interno dei tag  . Modifica la stringa "PASSWORD" per l'accesso di amministratore e gestore.

<!-- user manager can access only manager section -->
<role rolename="manager-gui" />
<user username="manager" password="PASSWORD" roles="manager-gui" />

<!-- user admin can access manager and admin section both -->
<role rolename="admin-gui" />
<user username="admin" password="PASSWORD" roles="manager-gui,admin-gui" />

Inoltre, per impostazione predefinita l'interfaccia di gestione Web di Tomcat è accessibile solo dall'host locale. Quindi, devi configurarlo se vuoi accedervi da qualsiasi luogo.

È necessario modificare il file "/opt/tomcat/webapps/manager/META-INF/context.xml" e aggiungere gli indirizzi IP del sistema remoto da cui si accede all'interfaccia di gestione web di Tomcat.

Supponiamo che questo sia un sistema con indirizzo IP 1.2.3.4. Apri il file con il tuo editor di testo preferito:

sudo vim /opt/tomcat/webapps/manager/META-INF/context.xml

Quindi modificare la riga come segue:

Come puoi vedere, l'elenco degli indirizzi IP consentiti è separato da una barra verticale "|". Salvare ed uscire dal file.

Ora, esegui nuovamente le stesse modifiche sul file "/opt/tomcat/webapps/host-manager/META-INF/context.xml".

sudo vim /opt/tomcat/webapps/host-manager/META-INF/context.xml

Passaggio 6: creare un servizio Tomcat Systemd

Per impostazione predefinita, non disponiamo di un file di unità systemd per Tomcat; pertanto, non possiamo gestirlo come un servizio nel senso di avvio, arresto e riavvio. Quindi, creiamone uno.

Utilizzando il tuo editor di testo del terminale preferito, crea il file tomcat.service:

sudo vim /etc/systemd/system/tomcat.service

Incolla il codice seguente, quindi salva ed esci dal file.

[Unit]
Description=Apache Tomcat Server
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Passaggio 7: abilitare e avviare il servizio Tomcat

Innanzitutto, ricarica il demone systemd per applicare le modifiche:

sudo systemctl daemon-reload

Quindi, imposta Tomcat in modo che si avvii automaticamente all'avvio:

sudo systemctl enable tomcat

E infine, avvia il server Tomcat sul tuo sistema AlmaLinux/Rocky Linux 9:

sudo systemctl start tomcat

Controlla lo stato del server Tomcat per assicurarti che sia attivo e funzionante:

sudo systemctl status tomcat

Passaggio 8: accesso a Tomcat

Prima di procedere, ci assicureremo che il server Tomcat sia installato correttamente e funzioni come previsto sul nostro sistema AlmaLinux 9 o Rocky Linux 9.

Per impostazione predefinita, Tomcat ascolta sulla porta 8080 le connessioni in entrata. Pertanto, dovresti utilizzare temporaneamente il comando seguente per aprire questa porta sul firewall del tuo server.

sudo firewall-cmd --add-port=8080/tcp

Quindi puntare il browser su "http://:8080" o sul nome di dominio associato all'indirizzo IP del server.

Per il bene di questa guida, abbiamo creato un sottodominio temporaneo, "tomcat.nerezia.com", che utilizzeremo.

Fin qui tutto bene. Il server Tomcat è installato correttamente ed è in esecuzione sul nostro sistema AlmaLinux/Rocky Linux 9.

Ti verranno richiesti il nome utente e la password dell'amministratore quando fai clic sul pulsante "App Manager" o "Gestore Host". Inserisci le tue credenziali, quindi accedi. Nella pagina successiva, dovresti vedere Web Application Manager/Host Manager.

Passaggio 9: proteggere Tomcat con il certificato SSL

Per fornire una comunicazione sicura e crittografata con il server Tomcat, utilizzeremo Let's Encrypt per ottenere un certificato SSL gratuito per il nostro sottodominio tomcat.nerezia.com, che fornirà funzionalità HTTPS.

Per fare ciò, dobbiamo installare sul nostro sistema diversi pacchetti aggiuntivi che non fanno parte dei repository AlmaLinux/Rocky Linux 9 ma esistono in quello EPEL. Quindi, aggiungiamolo prima.

sudo dnf install epel-release

Quindi, installa il pacchetto certbot, un'emissione automatica di certificati Let's Encrypt.

sudo dnf install certbot

Infine, generiamo il nostro certificato SSL gratuito.

sudo certbot certonly --agree-tos -m bobby@linuxiac.com --no-eff-email --standalone --preferred-challenges http -d tomcat.nerezia.com

Ottimo, ora abbiamo un certificato SSL valido. Naturalmente, sostituisci la parte dopo l'opzione "-m" con il tuo indirizzo email effettivo. Lì riceverai una notifica quando il certificato dovrà essere rinnovato. Crittografiamo i certificati della durata di 90 giorni.

Ricorda di sostituire la parte dopo "-d" con il nome del tuo dominio. Consulta i nostri articoli Let's Encrypt e Certbot per maggiori dettagli. Ora passiamo al passaggio finale.

Passaggio 10: configura il proxy inverso Nginx per Tomcat

Come già accennato, Tomcat ascolta per impostazione predefinita sulla porta 8080. Pertanto, dovremo configurare Nginx come proxy inverso per inoltrare le richieste HTTP(S) alla porta 8080 di Tomcat.

Innanzitutto, installa il server web Nginx.

sudo dnf install nginx

Successivamente, crea un nuovo file di configurazione del blocco server (host virtuale) per Tomcat.

sudo vim /etc/nginx/conf.d/tomcat.conf

Incolla il seguente codice nel file, assicurandoti di modificare il nome di dominio e i nomi dei file dei certificati SSL.

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name tomcat.nerezia.com;

    ssl_certificate /etc/letsencrypt/live/tomcat.nerezia.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/tomcat.nerezia.com/privkey.pem;

    access_log /var/log/nginx/tomcat-access.log;
    error_log /var/log/nginx/tomcat-error.log;

    location / {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

server {
    listen 80;
    listen [::]:80;
    server_name tomcat.nerezia.com;
    return 301 https://$host$request_uri;
}

Salvare ed uscire dal file. Quindi, per applicare le modifiche, abilitare il servizio Nginx e riavviare il server web:

sudo systemctl enable nginx
sudo systemctl restart nginx

Verifica che il servizio Nginx sia completamente funzionante:

sudo systemctl status nginx

Infine, esegui il comando seguente per modificare la policy SELinux. Abilita, a livello di sicurezza, la funzionalità di proxy inverso.

sudo setsebool -P httpd_can_network_relay on

Ora avvia il tuo browser e vai all'indirizzo del tuo dominio. Ancora una volta, la pagina ormai familiare ti accoglierà, ma questa volta tutto il traffico è sicuro su HTTPS e servito da Nginx.

Ricordati di disabilitare l'accesso temporaneamente consentito alla porta 8080 poiché non ne abbiamo più bisogno.

sudo firewall-cmd --remove-port=8080/tcp

Conclusione

Congratulazioni! Hai installato e configurato con successo Apache Tomcat 10.1 con Nginx per proxy inverso e certificato SSL Let's Encrypt su AlmaLinux/Rocky Linux 9. Ora il tuo server Tomcat è completamente operativo e pronto per la produzione.

Questo segna la fine della nostra guida. Spero di averti aiutato. Eventuali pensieri e suggerimenti sono benvenuti nella sezione commenti qui sotto.

Divertiti con Apache Tomcat. Per ulteriori informazioni, visita la documentazione ufficiale su Tomcat Doc.

Articoli correlati: