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 aufgrund seiner vielen Vorteile gegenüber anderen Web-Containern auf dem Markt sehr beliebt. 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.
- Geringes Gewicht.
- Weit verbreitet.
- Viel schneller als andere Container.
- Einfach zu konfigurieren.
- 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: Apache Tomcat Server installieren
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 folgt 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.