Kako pokrenuti više web aplikacija na jednom Apache Tomcat poslužitelju


Apache Tomcat je web spremnik otvorenog koda koji vam omogućuje implementaciju Java Servleta, JSP i Web Socketa za pokretanje web poslužitelj koji pokreće Java kod. Također se može identificirati kao međuplatformski servlet spremnik ili web spremnik.

Jednostavno, Tomcat je vrlo popularan među mnogim industrijskim dionicima zbog mnogih prednosti u odnosu na druge web spremnike na tržištu. Možete stvoriti web arhive iz svog Java projekta i jednostavno ga implementirati unutar tomcat spremnika za hosting HTTP web poslužitelja kodiranog Javom. Industrije biraju apache tomcat u odnosu na druge spremnike zbog sljedećih prednosti.

  1. Mala težina.
  2. Široko upotrebljavan.
  3. Puno brže od drugih spremnika.
  4. Jednostavan za konfiguriranje.
  5. Vrlo fleksibilan.

Obično je apache tomcat proizvod prilagođen korisniku koji daje inženjerima prostor za implementaciju svojih WAR artefakata (Web ARchives) uz minimalne promjene konfiguracije.

Ovaj post cilja publiku koja već koristi tomcat i zna kako pokrenuti i koristiti apache tomcat motor.

U apache tomcatu, WAR-ove treba staviti u direktorij webapps koji ih spremnik postavlja prema zadanim postavkama. Jednostavno, direktorij webapps djeluje kao glavni spremnik Java koda za tomcat koji ga postavlja kao web poslužitelj.

U scenariju u kojem trebamo ugostiti više od jednog web poslužitelja iz jednog tomcat spremnika, možete koristiti ovaj post kao vodič za to. Pokazat ću vam kako implementirati više web aplikacija ili dva web poslužitelja unutar jednog tomcata iz ovog članka.

Preduvjeti: Java treba biti instalirana na poslužitelju. Po mogućnosti 1.7.x ili noviji. U ovom vodiču imam instaliranu Javu 1.7 budući da koristim tomcat verziju 8.0.37.

Javu možete instalirati pomoću upravitelja paketa kao što je yum ili apt kao što je prikazano:

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

Korak 1: Instalirajte Apache Tomcat poslužitelj

1. Prvo stvorite zasebnog tomcat korisnika koristeći root račun.

useradd tomcat
passwd tomcat

Sada se prijavite kao tomcat korisnik i preuzmite najnoviji paket apache tomcat sa službene stranice ovdje: https://tomcat.apache.org/ ili alternativno, možete upotrijebiti sljedeću naredbu wget za izravno preuzimanje u terminalu .

U ovom slučaju preuzimam Apache Tomcat, 8.5.5, što je jedna od najnovijih stabilnih verzija izdanih do sada.

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

2. Nakon što je datoteka preuzeta, dekomprimirajte sadržaj pomoću naredbe tar i pogledajte strukturu direktorija kao što je prikazano:

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

Korak 2: Konfigurirajte Apache Tomcat poslužitelj

3. Promjena konfiguracije koju tražimo nalazi se unutar conf direktorija, koristi se za postavljanje svih konfiguracijskih datoteka koje pomažu tomcatu da se pokrene.

Sadržaj direktorija conf izgleda ovako.

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. U ovom slučaju, ono što mi je važno je datoteka server.xml. Stoga neću detaljno objašnjavati druge datoteke ili direktorije.

server.xml je konfiguracijska datoteka koja tomcat-u govori koji priključak treba pokrenuti, koji sadržaj direktorija postaviti i mnoge druge glavne i osnovne konfiguracije.

U osnovi izgleda ovako nakon što otvorite datoteku.

vim server.xml

Korak 3: Implementacija web aplikacija u Apache Tomcat

5. Sada ćemo implementirati novu web aplikaciju u Apache tomcat, prvo pronaći mjesto gdje je servisna oznaka zatvorena i umetnuti donje retke nakon prve zatvorene servisna oznaka.

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

Kao što vidite, promijenio sam priključak konektora u 7070 u novoumetnutom unosu jer zadani tomcat počinje s priključkom 8080. Nakon potpunog postavljanja, bit će pokrenuta dva web poslužitelja na portovima 8080 i 7070.

6. Nakon spremanja promjene u server.xml, stvorite direktorij u apacheu pod nazivom webapps2 unutar apache maina.

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

Ako vidite server.xml novi unos koji sam dao, trebali biste vidjeti da su naziv usluge, baza aplikacije i motor nazvani kao webapps2. To je razlog zašto sam stvorio direktorij pod nazivom webapps2. Možete ga izraditi kako želite, ali svakako unosite izmjene prema potrebi.

7. Kako bih bio siguran da drugi web poslužitelj radi i radi, kopirao sam sadržaj direktorija webapps u direktorij webapps2.

cp -r webapps/* webapps2/

8. Sada uzbudljivi dio. Pokrenut ćemo poslužitelj i vidjeti radi li. Idite u direktorij bin i pokrenite skriptu startup.sh. Zapisnike možete vidjeti u datoteci catalina.out koja se nalazi u direktoriju zapisnika.

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. Ako pogledate zapisnike, moći ćete vidjeti da su i webapps i webapps2 raspoređeni i da je aplikacija pokrenuta bez 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. U ovom scenariju, IP poslužitelja koji sam koristio je 172.16.1.39 i možete vidjeti da sam mogao pokrenuti dva web poslužitelja unutar jednog tomcat spremnika.

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

Nadamo se da će vam ovaj članak svima biti koristan i ugodan. Ostanite u kontaktu s TecMint i slobodno mi se obratite za sva pitanja u vezi s ovim člankom.