Ricerca nel sito web

Come eseguire più applicazioni Web in un server Apache Tomcat


Apache Tomcat è un contenitore web open source che ti consente di implementare Java Servlet, JSP e Web Sockets per eseguire un server web basato sul codice Java. Può anche essere identificato come un contenitore servlet multipiattaforma o un contenitore web.

Semplicemente, Tomcat è molto popolare tra molti stakeholder industriali grazie ai numerosi vantaggi rispetto ad altri contenitori web sul mercato. Puoi creare archivi Web dal tuo progetto Java e distribuirlo semplicemente all'interno di un contenitore Tomcat per ospitare un server Web HTTP codificato da Java. Le industrie scelgono Apache Tomcat rispetto ad altri contenitori per i seguenti vantaggi.

  1. Leggero.
  2. Ampiamente usato.
  3. Molto più veloce di altri contenitori.
  4. Facile da configurare.
  5. Molto flessibile.

Di solito, Apache Tomcat è un prodotto facile da usare che offre agli ingegneri lo spazio per distribuire i propri artefatti WAR (Archivi Web) con modifiche minime alla configurazione.

Questo post si rivolge a un pubblico che sta già utilizzando Tomcat e sa come avviare e utilizzare il motore Apache Tomcat.

In Apache Tomcat, i WAR dovrebbero essere inseriti nella directory webapps in cui il contenitore li distribuisce per impostazione predefinita. Semplicemente, la directory webapps funge da contenitore principale del codice Java affinché Tomcat lo distribuisca come server web.

In uno scenario in cui dobbiamo ospitare più di un server Web da un singolo contenitore Tomcat, puoi utilizzare questo post come guida per realizzarlo. Ti mostrerò come distribuire più applicazioni Web o due server Web all'interno di un Tomcat da questo articolo.

Prerequisiti: Java deve essere installato nel server. Preferibilmente 1.7.x o versione successiva. In questo tutorial ho installato Java 1.7 poiché utilizzo la versione 8.0.37 di Tomcat.

Puoi installare Java utilizzando il tuo gestore di pacchetti come yum o apt come mostrato:

yum install java              [On CentOS based Systems]
apt-get install default-jre   [On Debian based Systems]

Passaggio 1: installare il server Apache Tomcat

1. Crea innanzitutto un utente tomcat separato utilizzando l'account root.

useradd tomcat
passwd tomcat

Ora accedi come utente tomcat e scarica l'ultimo pacchetto apache tomcat dal sito ufficiale qui: https://tomcat.apache.org/ o in alternativa, puoi utilizzare il seguente comando wget per scaricarlo direttamente nel terminale .

In questo caso, scarico Apache Tomcat, 8.5.5, che è una delle ultime versioni stabili rilasciate finora.

wget http://redrockdigimark.com/apachemirror/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz

2. Una volta scaricato il file, decomprimere il contenuto utilizzando il comando tar e visualizzare la struttura della directory come mostrato:

tar -xvf apache-tomcat-8.5.5.tar.gz
cd apache-tomcat-8.5.5/
ls -l
total 112
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 bin
drwx------. 2 tomcat tomcat  4096 Sep  1 01:23 conf
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 lib
-rw-r-----. 1 tomcat tomcat 57092 Sep  1 01:23 LICENSE
drwxr-x---. 2 tomcat tomcat  4096 Sep  1 01:21 logs
-rw-r-----. 1 tomcat tomcat  1723 Sep  1 01:23 NOTICE
-rw-r-----. 1 tomcat tomcat  7063 Sep  1 01:23 RELEASE-NOTES
-rw-r-----. 1 tomcat tomcat 15946 Sep  1 01:23 RUNNING.txt
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 temp
drwxr-x---. 7 tomcat tomcat  4096 Sep  1 01:22 webapps
drwxr-x---. 2 tomcat tomcat  4096 Sep  1 01:21 work

Passaggio 2: configurare il server Apache Tomcat

3. La modifica alla configurazione che stiamo cercando si trova nella directory conf e viene utilizzata per posizionare tutti i file di configurazione che aiutano Tomcat ad avviarsi.

Il contenuto della directory conf è simile al seguente.

cd conf/
ls -l
total 224
-rw-------. 1 tomcat tomcat  12502 Sep  1 01:23 catalina.policy
-rw-------. 1 tomcat tomcat   7203 Sep  1 01:23 catalina.properties
-rw-------. 1 tomcat tomcat   1338 Sep  1 01:23 context.xml
-rw-------. 1 tomcat tomcat   1149 Sep  1 01:23 jaspic-providers.xml
-rw-------. 1 tomcat tomcat   2358 Sep  1 01:23 jaspic-providers.xsd
-rw-------. 1 tomcat tomcat   3622 Sep  1 01:23 logging.properties
-rw-------. 1 tomcat tomcat   7283 Sep  1 01:23 server.xml
-rw-------. 1 tomcat tomcat   2164 Sep  1 01:23 tomcat-users.xml
-rw-------. 1 tomcat tomcat   2633 Sep  1 01:23 tomcat-users.xsd
-rw-------. 1 tomcat tomcat 168133 Sep  1 01:23 web.xml

4. In questo caso, ciò che è importante per me è il file server.xml. Quindi non farò una spiegazione approfondita su altri file o directory.

Il server.xml è il file di configurazione che dice a tomcat quale porta avviarlo, quale contenuto della directory distribuire e molte altre configurazioni principali e di base.

Fondamentalmente appare come sotto dopo aver aperto il file.

vim server.xml

Passaggio 3: distribuzione di app Web in Apache Tomcat

5. Ora implementeremo una nuova applicazione web in Apache Tomcat, prima troviamo il punto in cui è chiuso il tag di servizio e inseriamo le righe sottostanti dopo la prima chiusa etichetta di servizio.

<Service name="webapps2">
    <Connector port="7070" maxHttpHeaderSize="7192"
        maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
        enableLookups="false" redirectPort="7443" acceptCount="100"
        connectionTimeout="20000" disableUploadTimeout="true" />
        <Connector port="7072" 
        enableLookups="false" redirectPort="7043" protocol="AJP/1.3" />

    <Engine name="webapps2" defaultHost="localhost">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase"/>
            <Host name="localhost" appBase="webapps2"
                unpackWARs="true" autoDeploy="true"
                 xmlValidation="false" xmlNamespaceAware="false">
            </Host>
    </Engine>
</Service>

Come vedi, ho cambiato la porta del connettore in 7070 nella voce appena inserita poiché il Tomcat predefinito inizia con la porta 8080. Dopo averlo configurato completamente, ci saranno due server web in esecuzione sotto le porte 8080 e 7070.

6. Dopo aver salvato la modifica apportata a server.xml, crea una directory in apache chiamata webapps2 all'interno di apache main.

cd /home/tomcat/apache-tomcat-8.5.5/
mkdir webapps2

Se osservi la nuova voce server.xml che ho fornito, dovresti vedere che il nome del servizio, la base dell'app e il motore sono denominati webapps2. Questo è il motivo per cui ho creato la directory denominata webapps2. Puoi crearne uno come desideri, ma assicurati di apportare le modifiche alla voce quando necessario.

7. Per assicurarmi che il secondo server web sia attivo e funzionante, ho copiato il contenuto della directory webapps nella directory webapps2.

cp -r webapps/* webapps2/

8. Ora arriva la parte emozionante. Avviamo il server e vediamo se funziona. Vai alla directory bin ed esegui lo script startup.sh. Puoi visualizzare i log nel file catalina.out che risiede nella directory logs.

cd bin/
./startup.sh
Using CATALINA_BASE:   /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_HOME:   /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_TMPDIR: /home/tomcat/apache-tomcat-8.5.5/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/tomcat/apache-tomcat-8.5.5/bin/bootstrap.jar:/home/tomcat/apache-tomcat-8.5.5/bin/tomcat-juli.jar
Tomcat started.

9. Se fai riferimento ai log sarai in grado di vedere che sia webapps che webapps2 sono distribuiti e l'app viene avviata senza alcun problema .

cd logs/
tail -25f catalina.out 
29-Sep-2016 12:13:51.210 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples
29-Sep-2016 12:13:51.661 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples has finished in 452 ms
29-Sep-2016 12:13:51.664 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs
29-Sep-2016 12:13:51.703 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs has finished in 39 ms
29-Sep-2016 12:13:51.704 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager
29-Sep-2016 12:13:51.744 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager has finished in 39 ms
29-Sep-2016 12:13:51.748 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
29-Sep-2016 12:13:51.767 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service webapps2
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.5
29-Sep-2016 12:13:51.777 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager has finished in 102 ms
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT
29-Sep-2016 12:13:51.915 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT has finished in 35 ms
29-Sep-2016 12:13:51.927 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples
29-Sep-2016 12:13:52.323 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
29-Sep-2016 12:13:52.337 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples has finished in 414 ms
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs has finished in 29 ms
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager
29-Sep-2016 12:13:52.417 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager has finished in 46 ms
...

10. In questo scenario, l'IP del server che ho utilizzato è 172.16.1.39 e puoi vedere che potrei avviare due server Web all'interno di un singolo contenitore Tomcat.

http://172.16.1.39:8080   [1st Web App]
http://172.16.1.39:7070   [2nd Web App]

Spero che tutti voi troviate questo articolo utile e divertente. Resta in contatto con TecMint e non esitare a contattarmi per qualsiasi domanda riguardante questo articolo.