Introduzione
Apache Tomcat è un server Web open source e un contenitore servlet Java. È una delle scelte più popolari per la creazione di siti Web e applicazioni basati su Java. Tomcat è leggero, facile da usare e ha un solido ecosistema di componenti aggiuntivi.
Questo tutorial descrive come installare e configurare Tomcat 9 su Ubuntu 20.04 LTS Focal Fossa.
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 root@IP_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 nome_utente@IP_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 nome_utente@IP_DEL_SERVER -p PORTA
Installare Java
Tomcat 9 richiede l'installazione di Java SE 8 o versione successiva sul sistema. Ci installiamo OpenJDK 11, l'implementazione open source della piattaforma Java.
Eseguire i seguenti comandi come utente root o utente con privilegi sudo per aggiornare l'indice dei pacchetti e installare il pacchetto JDK OpenJDK 11:
sudo apt update
sudo apt install openjdk-11-jdk
Una volta completata l'installazione, verificala controllando la versione Java:
java -version
L'output dovrebbe assomigliare a questo:
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
Creare un utente di sistema
L'esecuzione di Tomcat sotto l'utente root è un rischio per la sicurezza. 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
Download di 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.35
. Prima di continuare con il passaggio successivo, controlla la pagina di download di Tomcat 9 per vedere se è disponibile una versione più recente.
Utilizzare wget
per scaricare il file zip Tomcat nella directory /tmp
:
VERSION=9.0.35
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 regolarmente con patch di sicurezza e nuove funzionalità. 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
Successivamente, durante l'aggiornamento di Tomcat, decomprimere la versione più recente e modificare il collegamento simbolico in modo che punti ad esso.
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
Gli script di shell all'interno della directory bin
di Tomcat devono essere eseguibili:
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
Questi script vengono utilizzati per avviare, arrestare e altrimenti gestire l'istanza Tomcat.
Creare un file di unità SystemD
Invece di utilizzare gli script della shell per avviare e arrestare 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 la seguente configurazione:
Modificare la variabile JAVA_HOME
se il percorso dell'installazione Java è diverso.
Salvare e chiudere il file e avvisare systemd che esiste un nuovo file di unità:
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: enabled)
Active: active (running) since Tue 2020-05-26 12:08:33 CEST; 2s ago
Process: 13886 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 13906 (java)
Tasks: 16 (limit: 2286)
Memory: 67.1M
CGroup: /system.slice/tomcat.service
└─13906 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager>
Puoi avviare, arrestare e riavviare Tomcat come qualsiasi altro servizio systemd:
sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat
Configurare il firewall
Se il tuo server è protetto da un firewall e desideri accedere a Tomcat dall'esterno della tua rete locale, devi aprire la porta 8080
.
Utilizzare il comando seguente per aprire la porta necessaria:
sudo ufw allow 8080/tcp
In genere, quando si esegue Tomcat in un ambiente di produzione, è necessario utilizzare un bilanciamento del carico o un proxy inverso. È consigliabile consentire l'accesso alla porta 8080
solo dalla 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.
Gli utenti e i ruoli Tomcat sono definiti nel file tomcat-users.xml
. Questo file è un modello con commenti ed esempi che mostrano come creare un utente o un ruolo.
In questo esempio, creeremo un utente con ruoli "admin-gui" e "manager-gui". Il ruolo di "admin-gui" consente all'utente di accedere all'URL /host-manager/html
e creare, eliminare e altrimenti gestire host virtuali. Il ruolo "manager-gui" consente all'utente di distribuire e annullare la distribuzione dell'applicazione Web senza dover riavviare l'intero contenitore tramite l'interfaccia /host-manager/html
.
Apri il file tomcat-users.xml
e crea un nuovo utente, come mostrato di seguito:
sudo nano /opt/tomcat/latest/conf/tomcat-users.xml
Aggiungi le seguenti righe di codice prima della chiusura del tag </tomcat-users>
:
...
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
...
Quindi il risultato sarà il seguente:
<tomcat-users>
<!--
Comments
-->
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>
Assicurati di cambiare il nome utente e la password in qualcosa di più sicuro.
Per impostazione predefinita, l'interfaccia di gestione Web Tomcat è configurata per consentire l'accesso alle app Manager e Host Manager solo dall'host locale. Per accedere all'interfaccia Web da un IP remoto, è necessario rimuovere queste restrizioni. Ciò può avere diverse implicazioni per la sicurezza e non è raccomandato per i sistemi di produzione.
Per abilitare l'accesso all'interfaccia Web da qualsiasi luogo, aprire i seguenti due file e commentare o rimuovere le linee evidenziate in giallo.
Per l'app Manager:
sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml
Per l'app Host Manager:
sudo nano /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
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 41.41.41.41
e desideri consentire l'accesso solo da tale IP:
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
Prova l'installazione di Tomcat
Apri il tuo browser e digita: http://<your_domain_or_IP_address>:8080
.
Supponendo che l'installazione abbia esito positivo, dovrebbe apparire la dashboard di Tomcat.
Tomcat Web Manager Applicationè disponibile all'indirizzo http://<your_domain_or_IP_address>:8080/manager/html
.
Tomcat Manager Virtual Host è disponibile all'indirizzo http://<your_domain_or_IP_address>:8080/host-manager/html
.
Conclusione
Ti abbiamo mostrato come installare Tomcat 9.0 su Ubuntu 20.04 LTS Focal Fossa e come accedere all'interfaccia di gestione Tomcat.
Per ulteriori informazioni su Apache Tomcat, visitare la pagina della documentazione ufficiale.