Zoeken op website

Hoe u meerdere webapplicaties kunt uitvoeren op één Apache Tomcat-server


Apache Tomcat is een open source webcontainer waarmee u Java Servlets, JSP en Web Sockets kunt implementeren een webserver die wordt aangedreven door Java-code. Het kan ook worden geïdentificeerd als een platformonafhankelijke servletcontainer of een webcontainer.

Simpel gezegd is Tomcat erg populair onder veel industriële belanghebbenden vanwege de vele voordelen ten opzichte van andere webcontainers op de markt. U kunt webarchieven maken van uw Java-project en deze eenvoudig in een tomcat-container implementeren om een door Java gecodeerde HTTP-webserver te hosten. Industrieën kiezen Apache Tomcat boven andere containers vanwege de volgende voordelen.

  1. Lichtgewicht.
  2. Op grote schaal gebruikt.
  3. Veel sneller dan andere containers.
  4. Eenvoudig te configureren.
  5. Zeer flexibel.

Meestal is apache tomcat een gebruiksvriendelijk product dat de technici de ruimte geeft om hun WAR artefacten (Web ARchives) in te zetten met minimale configuratiewijzigingen.

Dit bericht is gericht op een doelgroep die al gebruik maakt van tomcat en weet hoe de apache tomcat-engine moet worden gestart en gebruikt.

In apache tomcat moeten WAR's in de map webapps worden geplaatst, waar de container ze standaard implementeert. De map webapps fungeert eenvoudigweg als de hoofdcontainer van de Java-code zodat tomcat deze als webserver kan inzetten.

In een scenario waarin we meer dan één webserver vanuit één enkele tomcat-container moeten hosten, kun je dit bericht als leidraad gebruiken om dit te bereiken. In dit artikel ga ik je laten zien hoe je meerdere webapplicaties of twee webservers binnen één kater kunt implementeren.

Vereisten: Java moet op de server zijn geïnstalleerd. Bij voorkeur 1.7.x of hoger. In deze tutorial heb ik Java 1.7 geïnstalleerd omdat ik de tomcat-versie 8.0.37 gebruik.

Je kunt Java installeren met behulp van je pakketbeheerder, zoals yum of apt, zoals weergegeven:

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

Stap 1: Installeer Apache Tomcat-server

1. Maak eerst een afzonderlijke tomcat-gebruiker aan met behulp van een root-account.

useradd tomcat
passwd tomcat

Meld u nu aan als tomcat-gebruiker en download de nieuwste apache tomcat-bundel van de officiële site hier: https://tomcat.apache.org/ of u kunt ook de volgende wget-opdracht gebruiken om rechtstreeks in de terminal te downloaden .

In dit geval download ik Apache Tomcat, 8.5.5, een van de nieuwste stabiele versies die inmiddels zijn uitgebracht.

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

2. Zodra het bestand is gedownload, decomprimeert u de inhoud met behulp van de tar-opdracht en bekijkt u de mapstructuur zoals weergegeven:

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

Stap 2: Apache Tomcat-server configureren

3. De configuratiewijziging waar we naar op zoek zijn, ligt in de map conf en wordt gebruikt om alle configuratiebestanden te plaatsen die Tomcat helpen bij het opstarten.

De inhoud van de map conf ziet er als volgt uit.

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. Wat voor mij in dit geval belangrijk is, is het bestand server.xml. Ik ga dus geen diepgaande uitleg geven over andere bestanden of mappen.

De server.xml is het configuratiebestand dat tomcat vertelt op welke poort het moet opstarten, welke mapinhoud moet worden geïmplementeerd en nog veel meer hoofd- en basisconfiguraties.

Het ziet er in principe als volgt uit nadat u het bestand hebt geopend.

vim server.xml

Stap 3: Webapps implementeren in Apache Tomcat

5. Nu gaan we een nieuwe webapplicatie in Apache tomcat implementeren. Zoek eerst de plaats waar de servicetag is gesloten en voeg onderstaande regels in na de eerste gesloten servicelabel.

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

Zoals je ziet, heb ik de connectorpoort gewijzigd in 7070 in de nieuw ingevoegde vermelding, aangezien de standaardkater begint met poort 8080. Nadat u dit volledig heeft ingesteld, zullen er twee webservers draaien onder de poorten 8080 en 7070.

6. Nadat u de wijziging in server.xml hebt opgeslagen, maakt u een map in de apache met de naam webapps2 binnen de apache main.

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

Als je de nieuwe server.xml-invoer ziet die ik heb opgegeven, zou je moeten zien dat de servicenaam, app-basis en de engine de naam webapps2 hebben. Dat is de reden dat ik de map met de naam webapps2 heb gemaakt. U kunt er een maken zoals u dat wilt, maar zorg ervoor dat u de vermelding indien nodig wijzigt.

7. Om er zeker van te zijn dat de tweede webserver actief is, heb ik de inhoud van de map webapps naar de map webapps2 gekopieerd.

cp -r webapps/* webapps2/

8. Nu het spannende gedeelte. We gaan de server starten en kijken of deze werkt. Ga naar de map bin en voer het script startup.sh uit. U kunt de logbestanden bekijken in het bestand catalina.out dat zich in de map logs bevindt.

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. Als u de logbestanden raadpleegt, kunt u zien dat zowel webapps als webapps2 zijn geïmplementeerd en dat de app zonder enig probleem is opgestart .

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 dit scenario is het IP-adres van de server die ik gebruikte 172.16.1.39 en je kunt zien dat ik twee webservers zou kunnen opstarten binnen één enkele tomcat-container.

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

Ik hoop dat jullie dit artikel allemaal nuttig en plezierig vinden. Houd contact met TecMint en neem gerust contact met mij op als u vragen heeft over dit artikel.