Hvordan kjøre flere webapplikasjoner i en Apache Tomcat-server


Apache Tomcat er en åpen kildekode-webbeholder som lar deg distribuere Java Servlets, JSP og Web Sockets for å kjøre en nettserver drevet av Java-kode. Den kan også identifiseres som en servletbeholder på tvers av plattformer eller en nettbeholder.

Ganske enkelt, Tomcat er en veldig populær blant mange industrielle interessenter på grunn av mange fordeler i forhold til andre nettcontainere på markedet. Du kan opprette webarkiver fra Java-prosjektet ditt og ganske enkelt distribuere det i en tomcat-beholder for å være vert for en HTTP-nettserver kodet av Java. Industrier velger apache tomcat fremfor andre containere på grunn av følgende fordeler.

  1. Lett vekt.
  2. Bredt brukt.
  3. Mye raskere enn andre containere.
  4. Enkel å konfigurere.
  5. Veldig fleksibel.

Vanligvis er apache tomcat et brukervennlig produkt som gir ingeniørene plass til å distribuere sine WAR-artefakter (webarkiver) med minimale konfigurasjonsendringer.

Dette innlegget er rettet mot et publikum som allerede bruker tomcat og vet hvordan man starter og bruker apache tomcat-motoren.

I apache tomcat bør WARs legges inn i webapps-katalogen som containeren distribuerer dem som standard. Rett og slett, webapps-katalogen fungerer som hovedbeholderen for Java-koden for tomcat å distribuere den som en webserver.

I et scenario der vi trenger å være vert for mer enn én webserver fra en enkelt tomcat-beholder, kan du bruke dette innlegget som en guide for å oppnå det. Jeg skal vise deg hvordan du distribuerer flere nettapplikasjoner eller to nettservere i en tomcat fra denne artikkelen.

Forutsetninger: Java bør være installert på serveren. Helst 1.7.x eller høyere. I denne opplæringen har jeg Java 1.7 installert siden jeg bruker tomcat versjon 8.0.37.

Du kan installere Java ved å bruke pakkebehandlingen din, for eksempel yum eller apt som vist:

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

Trinn 1: Installer Apache Tomcat Server

1. Opprett først en egen tomcat-bruker ved å bruke en root-konto.

useradd tomcat
passwd tomcat

Logg inn som tomcat-bruker og last ned den nyeste apache tomcat-pakken fra den offisielle siden her: https://tomcat.apache.org/ eller alternativt kan du bruke følgende wget-kommando for å laste ned direkte i terminalen .

I dette tilfellet laster jeg ned Apache Tomcat, 8.5.5, som er en av de siste stabile versjonene som er utgitt nå.

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

2. Når filen er lastet ned, komprimerer du innholdet med tar-kommandoen og viser katalogstrukturen som vist:

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

Trinn 2: Konfigurer Apache Tomcat Server

3. Konfigurasjonsendringen vi ser etter ligger i conf-katalogen, brukes til å plassere alle konfigurasjonsfilene som hjelper tomcat å starte opp.

Innholdet i conf-katalogen ser ut som nedenfor.

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. I dette tilfellet er det viktige for meg filen server.xml. Så jeg kommer ikke til å gjøre en grundig forklaring om andre filer eller kataloger.

server.xml er konfigurasjonsfilen som forteller tomcat hvilken port den skal startes opp, hvilket kataloginnhold som skal distribueres og mange flere hoved- og grunnleggende konfigurasjoner.

Det ser i utgangspunktet ut som nedenfor etter at du har åpnet filen.

vim server.xml

Trinn 3: Distribuer nettapper i Apache Tomcat

5. Nå skal vi distribuere en ny nettapplikasjon i Apache tomcat, først finn stedet der servicekoden er lukket og sett inn under linjene etter den første lukkede servicebrikke.

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

Som du ser, har jeg endret koblingsporten til 7070 i den nylig innsatte oppføringen siden standard tomcat starter med port 8080. Etter å ha konfigurert dette fullstendig vil det være to webservere som kjører under portene 8080 og 7070.

6. Etter å ha lagret endringen som er gjort i server.xml, oppretter du en katalog i apache kalt webapps2 i apache main.

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

Hvis du ser den nye oppføringen server.xml jeg har gitt, bør du se at tjenestenavnet, appbasen og motoren heter webapps2. Det er grunnen til at jeg opprettet katalogen som heter webapps2. Du kan opprette en slik du ønsker, men sørg for at du gjør endringer i oppføringen etter behov.

7. For å være sikker på at den andre webserveren er oppe og kjører, kopierte jeg innholdet i webapps-katalogen til webapps2-katalogen.

cp -r webapps/* webapps2/

8. Nå den spennende delen. Vi skal starte serveren og se om den fungerer. Gå til katalogen bin og utfør skriptet startup.sh. Du kan se loggene i filen catalina.out som ligger i loggkatalogen.

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. Hvis du henviser til loggene, vil du kunne se at både webapps og webapps2 er distribuert og appen startes opp uten problemer .

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. I dette scenariet er IP-en til serveren jeg brukte 172.16.1.39, og du kan se at jeg kunne starte to nettservere innenfor en enkelt tomcat-beholder.

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

Håper dere alle finner denne artikkelen nyttig og morsom. Hold kontakten med TecMint og kontakt meg gjerne for spørsmål angående denne artikkelen.