In questo articolo, ti mostreremo come installare e configurare Tomcat 10 su Ubuntu e come integrarlo con Apache HTTP Server utilizzando il connettore mod_jk.
Apache Tomcat è un server Web open source e un servlet container utilizzato per distribuire e servire applicazioni Web Java. La maggior parte dei moderni framework Web Java si basa 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 come 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 si occupa di 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
Devi avere Java installato sul tuo sistema per eseguire il server Tomcat. Tomcat 10 richiede Java SE 8 o versione successiva installata sul tuo sistema. Esegui il comando seguente e installa il pacchetto JDK OpenJDK 11:
sudo apt install openjdk-11-jdk
Controlla la versione Java attiva corrente:
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
Esecuzione di un server Tomcat nella root utente è un rischio per la sicurezza. Pertanto, consigliamo di creare un account utente separato per eseguire il server Tomcat.
Il comando seguente 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. Innanzitutto, devi scaricare la versione desiderata dal sito Web ufficiale e quindi 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 in /opt/tomcat
directory:
sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1
Quindi, imposta le autorizzazioni file corrette:
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 tomcat-users.xml
file nel tuo editor:
sudo vim /opt/tomcat/conf/tomcat-users.xml
Incolla il codice seguente all'interno di <tomcat-users>
</tomcat-users>
tag. Assicurati di cambiare PASSWORD
per l'accesso come 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, segui 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 l'app Web 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 tomcat.service
file.
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
Ricarica il demone systemd per applicare le modifiche:
sudo systemctl daemon-reload
Imposta Tomcat per l'avvio automatico all'avvio:
sudo systemctl enable tomcat
5. Installa il server HTTP Apache
Apache è disponibile all'interno dei repository software predefiniti di Ubuntu. Per installarlo, digita 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, unita ad alcuni piccoli passaggi per configurare Apache e Tomcat secondo le nostre esigenze.
6.1 Installare il modulo mod_jk
Installazione e 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 di 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. L'hai fatto modificando il server.xml
di Tomcat file.
sudo vim /opt/tomcat/conf/server.xml
Assicurati che il connettore AJP qui sotto sia attivo e non commentato.
<Connector protocol="AJP/1.3" port="8009" secretRequired="false" redirectPort="8443" />
Abbiamo bisogno di configurare il server HTTP Apache per caricare e inizializzare il modulo JK.
Dobbiamo creare il /etc/apache2/workers.properties
file. 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
Quindi, fai riferimento a questo file nel file di configurazione di Apache principale 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 Configura 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 lo stesso Apache elabori.
sudo vim /etc/apache2/sites-enabled/000-default.conf
Aggiungi la seguente riga sotto DocumentRoot
iscrizione. 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 vai all'URL http://server_ip_address:8080
. Tomcat è stato installato correttamente se vedi una pagina simile a quella dell'immagine qui sotto.
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://server_ip_address/examples/
ed esegui alcune delle applicazioni di esempio.
Congratulazioni! Hai integrato con successo Tomcat con Apache HTTP Server.