Ricerca nel sito web

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.

Articoli correlati: