Cum să rulați mai multe aplicații web într-un singur server Apache Tomcat


Apache Tomcat este un container web open source care vă permite să implementați Servlet-uri Java, JSP și Web Sockets pentru a rula un server web alimentat de cod Java. De asemenea, poate fi identificat ca un container servlet multiplatform sau un container web.

Pur și simplu, Tomcat este foarte popular printre mulți actori industriali datorită numeroaselor avantaje față de alte containere web de pe piață. Puteți crea arhive web din proiectul dvs. Java și pur și simplu le puteți implementa într-un container Tomcat pentru a găzdui un server web HTTP codificat de Java. Industriile aleg apache tomcat în locul altui container datorită următoarelor avantaje.

  1. Greutate ușoară.
  2. Utilizate pe scară largă.
  3. Mult mai rapid decât alte containere.
  4. Ușor de configurat.
  5. Foarte flexibil.

De obicei, apache tomcat este un produs ușor de utilizat, care oferă inginerilor spațiu pentru a-și implementa artefactele WAR (Web ARchives) cu modificări minime de configurare.

Această postare vizează un public care utilizează deja tomcat și care știe cum să pornească și să folosească motorul apache tomcat.

În apache tomcat, WAR-urile ar trebui să fie introduse în directorul webapps în care containerul le implementează în mod implicit. Pur și simplu, directorul webapps acționează ca container principal al codului Java pentru ca tomcat să-l implementeze ca server web.

Într-un scenariu în care trebuie să găzduim mai mult de un server web dintr-un singur container Tomcat, puteți folosi această postare ca ghid pentru a realiza acest lucru. Vă voi arăta cum să implementați mai multe aplicații web sau două servere web într-un singur tomcat din acest articol.

Condiții preliminare: Java ar trebui să fie instalat pe server. De preferință 1.7.x sau mai sus. În acest tutorial am instalat Java 1.7, deoarece folosesc versiunea tomcat 8.0.37.

Puteți instala Java folosind managerul de pachete, cum ar fi yum sau apt, după cum se arată:

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

Pasul 1: Instalați serverul Apache Tomcat

1. Mai întâi creați un utilizator tomcat separat folosind contul root.

useradd tomcat
passwd tomcat

Acum conectați-vă ca utilizator tomcat și descărcați cel mai recent pachet apache tomcat de pe site-ul oficial aici: https://tomcat.apache.org/ sau, alternativ, puteți utiliza următoarea comandă wget pentru a descărca direct în terminal .

În acest caz, descarc Apache Tomcat, 8.5.5, care este una dintre cele mai recente versiuni stabile lansate până acum.

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

2. Odată ce fișierul a fost descărcat, decomprimați conținutul folosind comanda tar și vizualizați structura directorului așa cum se arată:

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

Pasul 2: Configurați serverul Apache Tomcat

3. Modificarea de configurare pe care o căutăm se află în directorul conf, este folosită pentru a plasa toate fișierele de configurare care ajută tomcat să pornească.

Conținutul directorului conf arată ca mai jos.

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. În acest caz, ceea ce este important pentru mine este fișierul server.xml. Deci nu voi face o explicație aprofundată despre alte fișiere sau directoare.

server.xml este fișierul de configurare care îi spune lui tomcat care port să îl pornească, ce conținut director să implementeze și multe alte configurații principale și de bază.

Practic arată ca mai jos după ce deschideți fișierul.

vim server.xml

Pasul 3: Implementarea aplicațiilor web în Apache Tomcat

5. Acum vom implementa o nouă aplicație web în Apache tomcat, mai întâi găsim locul unde eticheta de serviciu este închisă și introducem rândurile de mai jos după prima închisă. eticheta de serviciu.

<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>

După cum vedeți, am schimbat portul conectorului la 7070 în noua intrare introdusă, deoarece tomcat-ul implicit începe cu portul 8080. După configurarea completă, vor exista două servere web care rulează sub porturile 8080 și 7070.

6. După salvarea modificării făcute în server.xml, creați un director în apache numit webapps2 în apache principal.

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

Dacă observați noua intrare server.xml pe care am furnizat-o, ar trebui să vedeți că numele serviciului, baza aplicației și motorul sunt denumite ca webapps2. Acesta este motivul pentru care am creat directorul numit webapps2. Puteți crea unul după cum doriți, dar asigurați-vă că faceți modificări la intrare după cum este necesar.

7. Pentru a mă asigura că al doilea server web funcționează, am copiat conținutul directorului webapps în directorul webapps2.

cp -r webapps/* webapps2/

8. Acum partea interesantă. Vom porni serverul și vom vedea dacă funcționează. Accesați directorul bin și executați scriptul startup.sh. Puteți vizualiza jurnalele în fișierul catalina.out care se află în directorul jurnalelor.

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. Dacă consultați jurnalele, veți putea vedea că atât webapps cât și webapps2 sunt implementate și că aplicația este pornită fără nicio problemă .

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. În acest scenariu, IP-ul serverului pe care l-am folosit este 172.16.1.39 și puteți vedea că aș putea porni două servere web într-un singur container Tomcat.

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

Sper că veți găsi acest articol util și plăcut. Păstrați legătura cu TecMint și nu ezitați să mă contactați pentru orice întrebări referitoare la acest articol.