Kako pokrenuti više web aplikacija na jednom Apache Tomcat serveru


Apache Tomcat je web kontejner otvorenog koda koji vam omogućava da implementirate Java servlete, JSP i Web sockete za pokretanje web server pokretan Java kodom. Također se može identificirati kao višeplatformski servlet kontejner ili web kontejner.

Jednostavno, Tomcat je vrlo popularan među mnogim industrijskim dionicima zbog mnogih prednosti u odnosu na druge web kontejnere na tržištu. Možete kreirati web arhive iz svog Java projekta i jednostavno ih rasporediti u tomcat kontejneru da ugostite HTTP web server kodiran od strane Jave. Industrije biraju apache tomcat u odnosu na druge kontejnere zbog sljedećih prednosti.

  1. Mala težina.
  2. Široko korišteno.
  3. Mnogo brže od ostalih kontejnera.
  4. Jednostavan za konfiguraciju.
  5. Veoma fleksibilan.

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

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

U apache tomcatu, WAR-ove treba staviti u direktorij webapps koji ih kontejner postavlja prema zadanim postavkama. Jednostavno, webapps direktorij djeluje kao glavni kontejner Java koda za tomcat da ga postavi kao web server.

U scenariju u kojem trebamo ugostiti više od jednog web servera iz jednog tomcat kontejnera, možete koristiti ovaj post kao vodič za postizanje toga. Pokazat ću vam kako da implementirate više web aplikacija ili dva web servera unutar jednog tomcata iz ovog članka.

Preduvjeti: Java treba biti instalirana na serveru. Po mogućnosti 1.7.x ili noviji. U ovom vodiču imam instaliranu Javu 1.7 pošto koristim tomcat verziju 8.0.37.

Možete instalirati Javu koristeći svoj upravitelj 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 Server

1. Prvo kreirajte 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 zvanične stranice ovdje: https://tomcat.apache.org/ ili alternativno, možete koristiti sljedeću naredbu wget za preuzimanje direktno u terminalu .

U ovom slučaju preuzimam Apache Tomcat, 8.5.5, koji je jedna od najnovijih stabilnih verzija do sada objavljenih.

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 koristeći komandu 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: Konfigurišite Apache Tomcat server

3. Promjena konfiguracije koju tražimo leži 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. Tako da neću davati detaljna objašnjenja o drugim datotekama ili direktorijumima.

server.xml je konfiguracijska datoteka koja govori tomcatu koji port da ga pokrene, koji sadržaj direktorija da implementira i mnoge druge glavne i osnovne konfiguracije.

U osnovi izgleda ovako nakon što otvorite datoteku.

vim server.xml

Korak 3: Postavljanje web aplikacija u Apache Tomcat

5. Sada ćemo postaviti novu web aplikaciju u Apache tomcat, prvo pronaći mjesto gdje je servisna oznaka zatvorena i umetnuti ispod redova 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 port konektora u 7070 u novoumetnutom unosu jer zadani tomcat počinje s portom 8080. Nakon potpunog podešavanja, dva web servera će raditi pod portovima 8080 i 7070.

6. Nakon što sačuvate promjenu napravljenu u server.xml, kreirajte direktorij u apacheu pod nazivom webapps2 unutar glavnog apachea.

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

Ako uočite novi unos server.xml koji sam dao, trebali biste vidjeti da je naziv usluge, baza aplikacije i motor nazvan webapps2. To je razlog zašto sam kreirao direktorij pod nazivom webapps2. Možete ga kreirati po želji, ali obavezno unosite izmjene prema potrebi.

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

cp -r webapps/* webapps2/

8. Sada uzbudljivi dio. Pokrenućemo server i videti da li radi. Idite u direktorij bin i izvedite skriptu startup.sh. Dnevnike možete vidjeti u datoteci catalina.out koja se nalazi u direktoriju dnevnika.

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 dnevnike, moći ćete vidjeti da su i webapps i webapps2 raspoređene i da se aplikacija pokreće bez ikakvih 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 servera koji sam koristio je 172.16.1.39 i možete vidjeti da bih mogao pokrenuti dva web servera unutar jednog tomcat kontejnera.

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 prijatan. Ostanite u kontaktu sa TecMint i slobodno me kontaktirajte za sva pitanja u vezi sa ovim člankom.