GNU/Linux >> Linux Esercitazione >  >> Rocky Linux

Come installare Apache Tomcat 10 con Nginx su Rocky Linux 8

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 vuoi installare Tomcat 9, le istruzioni saranno le stesse. Eventuali modifiche verranno specificate nel tutorial.

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

Prerequisiti

  • Un server che esegue Rocky Linux 8.5

  • Un utente non sudo con privilegi di superutente.

  • Assicurati che tutto sia aggiornato.

    $ sudo dnf update
    
  • Pacchetti necessari per l'installazione.

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

Esegui il comando seguente per installare OpenJDK.

$ sudo dnf install java-11-openjdk-devel

Verifica 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)

Fase 2:crea 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 directory principale.

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

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

Fase 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 in /opt/tomcat directory.

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

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

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

Modifica la proprietà della directory con l'utente creato in precedenza.

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

Fase 4:crea 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 inserendo Y quando viene richiesto di salvare.

Passaggio 5 - Avvia e abilita 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:configurazione del firewall

Rocky Linux utilizza Firewalld Firewall. Controlla lo stato del 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:configurazione dell'interfaccia di gestione Web Tomcat

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

Gli utenti ei ruoli Tomcat sono definiti in /opt/tomcat/latest/conf/tomcat-users.xml file. Apri il file per la modifica.

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

Aggiungi le seguenti righe prima di </tomcat-users linea. Sostituisci nome utente e password con le tue credenziali.

Scegli credenziali diverse per i portali Tomcat Manager e Administrator.

<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 inserendo Y quando viene richiesto di salvare.

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

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

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

Rimuovi le seguenti righe o commentale come specificato di seguito racchiudendolo in <!-- e --> .

<!--
  <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 , quindi modificare 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 inserendo Y quando viene richiesto di salvare.

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

Al termine, riavvia il server Tomcat.

$ sudo systemctl restart tomcat

Passaggio 8 - Installa SSL

Per installare un certificato SSL utilizzando Let's Encrypt, è necessario installare lo strumento Certbot.

Innanzitutto, devi scaricare e installare il repository EPEL.

$ sudo dnf install epel-release

Esegui 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 [email protected] -d tomcat.example.com

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

Genera un gruppo Diffie-Hellman certificato.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Crea una directory webroot di sfida per il rinnovo automatico di Let's 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, prima crea il file /etc/cron.daily/certbot-renew e aprilo per la modifica.

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

Modifica 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

Verifica 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

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

Verifica la sintassi del file di configurazione 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 sul suo servizio tramite proxy inverso Nginx e sull'utilizzo di SSL per proteggerlo. Se hai domande, pubblicale nei commenti qui sotto.


Rocky Linux
  1. Come installare Apache Tomcat 9 con Nginx Proxy su Debian 10

  2. Come installare WordPress con LEMP (Nginx, MariaDB e PHP) su Rocky Linux 8?

  3. Come installare Apache Maven su Rocky Linux/Alma Linux 8

  4. Come installare ModSecurity con Nginx su Rocky Linux 8

  5. Come installare Apache Kafka su Rocky Linux 8

Come installare Apache Tomcat su Rocky Linux 8

Come installare Sails.js Framework con Nginx su Rocky Linux 8

Come installare Apache Tomcat 10 su Ubuntu 20.04 con Nginx

Come installare Apache Tomcat 10 su Ubuntu 22.04 con Nginx

Come installare Nginx su Rocky Linux 8

Come installare Nginx su Rocky Linux 9