Introduzione

Apache Tomcat è un'implementazione open source delle tecnologie Java Servlet, JavaServer Pages, Java Expression Language e Java WebSocket. Oggi è una delle applicazioni e dei server Web più utilizzati al mondo. Tomcat è semplice da usare e ha un solido ecosistema di componenti aggiuntivi.

Questo tutorial spiega come installare Tomcat 9.0 su CentOS 8.

Se desideri installare Tomcat su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Installare Java

Tomcat 9 richiede Java SE 8 o versioni successive. Installare OpenJDK 11, l'implementazione open source della piattaforma Java.

Prima di procedere, installare i seguenti tool utili per procedere correttamente con il tutorial:

sudo dnf install wget nano tar

Eseguire il comando seguente come root o utente con privilegi sudo per installare Java:

sudo dnf install java-11-openjdk-devel

Una volta completata l'installazione, verificala controllando la versione Java:

java -version

L'output dovrebbe assomigliare a questo:

openjdk version "11.0.5" 2019-10-15 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode, sharing)

Creare un utente di sistema

L'esecuzione di Tomcat sotto l'utente root è un rischio per la sicurezza. Ci creare un nuovo utente di sistema e di gruppo con la home directory /opt/tomcat che eseguirà il servizio Tomcat. Per fare ciò, inserisci il seguente comando:

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

Scaricare Tomcat

La distribuzione binaria Tomcat è disponibile per il download dalla pagina dei download Tomcat.

Al momento in cui scrivo, è l'ultima versione di Tomcat 9.0.30. Prima di continuare con il passaggio successivo, controlla la pagina di download di Tomcat 9 per vedere se è disponibile una versione più recente.

Scarica il file zip Tomcat con wget nella directory /tmp:

VERSION=9.0.30
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp

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

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

Tomcat viene aggiornato su base regolare. Per avere un maggiore controllo su versioni e aggiornamenti, creeremo un collegamento simbolico chiamato latest, che punta alla directory di installazione di Tomcat:

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

L'utente di sistema precedentemente creato, deve avere accesso alla directory di installazione di Tomcat. Cambia la proprietà della directory in tomcat utente e gruppo:

sudo chown -R tomcat: /opt/tomcat

Rendi eseguibili gli script di shell all'interno della directory bin:

sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'

Questi script vengono utilizzati per avviare e arrestare Tomcat.

Creare un file di unità Systemd

Invece di avviare e arrestare manualmente il server Tomcat, lo imposteremo come servizio. Apri il tuo editor di testo e crea un file tomcat.service di unità nella directory /etc/systemd/system/:

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

Incolla il seguente contenuto:

[Unit]
Description=Tomcat 9 servlet container
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

[Install]
WantedBy=multi-user.target

Salvare e chiudere il file premendo CTRL+X, seguito da Y per salvare le modifiche e quindi ENTER se stai utilizzando nano.

Riavviare il servizio systemd, digitando:

sudo systemctl daemon-reload

Abilita e avvia il servizio Tomcat:

sudo systemctl enable --now tomcat

Verifica lo stato del servizio:

sudo systemctl status tomcat

L'output dovrebbe mostrare che il server Tomcat è abilitato e in esecuzione:

● tomcat.service - Tomcat 9 servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-01-18 17:05:05 CET; 3s ago
  Process: 3192 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCC>
 Main PID: 3199 (java)
    Tasks: 15 (limit: 12251)
   Memory: 60.2M
   CGroup: /system.slice/tomcat.service
           └─3199 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat>

Configurare il firewall

Se il server è protetto da un firewall e si desidera accedere all'interfaccia Tomcat dall'esterno della rete locale, è necessario aprire la porta 8080.

Utilizzare i seguenti comandi per aprire la porta necessaria:

sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --reload

In genere, quando si esegue Tomcat in un ambiente di produzione, è necessario utilizzare un bilanciamento del carico o un proxy inverso. È consigliabile concedere l'accesso alla porta 8080 solo alla rete interna.

Configurare l'interfaccia di gestione Web Tomcat

A questo punto, dovresti essere in grado di accedere a Tomcat con un browser Web sulla porta 8080. L'interfaccia di gestione web non è accessibile perché non abbiamo ancora creato un utente.

Utenti e ruoli di Tomcat sono definiti nel file tomcat-users.xml.

Se apri il file, noterai che è pieno di commenti ed esempi che descrivono come configurare il file.

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

Gli utenti Tomcat sono definiti l'utente nel file tomcat-users.xml. Per creare un nuovo utente in grado di accedere all'interfaccia Web di Tomcat (manager-gui e admin-gui), modificare il file come mostrato di seguito. Assicurati di cambiare nome utente e password in qualcosa di più sicuro.

Decommentare e modificare le seguenti righe:

   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>

Quindi:

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

Salva e chiudi il file.

Per impostazione predefinita, l'interfaccia di gestione Web Tomcat è configurata per consentire l'accesso solo dall'host locale.

Se è necessario accedere all'interfaccia Web da qualsiasi luogo, apri il seguente file:

sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>

Commenta o rimuovi la seguente riga:

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

Quindi:

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

Salva e chiudi il file.

Apri il prossimo file:

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

Commenta o rimuovi la seguente riga:

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

Quindi:

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

Salva e chiudi il file.

Non è consigliabile consentire l'accesso da qualsiasi luogo poiché costituisce un rischio per la sicurezza.

Se vuoi accedere all'interfaccia web solo da un IP specifico, invece di commentare i blocchi aggiungi il tuo IP pubblico all'elenco.

Supponiamo che il tuo IP pubblico sia 42.42.42.42 e desideri consentire l'accesso solo da tale IP.

Apri nuovamente i file precedenti:

sudo nano /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|42.42.42.42" />
</Context>

Salva e chiudi il file, apri il successivo:

opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|42.42.42.42" />
</Context>

Salva e chiudi il file.

L'elenco degli indirizzi IP consentiti è un elenco separato da una barra verticale |. È possibile aggiungere singoli indirizzi IP o utilizzare espressioni regolari.

Al termine, riavviare il servizio Tomcat per rendere effettive le modifiche:

sudo systemctl restart tomcat

Test dell'installazione

Apri il tuo browser e digita il tuo indirizzo IP o nome dominio specificando come porta la 8080, quindi: http://TUO_IP_O_DOMINIO:8080

Al termine dell'installazione, dovrebbe apparire una schermata principale di Tomcat.

La dashboard di Tomcat Web Application Manager consente di distribuire, annullare la distribuzione, avviare, fermare e ricaricare le applicazioni disponibile all'indirizzo: http://TUO_IP_O_DOMINIO:8080/manager/html.

La dashboard del gestore host virtuale Tomcat consente di creare, eliminare e gestire host virtuali Tomcat. E 'disponibile all'indirizzo: http://TUO_IP_O_DOMINIO:8080/host-manager/html.

Conclusione

Ti abbiamo mostrato come installare Tomcat 9.0 su CentOS 8 e come accedere all'interfaccia di gestione Tomcat.

Per ulteriori informazioni su Apache Tomcat, visitare la pagina della documentazione ufficiale.