Introduzione
Apache Tomcat è un "contenitore" web che consente di servire Java Servlets e applicazioni web JSP (Java Server Pages).
Prerequisiti
Prima di iniziare con questa guida, dovresti avere un utente non root con i privilegi sudo impostati sul tuo server. Segui questa guida: Configurazione Iniziale su Ubuntu 18.04 LTS
Installare Java
Tomcat richiede l'installazione di Java sul server. Possiamo installare OpenJDK con apt-get.
Innanzitutto, aggiornare l'indice del pacchetto apt-get:
sudo apt update
Quindi installare il pacchetto Java Development Kit con apt-get:
sudo apt install default-jdk
Ora che Java è installato, possiamo creare un utente tomcat, che verrà utilizzato per eseguire Tomcat.
Creare Utente Tomcat
Per motivi di sicurezza, Tomcat deve essere eseguito come utente non privilegiato (ovvero non root). Creeremo un nuovo utente e gruppo che eseguirà il servizio Tomcat.
Innanzitutto, crea un nuovo gruppo di tomcat:
sudo groupadd tomcat
Creiamo un nuovo utente membro del gruppo tomcat, con una directory home di /opt/tomcat (dove installeremo Tomcat) e con shell /bin/false (in modo che nessuno possa accedere all'account):
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
Ora che il nostro utente tomcat è configurato, scarichiamo e installiamo Tomcat.
Installare Tomcat
Il modo migliore per installare Tomcat 9 è scaricare l'ultima versione binaria e configurarla manualmente.
Trova l'ultima versione di Tomcat 9 nella pagina di download di Tomcat 9. Attualmente l'ultima versione è la 9.0.7. Sotto la sezione Distribuzioni binarie, quindi sotto l'elenco Core, copia il link in tar.gz.
Quindi, passare alla directory /tmp sul proprio server. Questa è una buona directory per scaricare elementi temporanei, come il tarball Tomcat, che non ci servirà dopo aver estratto il contenuto di Tomcat:
cd /tmp
Utilizziamo curl per scaricare Tomcat dal link copiato dal sito Web Tomcat:
Se curl non è installato, dare questo comando da terminale:
sudo apt install curl
Quindi per scaricare Tomcat:
curl -O http://it.apache.contactlab.it/tomcat/tomcat-9/v9.0.7/bin/apache-tomcat-9.0.7.tar.gz
Installeremo Tomcat nella directory /opt/tomcat. Crea la directory ed estrai l'archivio con questi comandi:
sudo mkdir /opt/tomcat
sudo tar xzvf apache-tomcat-9.0.7.tar.gz -C /opt/tomcat --strip-components=1
Successivamente, possiamo impostare le autorizzazioni utente appropriate per la nostra installazione.
Impostare Permessi
L'utente tomcat che abbiamo configurato deve avere accesso all'installazione di Tomcat.
Passiamo alla directory in cui abbiamo decompresso l'installazione di Tomcat:
cd /opt/tomcat
Assegnamo la proprietà del gruppo tomcat all'intera directory di installazione:
sudo chgrp -R tomcat /opt/tomcat
Successivamente, diamo al gruppo di tomcat l'accesso in lettura alla directory conf e a tutti i suoi contenuti, ed eseguiamo l'accesso alla directory stessa:
sudo chmod -R g+r conf
sudo chmod g+x conf
Rendimo l'utente tomcat il proprietario delle directory webapps, work, temp e logs:
sudo chown -R tomcat webapps/ work/ temp/ logs/
Successivamente sarà possibile utilizzare l'utente root per effettuare l'upload di file .war nella cartella webapps di tomact.
Oppure assegnare il proprio utente con privilegi sudo al gruppo tomcat, nel seguente modo:
sudo usermod -a -G tomcat nome_utente
Cambiare i permessi della cartella webapps per effettuare l'upload del file .war con il proprio utente:
sudo chmod 770 /opt/tomcat/webapps
Adesso è possibile caricare i file interessati nella cartella webapps.
In produzione è consigliato ripristinare i permessi della cartella:
sudo chmod 750 /opt/tomcat/webapps
Ora che sono state impostate le autorizzazioni appropriate, possiamo creare un file di servizio systemd per gestire il processo Tomcat.
Servizio Systemd
Vogliamo eseguire Tomcat come servizio, quindi configureremo il file di servizio systemd.
Tomcat deve sapere dove è installato Java. Questo percorso è comunemente denominato JAVA_HOME. Il modo più semplice per cercare il percorso corretto è eseguendo questo comando:
sudo update-java-alternatives -l
Output
java-1.11.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.11.0-openjdk-amd64
La variabile JAVA_HOME corretta può essere impostata prendendo l'output della colonna destra. Dato l'esempio sopra, la JAVA_HOME corretta per questo server sarebbe:
JAVA_HOME
/usr/lib/jvm/java-1.11.0-openjdk-amd64
Il tuo JAVA_HOME potrebbe essere diverso.
Con questa informazione, possiamo creare il file di servizio systemd. Aprire un file chiamato tomcat.service nella directory /etc/systemd/system digitando:
sudo nano /etc/systemd/system/tomcat.service
Incolla il seguente contenuto nel file. Modificare il valore di JAVA_HOME se necessario per far corrispondere il valore trovato sul sistema:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Salviamo e chiudiamo il file.
Ricaricare il daemon systemd:
sudo systemctl daemon-reload
Avviare il servizio Tomcat digitando:
sudo systemctl start tomcat
Controllare che non ci siano errori:
sudo systemctl status tomcat
Firewall per Tomcat
Ora che il servizio Tomcat è avviato, assicuriamoci che la pagina predefinita sia disponibile.
Prima di farlo, dobbiamo modificare le regole del firewall (se attivo). Se hai seguito i prerequisiti, al momento avrai un firewall ufw abilitato.
Tomcat utilizza la porta 8080. Per consentire il traffico su quella porta digitare:
sudo ufw allow 8080
Apri nel browser web
http://TUO_IP:8080
Per avviare Tomcat in automatico all'avvio del server dare questo comando:
sudo systemctl enable tomcat
Vedrai la pagina iniziale predefinita di Tomcat. Se proviamo ad entrare su alcuni collegamenti dell'app di gestione verrà negato l'accesso. Configuriamo nel passaggio successivo i parametri di accesso.
Gestione Tomcat
Per utilizzare l'app web manager fornita con Tomcat, è necessario aggiungere un accesso al nostro server Tomcat. Lo faremo modificando il file tomcat-users.xml:
sudo nano /opt/tomcat/conf/tomcat-users.xml
Dovrai aggiungere un utente che potrà accedere a manager-gui e admin-gui (app Web fornite con Tomcat). È possibile farlo definendo un utente, simile all'esempio seguente. Assicurati di cambiare nome utente e password per qualcosa di sicuro:
<tomcat-users . . .>
<user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>
Salvare e chiudere il file.
Per impostazione predefinita, le versioni più recenti di Tomcat limitano l'accesso alle app Manager e Host Manager alle connessioni provenienti dal server stesso. Poiché stiamo installando su una macchina remota, probabilmente vorrai rimuovere o modificare questa restrizione. Per modificare le restrizioni relative all'indirizzo IP, aprire il file context.xml appropriati.
Per l'app Manager, digitare:
sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
Per l'app Gestione host, digitare:
sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
All'interno del file, commentare la restrizione dell'indirizzo IP per consentire le connessioni da qualsiasi luogo. In alternativa, se si desidera consentire l'accesso solo alle connessioni provenienti dal proprio indirizzo IP, è possibile aggiungere l'indirizzo IP pubblico all'elenco:
<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>
Salvare e chiudere il file.
Per rendere effettive le nostre modifiche, riavviare il servizio Tomcat:
sudo systemctl restart tomcat
Interfaccia Web
Ora che abbiamo creato un utente, possiamo accedere nuovamente all'interfaccia di gestione web. Ancora una volta, è possibile accedere all'interfaccia inserendo il nome dominio o l'indirizzo IP del server seguito dalla porta 8080 nel browser:
Aprire nel browser web:
http://TUO_IP:8080
L'app Manager è accessibile al seguente indirizzo:
http://TUO_IP:8080/manager/html
Dovrai inserire le credenziali dell'account che hai aggiunto precedentemente al file tomcat-users.xml.
Il Web Application Manager viene utilizzato per gestire le tue applicazioni Java.
Il Gestore host è accessibile al seguente indirizzo:
http://TUO_IP:8080/host-manager/html/
L'installazione di Apache Tomcat 9 su Ubuntu 18.04 LTS è terminata.