Ricerca nel sito web

Come installare Apache Tomcat 10 con Nginx su Rocky Linux 8


Su questa pagina

  1. Prerequisiti
  2. Passaggio 1 - Installa Java
  3. Passaggio 2 - Crea un utente di sistema
  4. Passaggio 3 - Scarica Tomcat
  5. Passaggio 4 - Crea un file di unità Systemd
  6. Passaggio 5 - Avvia e abilita il servizio Tomcat
  7. Passaggio 6: configurazione del firewall
  8. Passaggio 7: configurazione dell'interfaccia di gestione Web di Tomcat
  9. Passaggio 8 - Installa SSL
  10. Passaggio 9 - Installa Nginx
  11. Passaggio 10: esegui TomCat
  12. Conclusione

Tomcat è un server Web open source per applicazioni basate su Java. Viene utilizzato per la distribuzione di applicazioni Java Servlet e JSP. I servlet Java sono piccoli programmi che definiscono il modo in cui un server gestisce le richieste e le risposte. Tomcat funge da implementazione open source delle tecnologie Java Servlet, JavaServer Pages, Java Expression Language e Java WebSocket.

Sono disponibili più versioni di Tomcat. Discuteremo l'installazione di Tomcat 10 per il nostro tutorial. Se desideri installare Tomcat 9, le istruzioni saranno le stesse. Se ci sono modifiche, saranno specificate nel tutorial.

Per il nostro tutorial, installeremo Tomcat 10 insieme al server Nginx per fungere da proxy inverso e proteggerlo tramite SSL. Esiste una versione di Tomcat 10.1.x che è l'ultima versione alpha di Tomcat, ma non la installeremo.

Prerequisiti

  • A server running Rocky Linux 8.5

  • A non-sudo user with superuser privileges.

  • Make sure everything is updated.

    $ sudo dnf update
    
  • Packages required for the installation.

    $ sudo dnf install wget tar
    

Passaggio 1: installa Java

Tomcat 9 e 10 richiedono Java 8 e versioni successive. Installeremo OpenJDK 11, l'implementazione open source della piattaforma Java.

Eseguire il seguente comando per installare OpenJDK.

$ sudo dnf install java-11-openjdk-devel

Verificare l'installazione.

$ java -version
openjdk version "11.0.13" 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)

Passaggio 2: creare un utente di sistema

Creeremo un nuovo utente di sistema per ridurre al minimo qualsiasi rischio per la sicurezza eseguendo Tomcat come utente root. Per il nuovo utente, imposteremo /opt/tomcat come home directory.

Eseguire il seguente comando per creare un nuovo utente di sistema per Tomcat.

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

Passaggio 3: scarica Tomcat

L'ultima versione di Tomcat v10 può essere scaricata dalla sua pagina di download. Al momento della stesura di questo tutorial, v10.0.14 è l'ultima versione disponibile. Controlla l'ultima versione prima di scaricare Tomcat.

Usa wget per scaricare Tomcat.

$ VERSION=10.0.14
$ wget https://dlcdn.apache.org/tomcat/tomcat-10/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz

Estrai il file nella directory /opt/tomcat.

$ sudo tar -xf apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/

Crea un collegamento simbolico all'ultima versione di Tomcat che punti alla directory di installazione di Tomcats.

$ sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest

Cambia la proprietà della directory all'utente creato in precedenza.

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

Passaggio 4: creare un file di unità Systemd

Il passaggio successivo consiste nel creare un file di servizio per il server Tomcat in modo che possa essere avviato automaticamente.

Crea e apri il file /etc/systemd/system/tomcat.service per la modifica.

$ sudo nano /etc/systemd/system/tomcat.service

Incolla il seguente codice.

[Unit]
Description=Apache Tomcat 10 Servlet container
Wants=network.target
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

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

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

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
Restart=always

[Install]
WantedBy=multi-user.target

Salva il file premendo Ctrl + X e immettendo Y quando viene richiesto di salvare.

Passaggio 5: avviare e abilitare il servizio Tomcat

Ricarica il demone del servizio per abilitare il servizio Tomcat.

$ sudo systemctl daemon-reload

Abilita e avvia il servizio Tomcat.

$ sudo systemctl enable tomcat --now

Controlla lo stato del servizio.

$ sudo systemctl status tomcat
? tomcat.service - Apache Tomcat 10 Servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-12-17 15:54:28 UTC; 24s ago
  Process: 86219 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 86226 (java)
    Tasks: 19 (limit: 11411)
   Memory: 132.7M
   CGroup: /system.slice/tomcat.service
           ??86226 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties>

Dec 17 15:54:27 howtoforge systemd[1]: Starting Apache Tomcat 10 Servlet container...
Dec 17 15:54:28 howtoforge systemd[1]: Started Apache Tomcat 10 Servlet container.

Passaggio 6: configurare il firewall

Rocky Linux utilizza Firewalld Firewall. Controlla lo stato dei firewall.

$ sudo firewall-cmd --state
running

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 7: configurare l'interfaccia di gestione Web di Tomcat

L'interfaccia di gestione web sarà accessibile solo dopo aver creato una credenziale utente per essa.

Gli utenti e i ruoli di Tomcat sono definiti nel file /opt/tomcat/latest/conf/tomcat-users.xml. Apri il file per la modifica.

$ sudo nano /opt/tomcat/latest/conf/tomcat-users.xml

Aggiungi le seguenti righe prima della riga . Sostituisci il nome utente e la password con le tue credenziali.

Scegli credenziali diverse per i portali Tomcat Gestore e Amministratore.

<tomcat-users>
<!--
    Comments
-->
<role rolename="manager-gui"/>
    <user username="manager" password="managerpassword" roles="manager-gui" />
<role rolename="admin-gui"/>
	<user username="admin" password="adminpassword" roles="admin-gui"/>
</tomcat-users>

Salva il file premendo Ctrl + X e immettendo Y quando viene richiesto di salvare.

Per impostazione predefinita, l'interfaccia Tomcat è accessibile solo dal localhost. Se hai bisogno di accedervi da qualsiasi luogo, devi configurarlo.

Apri /opt/tomcat/latest/webapps/manager/META-INF/context.xml per la modifica.

$ sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml

Rimuovere le seguenti righe o commentarle come specificato di seguito racchiudendole in .

<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->

Consentire l'accesso da qualsiasi indirizzo IP è un rischio per la sicurezza. Puoi limitarlo consentendo l'accesso solo dal tuo indirizzo IP pubblico. Se il tuo indirizzo IP pubblico è 22.22.22.22, modifica la riga come segue.

 <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|22.22.22.22" />

L'elenco degli indirizzi IP consentiti è separato da una barra verticale (|). Puoi aggiungere singoli indirizzi IP o utilizzare un'espressione regolare.

Salva il file premendo Ctrl + X e immettendo Y quando viene richiesto di salvare.

Esegui le stesse modifiche anche sul file /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml.

Al termine, riavvia il server Tomcat.

$ sudo systemctl restart tomcat

Passaggio 8: installa SSL

Per installare un certificato SSL utilizzando Lets Encrypt, è necessario installare lo strumento Certbot.

Innanzitutto, devi scaricare e installare il repository EPEL.

$ sudo dnf install epel-release

Eseguire i seguenti comandi per installare Certbot.

$ sudo dnf install certbot

Genera il certificato SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d tomcat.example.com

Il comando precedente scaricherà un certificato nella directory /etc/letsencrypt/live/tomcat.example.com sul tuo server.

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 tomcat.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload 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: installa Nginx

Rocky Linux 8.5 viene fornito con l'ultima versione stabile di Nginx. Installalo usando il seguente comando.

$ sudo dnf module install nginx:1.20

Verificare l'installazione.

$ nginx -v
nginx version: nginx/1.20.1

Abilita e avvia il servizio Nginx.

$ sudo systemctl enable nginx --now

Crea e apri il file /etc/nginx/conf.d/tomcat.conf per la modifica.

$ sudo nano /etc/nginx/conf.d/tomcat.conf

Incolla il seguente codice al suo interno.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  tomcat.example.com;

    access_log  /var/log/nginx/tomcat.access.log;
    error_log   /var/log/nginx/tomcat.error.log;
    
    # SSL
    ssl_certificate      /etc/letsencrypt/live/tomcat.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/tomcat.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/tomcat.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;

    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 Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}
# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  tomcat.example.com;
    return 301   https://$host$request_uri;
}

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

Riavvia il servizio Nginx per abilitare la nuova configurazione.

$ sudo systemctl restart nginx

Passaggio 10: esegui TomCat

Avvia https://tomcat.example.com nel tuo browser e si aprirà la seguente schermata.

Ora puoi accedere alle pagine Server Status, Manager App e Host Manager utilizzando le credenziali di accesso che abbiamo configurato nel passaggio 7.

Conclusione

Questo conclude il nostro tutorial sull'installazione e la configurazione di Tomcat Server su un server basato su Rocky Linux 8.5 e servendolo tramite proxy inverso Nginx e utilizzando SSL per proteggerlo. Se hai domande, pubblicale nei commenti qui sotto.