Apache con Tomcat: una guida passo passo all'installazione e alla configurazione
In questo articolo ti mostreremo come installare e configurare Tomcat 10 su Ubuntu e come possiamo integrarlo con Apache HTTP Server utilizzando il connettore mod_jk.
Apache Tomcat è un server Web open source e un contenitore servlet utilizzato per distribuire e servire applicazioni Web Java. La maggior parte dei moderni framework Web Java sono basati su servlet, ad esempio JavaServer Faces, Struts, Spring, ecc.
Apache Tomcat fornisce anche per impostazione predefinita un connettore HTTP sulla porta 8080, ovvero Tomcat può essere utilizzato anche come server HTTP. Ma le prestazioni di Tomcat non sono buone quanto le prestazioni di un server Web designato, come il server HTTP Apache.
Nella maggior parte della produzione, Tomcat viene utilizzato insieme ad Apache HTTP Server. Apache HTTP Server gestisce contenuti statici come HTML, immagini e così via e inoltra le richieste di contenuti dinamici a Tomcat.
Questa guida all'installazione e alla configurazione si applica ad Apache con Tomcat 10 su Ubuntu.
1. Installa Java
Per prima cosa, come sempre, aggiorna i tuoi pacchetti:
sudo apt update
È necessario che Java sia installato sul sistema per eseguire il server Tomcat. Tomcat 10 richiede Java SE 8 o versione successiva installata sul sistema. Esegui il comando seguente e installa il pacchetto JDK OpenJDK 11:
sudo apt install openjdk-11-jdk
Controlla l'attuale versione Java attiva:
java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)
2. Crea utente del sistema Tomcat
L'esecuzione di un server Tomcat con l'utente root rappresenta un rischio per la sicurezza. Pertanto, ti consigliamo di creare un account utente separato per eseguire il server Tomcat.
Il seguente comando creerà un utente e un gruppo con il nome tomcat
sul tuo sistema:
sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat
3. Installa e configura Apache Tomcat 10
Tomcat è uno strumento indipendente dalla piattaforma e, finché è installato Java, l'installazione è un processo semplice. Per prima cosa devi scaricare la versione desiderata dal sito ufficiale e poi decomprimerla sul tuo file system.
Ora scarica l'ultima versione binaria di Tomcat dalla pagina ufficiale dei download di Tomcat.
wget https://apache.mirrors.nublue.co.uk/tomcat/tomcat-10/v10.0.8/bin/apache-tomcat-10.0.8.tar.gz
Una volta completato il download, estrai il file tar nella directory /opt/tomcat
:
sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1
Successivamente, imposta le autorizzazioni corrette per i file:
sudo chown -R tomcat:tomcat /opt/tomcat/
sudo chmod -R u+x /opt/tomcat/bin
È necessario creare un utente per Web Application Manager nel Tomcat Server. È necessario configurare un nuovo account utente per utilizzare Apache Tomcat Web Application Manager.
Per fare ciò, modifica il file tomcat-users.xml
nel tuo editor:
sudo vim /opt/tomcat/conf/tomcat-users.xml
Incolla il seguente codice all'interno dei tag . Assicurati di modificare la PASSWORD per l'accesso amministratore e gestore.
<!-- user manager can access only manager section -->
<role rolename="manager-gui" />
<user username="manager" password="PASSWORD" roles="manager-gui" />
<!-- user admin can access manager and admin section both -->
<role rolename="admin-gui" />
<user username="admin" password="PASSWORD" roles="manager-gui,admin-gui" />
Tomcat fornisce una console di amministrazione basata sul Web. Il server Tomcat predefinito non consente l'accesso remoto per le applicazioni Manager e Host Manager. Tuttavia, puoi accedervi solo da localhost.
Per abilitare le connessioni remote, seguire le istruzioni seguenti.
Crea un file conf/Catalina/localhost/manager.xml
:
sudo vim /opt/tomcat/conf/Catalina/localhost/manager.xml
Aggiungi il seguente contenuto:
<Context privileged="true" antiResourceLocking="false" docBase="{catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
È inoltre necessario creare un file xml per la webapp del gestore host per consentire l'accesso agli host remoti.
sudo vim /opt/tomcat/conf/Catalina/localhost/host-manager.xml
Aggiungi il seguente contenuto:
<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/host-manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
4. Crea un servizio Tomcat Systemd
Dobbiamo creare uno script di avvio per gestire Tomcat come servizio systemd. Creiamo un file tomcat.service
.
sudo vim /etc/systemd/system/tomcat.service
Incolla quanto segue nel file:
[Unit]
Description=Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
Ricaricare il demone systemd per applicare le modifiche:
sudo systemctl daemon-reload
Imposta Tomcat per l'avvio automatico all'avvio:
sudo systemctl enable tomcat
5. Installare il server HTTP Apache
Apache è disponibile nei repository software predefiniti di Ubuntu. Per installarlo, digitare il seguente comando:
sudo apt install apache2
6. Configura Tomcat per funzionare con Apache
Per integrare i processi del server Apache Tomcat con il server HTTP Apache, abbiamo bisogno del modulo mod_jk, che implementa l'interfaccia tra Tomcat e Apache, combinato con alcuni piccoli passaggi per configurare Apache e Tomcat in base alle nostre esigenze.
6.1 Installa il modulo mod_jk
L'installazione e la configurazione di mod_jk è la chiave per far funzionare insieme il server web e il server delle applicazioni. Quindi, installiamolo:
sudo apt install libapache2-mod-jk
6.2 Configurazione mod_jk con Apache e Tomcat.
Dovrai abilitare il connettore AJP in Tomcat in modo che il server Apache possa reindirizzare le richieste a Tomcat. Lo hai fatto modificando il file server.xml
di Tomcat.
sudo vim /opt/tomcat/conf/server.xml
Assicurati che il connettore AJP di seguito sia attivo e non commentato.
<Connector protocol="AJP/1.3" port="8009" secretRequired="false" redirectPort="8443" />
Dobbiamo configurare il server HTTP Apache per caricare e inizializzare il modulo JK.
Dobbiamo creare il file /etc/apache2/workers.properties
. Questo file definisce un elenco di "lavoratori" Tomcat a cui Apache può passare le richieste.
sudo vim /etc/apache2/workers.properties
e incolla quanto segue nel file:
# Define 1 real worker using ajp13
worker.list=worker1
Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
Successivamente, fai riferimento a questo file nel file di configurazione principale di Apache apache2.conf
:
sudo vim /etc/apache2/apache2.conf
Aggiungiamo queste righe alla fine:
JkWorkersFile /etc/apache2/workers.properties
Where to put jk shared memory
JkShmFile /var/log/apache2/mod_jk.shm
Where to put jk logs
JkLogFile /var/log/apache2/mod_jk.log
Set the jk log level [debug/error/info]
JkLogLevel info
Select the timestamp log format
JkLogStampFormat "[ %a %b %d %H:%M:%S %Y ] "
6.3 Configurare quali URL gestire con Apache
A questo punto, dovrai configurare Apache per dirgli quali URL elaborare e trasferire a Tomcat e quali URL desideri che Apache stesso elabori.
sudo vim /etc/apache2/sites-enabled/000-default.conf
Aggiungi la seguente riga sotto la voce DocumentRoot
. Ciò rende possibile richiedere il JRS tramite il server web Apache.
JkMount /examples worker1
JkMount /examples/* worker1
7. Come verificare che funzioni
Riavvia i servizi Apache e Tomcat:
sudo systemctl restart apache2
sudo systemctl restart tomcat
Una volta avviato il server, apri il browser Internet e naviga nell'URL http://indirizzo_ip_server:8080
. Se viene visualizzata una pagina simile a quella mostrata di seguito, Tomcat è stato installato correttamente.
Un modo semplice per verificare che l'integrazione tra Apache HTTP Server e Tomcat funzioni è richiedere uno dei file di esempio che Tomcat dovrebbe fornire.
Punta il tuo browser su http://indirizzo_ip_server/examples/
ed esegui alcune delle applicazioni di esempio.
Congratulazioni! Hai integrato con successo Tomcat con Apache HTTP Server.
Conclusione
Se desideri eseguire applicazioni basate su Java che funzionino in modo fluido e veloce, Apache Tomcat è la scelta migliore.
Questo tutorial ti ha insegnato come installare e configurare il server delle applicazioni Tomcat con il server web Apache. Spero che ora tu abbia informazioni sufficienti per distribuire la tua applicazione basata su Java sul server Tomcat.
Spero che anche tu abbia trovato utile la guida. Per ulteriori informazioni, visita la documentazione ufficiale di Tomcat su Tomcat Doc.
Grazie per aver letto! Il tuo feedback e i tuoi commenti sono i benvenuti.