Website-Suche

So führen Sie mehrere Webanwendungen auf einem Apache Tomcat-Server aus


Apache Tomcat ist ein Open-Source-Webcontainer, mit dem Sie Java-Servlets, JSP und Web Sockets zur Ausführung bereitstellen können ein Webserver, der auf Java-Code basiert. Es kann auch als plattformübergreifender Servlet-Container oder Web-Container identifiziert werden.

Kurz gesagt, Tomcat ist bei vielen Industrieteilnehmern sehr beliebt, da es viele Vorteile gegenüber anderen Web-Containern auf dem Markt bietet. Sie können Webarchive aus Ihrem Java-Projekt erstellen und diese einfach in einem Tomcat-Container bereitstellen, um einen von Java codierten HTTP-Webserver zu hosten. Branchen entscheiden sich aufgrund der folgenden Vorteile für Apache Tomcat gegenüber anderen Containern.

  1. Leicht.
  2. Weit verbreitet.
  3. Viel schneller als andere Container.
  4. Einfach zu konfigurieren.
  5. Sehr flexibel.

Normalerweise ist Apache Tomcat ein benutzerfreundliches Produkt, das den Ingenieuren Raum bietet, ihre WAR-Artefakte (Web-Archive) mit minimalen Konfigurationsänderungen bereitzustellen.

Dieser Beitrag richtet sich an eine Zielgruppe, die Tomcat bereits verwendet und weiß, wie man die Apache Tomcat Engine startet und verwendet.

In Apache Tomcat sollten WARs im Verzeichnis webapps abgelegt werden, in dem der Container sie standardmäßig bereitstellt. Das Verzeichnis webapps fungiert einfach als Hauptcontainer des Java-Codes für Tomcat, um ihn als Webserver bereitzustellen.

In einem Szenario, in dem wir mehr als einen Webserver von einem einzigen Tomcat-Container aus hosten müssen, können Sie diesen Beitrag als Leitfaden für die Umsetzung verwenden. In diesem Artikel zeige ich Ihnen, wie Sie mehrere Webanwendungen oder zwei Webserver innerhalb eines Tomcat bereitstellen.

Voraussetzungen: Java sollte auf dem Server installiert sein. Vorzugsweise 1.7.x oder höher. In diesem Tutorial habe ich Java 1.7 installiert, da ich die Tomcat-Version 8.0.37 verwende.

Sie können Java mit Ihrem Paketmanager wie yum oder apt installieren, wie gezeigt:

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

Schritt 1: Installieren Sie Apache Tomcat Server

1. Erstellen Sie zunächst einen separaten tomcat-Benutzer mit dem root-Konto.

useradd tomcat
passwd tomcat

Melden Sie sich jetzt als tomcat-Benutzer an und laden Sie das neueste Apache-Tomcat-Bundle von der offiziellen Website hier herunter: https://tomcat.apache.org/. Alternativ können Sie den folgenden wget-Befehl verwenden, um ihn direkt im Terminal herunterzuladen .

In diesem Fall lade ich Apache Tomcat, 8.5.5, herunter, eine der neuesten stabilen Versionen, die bisher veröffentlicht wurden.

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

2. Sobald die Datei heruntergeladen wurde, dekomprimieren Sie den Inhalt mit dem Befehl tar und sehen Sie sich die Verzeichnisstruktur wie gezeigt an:

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

Schritt 2: Apache Tomcat Server konfigurieren

3. Die gesuchte Konfigurationsänderung befindet sich im Verzeichnis conf und wird zum Platzieren aller Konfigurationsdateien verwendet, die den Start von Tomcat unterstützen.

Der Inhalt des Verzeichnisses conf sieht wie folgt aus.

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. In diesem Fall ist mir die Datei server.xml wichtig. Daher werde ich keine ausführliche Erklärung zu anderen Dateien oder Verzeichnissen abgeben.

Die server.xml ist die Konfigurationsdatei, die tomcat mitteilt, welcher Port gestartet werden soll, welcher Verzeichnisinhalt bereitgestellt werden soll und viele weitere Haupt- und Grundkonfigurationen.

Nachdem Sie die Datei geöffnet haben, sieht es im Grunde wie folgt aus.

vim server.xml

Schritt 3: Bereitstellen von Web-Apps in Apache Tomcat

5. Jetzt stellen wir eine neue Webanwendung in Apache Tomcat bereit. Suchen Sie zunächst die Stelle, an der das Service-Tag geschlossen ist und fügen Sie die folgenden Zeilen nach dem ersten geschlossenen Tag ein Service-Tag.

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

Wie Sie sehen, habe ich im neu eingefügten Eintrag den Connector-Port auf 7070 geändert, da der Standard-Tomcat mit Port 8080 beginnt. Nach der vollständigen Einrichtung laufen zwei Webserver unter den Ports 8080 und 7070.

6. Nachdem Sie die an server.xml vorgenommenen Änderungen gespeichert haben, erstellen Sie im Apache-Hauptverzeichnis ein Verzeichnis mit dem Namen webapps2.

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

Wenn Sie den neuen Eintrag server.xml sehen, den ich bereitgestellt habe, sollten Sie sehen, dass der Dienstname, die App-Basis und die Engine den Namen webapps2 haben. Aus diesem Grund habe ich das Verzeichnis mit dem Namen webapps2 erstellt. Sie können einen Eintrag nach Ihren Wünschen erstellen, aber stellen Sie sicher, dass Sie bei Bedarf Änderungen am Eintrag vornehmen.

7. Um sicherzustellen, dass der zweite Webserver läuft, habe ich den Inhalt des Verzeichnisses webapps in das Verzeichnis webapps2 kopiert.

cp -r webapps/* webapps2/

8. Nun der spannende Teil. Wir werden den Server starten und prüfen, ob er funktioniert. Gehen Sie in das Verzeichnis bin und führen Sie das Skript startup.sh aus. Sie können die Protokolle in der Datei catalina.out anzeigen, die sich im Protokollverzeichnis befindet.

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. Wenn Sie sich die Protokolle ansehen, können Sie sehen, dass sowohl webapps als auch webapps2 bereitgestellt werden und die App ohne Probleme gestartet wird .

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 diesem Szenario lautet die IP des von mir verwendeten Servers 172.16.1.39 und Sie sehen, dass ich zwei Webserver in einem einzigen Tomcat-Container starten könnte.

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

Ich hoffe, dass Sie alle diesen Artikel nützlich und unterhaltsam finden. Bleiben Sie mit TecMint in Kontakt und kontaktieren Sie mich jederzeit, wenn Sie Fragen zu diesem Artikel haben.