Apache Tomcat è un'implementazione open source delle tecnologie Java Servlet, JavaServer Pages, Java Expression Language e Java WebSocket. È una delle applicazioni e dei server Web più utilizzati al mondo oggi. Tomcat è semplice da usare e dispone di un solido ecosistema di componenti aggiuntivi.
Questo tutorial mostra come installare Tomcat 8.5 su Ubuntu 18.04. Le stesse istruzioni si applicano a Ubuntu 16.04 ea qualsiasi distribuzione basata su Ubuntu, inclusi Linux Mint e OS elementare.
Prerequisiti #
Prima di continuare con questo tutorial, assicurati di aver effettuato l'accesso come utente con privilegi sudo.
Installa OpenJDK #
OpenJDK, l'implementazione open source della piattaforma Java, è lo sviluppo Java predefinito e il runtime in Ubuntu 18.04.
L'installazione di OpenJDKpackage è piuttosto semplice:
sudo apt install default-jdk
Crea utente Tomcat #
Creeremo un nuovo utente e gruppo di sistema con la directory home /opt/tomcat
che eseguirà il servizio Tomcat:
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Scarica Tomcat #
Useremo wget
e unzip
per scaricare ed estrarre l'archivio Tomcat. Se non hai unzip
e wget
installato sul tuo sistema installa i pacchetti con:
sudo apt install unzip wget
Scarica l'ultima versione di Tomcat 8.5.x dalla pagina dei download di Tomcat. Al momento in cui scrivo, l'ultima versione è 8.5.37. Prima di continuare con il passaggio successivo dovresti controllare la pagina di download per una nuova versione.
Passa a /tmp
directory e scarica il file zip con il seguente comando wget:
cd /tmp
wget http://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.zip
Una volta completato il download, decomprimi il file e spostalo in /opt/tomcat
directory:
unzip apache-tomcat-*.zip
sudo mkdir -p /opt/tomcat
sudo mv apache-tomcat-8.5.37 /opt/tomcat/
Per avere un maggiore controllo su versioni e aggiornamenti, creeremo un collegamento simbolicolatest
che punterà alla directory di installazione di Tomcat:
sudo ln -s /opt/tomcat/apache-tomcat-8.5.37 /opt/tomcat/latest
Successivamente, se desideri aggiornare l'installazione di Tomcat, puoi semplicemente decomprimere la versione più recente e modificare il collegamento simbolico in modo che punti all'ultima versione.
L'utente Tomcat che abbiamo configurato in precedenza deve avere accesso alla directory Tomcat, quindi cambieremo la proprietà della directory in utente e gruppo Tomcat:
sudo chown -R tomcat: /opt/tomcat
Crea gli script all'interno di bin
directory eseguibile eseguendo il seguente chmod
comando:
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
Crea un file di unità systemd #
Per eseguire Tomcat come servizio creeremo un nuovo tomcat.service
file unit nel /etc/systemd/system/
directory con i seguenti contenuti:
[Unit]
Description=Tomcat 8.5 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
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
Notifica a systemd che abbiamo creato un nuovo file di unità e avviamo il servizio Tomcat eseguendo:
sudo systemctl daemon-reload
sudo systemctl start tomcat
Puoi controllare lo stato del servizio con il seguente comando:
sudo systemctl status tomcat
● tomcat.service - Tomcat 8.5 servlet container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2018-05-05 11:04:40 UTC; 5s ago
Process: 13478 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 13499 (java)
Tasks: 45 (limit: 507)
CGroup: /system.slice/tomcat.service
└─13499 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.security.
e se non ci sono errori puoi abilitare l'avvio automatico del servizio Tomcat all'avvio:
sudo systemctl enable tomcat
Regola il firewall #
Se il tuo server è protetto da un firewall e vuoi accedere all'interfaccia Tomcat dall'esterno della tua rete locale dovrai aprire la porta 8080
.
Per consentire il traffico sulla porta 8080
digita il seguente comando:
sudo ufw allow 8080/tcp
Quando si esegue un'applicazione Tomcat in un ambiente di produzione, è molto probabile che si disponga di un sistema di bilanciamento del carico o di un proxy inverso, ed è consigliabile limitare l'accesso alla porta 8080 solo alla rete interna. Configura interfaccia di gestione Web Tomcat #
Ora che Tomcat è installato sul nostro server Ubuntu, il passaggio successivo consiste nel creare un utente che avrà accesso all'interfaccia di gestione web.
Gli utenti Tomcat e i loro ruoli sono definiti in tomcat-users.xml
file.
Se apri il file noterai che è pieno di commenti ed esempi che descrivono come configurare il file.
sudo vim /opt/tomcat/latest/conf/tomcat-users.xml
Per aggiungere un nuovo utente che può accedere all'interfaccia web di Tomcat (manager-gui e admin-gui) dobbiamo definire l'utente in tomcat-users.xml
file come mostrato di seguito. Assicurati di cambiare il nome utente e la password con qualcosa di più sicuro:
<tomcat-users>
<!--
Comments
-->
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>
Per impostazione predefinita l'interfaccia di gestione web di Tomcat è configurata per consentire l'accesso solo dall'host locale, se si desidera poter accedere all'interfaccia web da un IP remoto o da qualsiasi luogo, cosa non consigliata perché rischiosa per la sicurezza, è possibile aprire i seguenti file e apportare le seguenti modifiche.
Se devi accedere all'interfaccia web da qualsiasi luogo, apri i seguenti file e commenta o rimuovi le righe evidenziate in giallo:
/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>
/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" />
-->
</Context>
Se devi 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 32.32.32.32
e vuoi consentire l'accesso solo da quell'IP:
<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|32.32.32.32" />
</Context>
/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|32.32.32.32" />
</Context>
L'elenco degli indirizzi IP consentiti è un elenco separato da una barra verticale |
. Puoi aggiungere singoli indirizzi IP o utilizzare espressioni regolari.
Riavvia il servizio Tomcat per rendere effettive le modifiche:
sudo systemctl restart tomcat
Verifica l'installazione #
Apri il browser e digita:http://<your_domain_or_IP_address>:8080
Supponendo che l'installazione abbia esito positivo, apparirà una schermata simile alla seguente:
Il dashboard di Tomcat Web Application Manager è disponibile all'indirizzo http://<your_domain_or_IP_address>:8080/manager/html
. Da qui puoi distribuire, annullare la distribuzione, avviare, interrompere e ricaricare le tue applicazioni.
Il dashboard di Tomcat Virtual Host Manager è disponibile all'indirizzo http://<your_domain_or_IP_address>:8080/host-manager/html
. Da qui puoi creare, eliminare e gestire gli host virtuali Tomcat.