Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:apache_tomcat_9_server_archlinux

Apache Tomcat 9 Server Archlinux

Die Apache Tomcat-Software ist eine Open-Source-Implementierung der Spezifikationen Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations und Jakarta Authentication. Diese Spezifikationen sind Teil der Jakarta EE-Plattform und erlaubt es damit, in Java geschriebene Web-Anwendungen auf Servlet- beziehungsweise JSP-Basis auszuführen.

:!: Hinweis - Die nachfolgenden Ausführungen erheben keinen Anspruch auf Vollständigkeit, sondern stellt eine „Basiskonfiguration“ eines Apache Tomcat als Applikation-Server dar!!!

:!: ACHTUNG - Im Gegensatz zur Information auf der Apache Tomcat-Homepage im Bereich Which version? ist hier zwingend eine JAVA-Version jre11-openjdk mindestens erforderlich!

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

Überblick

Nachfolgende Pakete können neben dem Hauptpaket des Apache Tomcat-Software zusätzlich installiert werden, je nach Bedarf und Umgebung, in der sich der Apache Tomcat befindet und laufen soll:

  • tomcat9 - Apache Tomcat-Software (ROOT, docs, examples, host-manager, manager)
    - ist im extra-Repository von ArchLinux enthalten.

Zusätzlich sollten für den Betrieb des Apache Tomcat-Servers, nachfolgendes Paket installiert werden:

Vorbereitung

Zur Installation von Apache Tomcat-Software als pacman-Paket, ist nachfolgendes Paket mindestens erforderlich (welches bei der Installation von tomcat9, falls nicht bereits vorhanden, mit installiert wird):

  • Abhängigkeit von OpenJDK (Runntime Environment) und müsste nicht explizit installiert werden
    • jre11-openjdk - ist im extra-Repository von ArchLinux enthalten.

:!: ACHTUNG - Für eine explizite Version z.B. jre11-openjdk muss diese zuvor jedoch installiert werden!

Voraussetzungen

Nachfolgende Voraussetzungen müssen vor der Installation von Apache Tomcat-Software erfüllt sein, damit Apache Tomcat-Software betrieben werden kann:

  • Installiertes JAVA z.B. OpenJDK (Runntime Environment) ab der Version 11

Installation

tomcat9

Zur Installation des Apache Tomcat-Software wird nachfolgendes Paket benötigt:

  • tomcat9 - ist im extra-Repository von ArchLinux enthalten

installiert werden.

Mit nachfolgendem Befehl, wird das Pakete jre9-openjdk und tomcat9 installiert:

# pacman --noconfirm -S jre11-openjdk tomcat9

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket tomcat9 installiert wurden.

# pacman -Qil tomcat9

Installierte Dateien

tomcat-native

Zur Installation des Apache Tomcat-Software soll nachfolgendes Paket:

  • tomcat-native - ist im extra-Repository von ArchLinux enthalten.

zusätzlich installiert werden.

Mit nachfolgendem Befehl, wird das Pakete tomcat-native installiert:

# pacman --noconfirm -S tomcat-native

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket tomcat-native installiert wurden.

# pacman -Qil tomcat-native

Installierte Dateien

Dienst/Deamon-Start einrichten

Um den Apache Tomcat-Software, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:

# systemctl enable tomcat9.service
Created symlink /etc/systemd/system/multi-user.target.wants/tomcat9.service → /usr/lib/systemd/system/tomcat9.service.

Eine Überprüfung, ob beim Neustart des Server der tomcat9-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:

# systemctl list-unit-files --type=service | grep -e tomcat9.service
tomcat9.service                            enabled         disabled

bzw.

# systemctl is-enabled tomcat9.service
enabled

Java Version

Nachfolgend kann mit folgendem Befehl überprüft werden, welche Java-Version die aktuell bevorzugte im Archlinux-Betriebssystem ist.

Da mehrere Versionen von Java installiert sein könnten, sollte dies auf jeden Fall überprüft werden:

# archlinux-java status
Available Java environments:
  java-11-openjdk (default)
  java-8-openjdk/jre

:!: HINWEIS - Die Zeile, falls mehrere vorhanden sein sollten, mit der Ausgabe (default) ist die entscheidende:

...
  java-11-openjdk (default)
...

Falls dies nicht wie oben dargestellt sein sollte, oder eine andere ebenfalls installierte Version von Java zum Einsatz kommen soll, kann mit nachfolgendem Befehl die Java-Version ausgewählt werden:

# archlinux-java set java-11-openjdk

:!: HINWEIS - Es erfolgt bei erfolgreicher Befehlsausführung keine Ausgabe!

Konfiguration

/etc/systemd/system/tomcat9.service.d/override.conf

Nachfolgend sollen einige Änderungen bzw. Ergänzungen an dieser Konfigurationsdatei durchgeführt werden, welchen ein Kommentar, wie nachfolgend dargestellt, voransteht:

# Tachtler

Die Änderungen an der Konfigurationsdatei tomcat9.service können mit nachfolgendem Befehl bequem editiert werden:

# systemctl edit tomcat9.service
### Editing /etc/systemd/system/tomcat9.service.d/override.conf
### Anything between here and the comment below will become the contents of the drop-in file
 
[Service]
Environment=CATALINA_OPTS="-server -Xms128m -Xmx1024m"                                                                
 
### Edits below this comment will be discarded
 
 
### /usr/lib/systemd/system/tomcat9.service
# [Unit]
# Description=Tomcat 9 servlet container
# After=network.target
# 
# [Service]
# Type=forking
# PIDFile=/var/run/tomcat9.pid
# Environment=CATALINA_PID=/var/run/tomcat9.pid
# Environment=TOMCAT_JAVA_HOME=/usr/lib/jvm/default-runtime
# Environment=CATALINA_HOME=/usr/share/tomcat9
# Environment=CATALINA_BASE=/usr/share/tomcat9
# Environment=CATALINA_OPTS=
# Environment=ERRFILE=SYSLOG
# Environment=OUTFILE=SYSLOG
# 
# ExecStart=/usr/bin/jsvc \
#             -Dcatalina.home=${CATALINA_HOME} \
#             -Dcatalina.base=${CATALINA_BASE} \
#             -Djava.io.tmpdir=/var/tmp/tomcat9/temp \
#             -cp /usr/share/java/commons-daemon.jar:/usr/share/java/eclipse-ecj.jar:${CATALINA_HOME}/bin/bootstrap.  jar:${CATALINA_HOME}/bin/tomcat-juli.jar \
#             -user tomcat9 \
#             -java-home ${TOMCAT_JAVA_HOME} \
#             -pidfile /var/run/tomcat9.pid \
#             -errfile ${ERRFILE} \
#             -outfile ${OUTFILE} \
#             $CATALINA_OPTS \
#             org.apache.catalina.startup.Bootstrap
# 
# ExecStop=/usr/bin/jsvc \
#             -pidfile /var/run/tomcat9.pid \
#             -stop \
#             org.apache.catalina.startup.Bootstrap
# 
# [Install]
# WantedBy=multi-user.target

Hier die komplette Konfigurationsdatei

  • /etc/systemd/system/tomcat9.service.d/override.conf

mit allen Änderungen bzw. Ergänzungen, welche ebenfalls nachfolgend erklärt werden:

# cat /etc/systemd/system/tomcat9.service.d/override.conf
[Service]
Environment=CATALINA_OPTS="-server -Xms128m -Xmx1024m"

Anschliessend können mit nachfolgendem Befehl die Änderungen übernommen werden:

# systemctl daemon-reload

/etc/tomcat9/server.xml

Die Konfigurationsdatei

  • /etc/tomcat9/server.xml

ist die Haupt-Konfigurationsdatei des Apache Tomcat-Applikation-Servers.

Nachfolgend sollen einige Änderungen bzw. Ergänzungen an dieser Konfigurationsdatei durchgeführt werden, welchen ein Kommentar, wie nachfolgend dargestellt, voransteht:

<!-- Tachtler -->

Hier die komplette Konfigurationsdatei

  • /etc/tomcat9/server.xml

mit allen Änderungen bzw. Ergänzungen, welche ebenfalls nachfolgend erklärt werden:

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
 
      http://www.apache.org/licenses/LICENSE-2.0
 
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- Note:  A "Server" is not itself a "Container", so you may not
     define subcomponents such as "Valves" at this level.
     Documentation at /docs/config/server.html
 -->
<!-- Tachtler --> 
<!-- <Server port="8005" shutdown="SHUTDOWN"> -->
<Server port="8089" shutdown="DOWN2CAT">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!-- APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 
  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
 
  <!-- A "Service" is a collection of one or more "Connectors" that share
       a single "Container" Note:  A "Service" is not itself a "Container",
       so you may not define subcomponents such as "Valves" at this level.
       Documentation at /docs/config/service.html
   -->
  <Service name="Catalina">
 
    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
    <!--
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->
 
 
    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
    -->
    <!-- Tachtler -->
    <!-- default: <Connector port="8080" protocol="HTTP/1.1" -->
    <!-- default:           connectionTimeout="20000" -->
    <!-- default:           redirectPort="8443" -->
    <!-- default:           maxParameterCount="1000" -->
    <!-- default:           /> -->
    <Connector port="8088" protocol="HTTP/1.1"
               address="127.0.0.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
               />
    <Connector port="8088" protocol="HTTP/1.1"
               address="::1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
               />
    <!-- A "Connector" using the shared thread pool-->
    <!--
    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
               />
    -->
    <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443
         This connector uses the NIO implementation. The default
         SSLImplementation will depend on the presence of the APR/native
         library and the useOpenSSL attribute of the AprLifecycleListener.
         Either JSSE or OpenSSL style configuration may be used regardless of
         the SSLImplementation selected. JSSE style configuration is used below.
    -->
    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true"
               maxParameterCount="1000"
               >
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    -->
    <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
         This connector uses the APR/native implementation which always uses
         OpenSSL for TLS.
         Either JSSE or OpenSSL style configuration may be used. OpenSSL style
         configuration is used below.
    -->
    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true"
               maxParameterCount="1000"
               >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                         certificateFile="conf/localhost-rsa-cert.pem"
                         certificateChainFile="conf/localhost-rsa-chain.pem"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    -->
 
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <!-- Tachtler -->
    <!-- default: -->
    <!-- default: <Connector protocol="AJP/1.3" -->
    <!-- default:           address="::1" -->
    <!-- default:           port="8009" -->
    <!-- default:           redirectPort="8443" -->
    <!-- default:           maxParameterCount="1000" -->
    <!--           /> -->
    <!-- default: -->
    <Connector protocol="AJP/1.3"
               address="127.0.0.1"
               port="8099"
               redirectPort="8443"
               maxParameterCount="1000"
               secretRequired="false"
               />
    <Connector protocol="AJP/1.3"
               address="::1"
               port="8099"
               redirectPort="8443"
               maxParameterCount="1000"
               secretRequired="false"
               />
 
    <!-- An Engine represents the entry point (within Catalina) that processes
         every request.  The Engine implementation for Tomcat stand alone
         analyzes the HTTP headers included with the request, and passes them
         on to the appropriate Host (virtual host).
         Documentation at /docs/config/engine.html -->
 
    <!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
    -->
    <Engine name="Catalina" defaultHost="localhost">
 
      <!--For clustering, please take a look at documentation at:
          /docs/cluster-howto.html  (simple how to)
          /docs/config/cluster.html (reference documentation) -->
      <!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      -->
 
      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
           via a brute-force attack -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
 
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
 
        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->
 
        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 
      </Host>
    </Engine>
  </Service>
</Server>

Nachfolgend die Erklärungen zu den gemachten Änderungen bzw. Ergänzungen:

Bereich: Server

Aus Sicherheitsgründen sollte der Port und auch die Zeichenkette, mit dem der Apache Tomcat-Applikations-Servers heruntergefahren werden kann, verändert werden:

<!-- Tachtler -->
<!-- default: <Server port="8005" shutdown="SHUTDOWN"> -->
<Server port="8089" shutdown="DOWN2CAT">

*1 Hier wird als Beispiel der Standard-Port von 8005 auf den Port 8089 abgeändert
*2 Die Zeichenkette wird von SHUTDOWN auf DOWN2CAT abgeändert

Bereich: Server | Service | Connector (HTTP)

Die Konfiguration des „Connector“ bezeichnet die Art und Weise, wie eine HTTP-Verbindung zum Apache Tomcat-Applikation-Servers hergestellt werden kann:

    <!-- Tachtler -->
    <!-- default: <Connector port="8080" protocol="HTTP/1.1" -->
    <!-- default:           connectionTimeout="20000" -->
    <!-- default:           redirectPort="8443" -->
    <!-- default:           maxParameterCount="1000" -->
    <!-- default:           /> -->
    <Connector port="8088" protocol="HTTP/1.1"
               address="127.0.0.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
               />
    <Connector port="8088" protocol="HTTP/1.1"
               address="::1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
               />

*1 Hier wird als Beispiel der Standard-Port von 8080 auf den Port 8088 abgeändert
*2 Verbindungen werden nur von der IP-Adresse 127.0.0.1 und ::1 (localhost) akzeptiert

:!: WICHTIG - Die Angabe address=„127.0.0.1“ und address=„::1“ macht den Apache Tomcat-Applikation-Servers nur von der IP-Adresse 127.0.0.1 bzw ::1 (localhost) erreichbar und somit nicht mehr über ein Netzwerk (Internet/Intranet usw.) aufrufbar!

:!: HINWEIS - Aus Sicherheitsgründen kann die Angabe address=„127.0.0.1“ und address=„::1“ sinnvoll sein, wenn der Apache Tomcat-Applikation-Servers nur über einen Apache HTTPD Server auf dem selben Server über die Module mod_proxy_ajp oder mod_jk mit dem Protokoll AJP/1.3 angebunden ist!

Bereich: Server | Service | Connector (AJP/1.3)

Die Konfiguration des „Connector“ bezeichnet die Art und Weise, wie eine AJP/1.3-Verbindung zum Apache Tomcat-Applikation-Servers hergestellt werden kann:

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <!-- Tachtler -->
    <!-- default: -->
    <!-- default: <Connector protocol="AJP/1.3" -->
    <!-- default:           address="::1" -->
    <!-- default:           port="8009" -->
    <!-- default:           redirectPort="8443" -->
    <!-- default:           maxParameterCount="1000" -->
    <!--           /> -->
    <!-- default: -->
    <Connector protocol="AJP/1.3"
               address="127.0.0.1"
               port="8099"
               redirectPort="8443"
               maxParameterCount="1000"
               secretRequired="false"
               />
    <Connector protocol="AJP/1.3"
               address="::1"
               port="8099"
               redirectPort="8443"
               maxParameterCount="1000"
               secretRequired="false"
               />

*1 Hier wird als Beispiel der Connector-Port von 8009 auf den Port 8099 abgeändert
*2 Verbindungen werden nur von der IP-Adresse 127.0.0.1 akzeptiert
*3 Verbindungen werden ohne Passwort secretRequired=„false“ akzeptiert

:!: WICHTIG - Die Angabe address=„127.0.0.1“ und address=„::1“ macht den Apache Tomcat-Applikation-Servers nur von der IP-Adresse 127.0.0.1 und ::1 (localhost) erreichbar und somit nicht mehr über ein Netzwerk (Internet/Intranet usw.) aufrufbar!

:!: HINWEIS - Aus Sicherheitsgründen kann die Angabe address=„127.0.0.1“ und address=„::1“ sinnvoll sein, wenn der Apache Tomcat-Applikation-Servers nur über einen Apache HTTPD Server auf dem selben Server über die Module mod_proxy_ajp oder mod_jk mit dem Protokoll AJP/1.3 angebunden ist!

/etc/tomcat9/web.xml

Die Konfigurationsdatei

  • /etc/tomcat9/web.xml

stellt eine Standard-Konfigurationsdatei für alle WEB-Anwendungen dar, welche keine eigene web-xml-Datei vorhalten.

Nachfolgend sollen einige Änderungen bzw. Ergänzungen an dieser Konfigurationsdatei durchgeführt werden, welchen ein Kommentar, wie nachfolgend dargestellt, voransteht:

<!-- Tachtler -->

Nachfolgend kann hier z.B. die Standard-Laufzeit einer Session, hier von 30 Minuten auf z.B. 12 Minuten geändert werden:

(Nur relevanter Ausschnitt):

  <!-- ==================== Default Session Configuration ================= -->
  <!-- You can set the default session timeout (in minutes) for all newly   -->
  <!-- created sessions by modifying the value below.                       -->
 
    <session-config>
        <!-- Tachtler -->
        <!-- <session-timeout>30</session-timeout> -->
        <session-timeout>12</session-timeout>
    </session-config>

*1 Hier wird die Session Laufzeit von 30 Minuten auf 12 Minuten abgeändert

/etc/tomcat9/tomcat-users.xml

Die Konfigurationsdatei

  • /etc/tomcat9/tomcat-users.xml

stellt eine Standard-Konfigurationsdatei zur Authentifizierung der nachfolgenden, oder auch anderer Web-Anwendungen, des Apache Tomcat-Applikations-Servers dar.

Nachfolgend sollen einige Änderungen bzw. Ergänzungen an dieser Konfigurationsdatei durchgeführt werden, welchen ein Kommentar, wie nachfolgend dargestellt, voransteht:

<!-- Tachtler -->

Hier die komplette Konfigurationsdatei mit allen Änderungen bzw. Ergänzungen, welche ebenfalls nachfolgend erklärt werden:

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
 
      http://www.apache.org/licenses/LICENSE-2.0
 
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
<!--
  By default, no user is included in the "manager-gui" role required
  to operate the "/manager/html" web application.  If you wish to use this app,
  you must define such a user - the username and password are arbitrary.
 
  Built-in Tomcat manager roles:
    - manager-gui    - allows access to the HTML GUI and the status pages
    - manager-script - allows access to the HTTP API and the status pages
    - manager-jmx    - allows access to the JMX proxy and the status pages
    - manager-status - allows access to the status pages only
 
  The users below are wrapped in a comment and are therefore ignored. If you
  wish to configure one or more of these users for use with the manager web
  application, do not forget to remove the <!.. ..> that surrounds them. You
  will also need to set the passwords to something appropriate.
-->
<!--
  <user username="admin" password="<must-be-changed>" roles="manager-gui"/>
  <user username="robot" password="<must-be-changed>" roles="manager-script"/>
-->
<!--
  The sample user and role entries below are intended for use with the
  examples web application. They are wrapped in a comment and thus are ignored
  when reading this file. If you wish to configure these users for use with the
  examples web application, do not forget to remove the <!.. ..> that surrounds
  them. You will also need to set the passwords to something appropriate.
-->
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>
-->
 
<!-- Tachtler NEW  -->
<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user name="admin" password="geheim" roles="admin,admin-gui,admin-script,manager,manager-gui,manager-script,manager-jmx,manager-status" />
</tomcat-users>

*1 Hier werden die Benutzer admin und manager erstellt und mit entsprechenden Rechten ausgestattet, wobei nur der Benutzer admin effektiv nutzbar ist, das dieser als einziger ein Passwort zur Authentifizierung gesetzt hat!

Es gibt ein zusätzliche Möglichkeit, die Angaben des password nicht im Klartext, sondern via SHA verschlüsselt ab zu legen.

Dazu ist mit nachfolgendem Programm (binary) zuerst wie folgt dargestellt ein Passwort-Hash zu erzeugen:

/usr/share/tomcat9/bin/digest.sh -a sha-512 -h org.apache.catalina.realm.MessageDigestCredentialHandler geheim
geheim:5a94e04064523fb6df3ec3056d4fdd90696825985ca8de2a2bd0f1d37d780810$1$ec3448a23c60f30df1f13000ec60c7fb3e2e1b0d96dd7ad4c371207c2f3e9714dd123d26126e60faa5ac34803aa9330c0ace6cd94f5c0fc361a97e71a94df5e3

Anschliessend sind zwei zusätzliche Anpassungen an den nachfolgenden Konfigurationsdateien

  • /etc/tomcat9/tomcat-users.xml
  • /etc/tomcat9/server.xml

durchzuführen.

Nachfolgend die Anpassung an der Konfigurationsdatei

  • /etc/tomcat9/tomcat-users.xml

(Nur relevanter Ausschnitt)

<user name="admin" password="5a94e04064523fb6df3ec3056d4fdd90696825985ca8de2a2bd0f1d37d780810$1$ec3448a23c60f30df1f13000ec60c7fb3e2e1b0d96dd7ad4c371207c2f3e9714dd123d26126e60faa5ac34803aa9330c0ace6cd94f5c0fc361a97e71a94df5e3" roles="admin,admin-gui,admin-script,manager,manager-gui,manager-script,manager-jmx,manager-status" />

Nachfolgend die Anpassung an der Konfigurationsdatei

  • /etc/tomcat9/server.xml

VORHER: - (Nur relevanter Ausschnitt)

      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
           via a brute-force attack -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

NACHHER: - (Nur relevanter Ausschnitt)

      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
           via a brute-force attack -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
        <!-- Tachtler - NEW -->
        <!-- default: <Realm className="org.apache.catalina.realm.UserDatabaseRealm" -->
        <!-- default:        resourceName="UserDatabase"/> -->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase">
               <CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler"
                                  algorithm="sha-512"/>
        </Realm>
      </Realm>

:!: WICHTIG - Diese Änderungen nur umsetzen, wenn kein LDAP-Authentifizierung JNDIRealm verwendet werden soll!

/etc/tomcat9/logging.properties

Die Konfigurationsdatei

  • /etc/tomcat9/logging.properties

stellt eine Standard-Konfigurationsdatei für die LOG-Schreibung alle Apache Tomcat-Web-Anwendungen (catalina, localhost, manager, host-manager) dar, falls kein anderer LOG-Mechanismus vorhanden ist.

Nachfolgend sollen einige Ergänzungen an dieser Konfigurationsdatei durchgeführt werden, welchen ein Kommentar, wie nachfolgend dargestellt, voransteht:

# Tachtler

Nachfolgend kann hier z.B. die Standard-Aufbewahrungs-Anzahl aller Apache Tomcat-Web-Anwendungen LOG-Dateien, hier von 90 (Tagen) LOG-Dateien auf max. 14 (Tage) LOG-Dateien eingestellt werden:

Hier die komplette Konfigurationsdatei mit allen Änderungen bzw. Ergänzungen, welche ebenfalls nachfolgend erklärt werden:

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
 
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
 
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
 
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
 
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
# Tachtler
# default: 1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 14
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
 
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
# Tachtler
# default: 2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 14
2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8
 
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
# Tachtler
# default: 3manager.org.apache.juli.AsyncFileHandler.maxDays = 90
3manager.org.apache.juli.AsyncFileHandler.maxDays = 14
3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
 
4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
# Tachtler
# default: 4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90
4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 14
4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
 
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8
 
 
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler
 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler
 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler
 
# For example, set the org.apache.catalina.util.LifecycleBase logger to log
# each component that extends LifecycleBase changing state:
#org.apache.catalina.util.LifecycleBase.level = FINE
 
# To see debug messages in TldLocationsCache, uncomment the following line:
#org.apache.jasper.compiler.TldLocationsCache.level = FINE
 
# To see debug messages for HTTP/2 handling, uncomment the following line:
#org.apache.coyote.http2.level = FINE
 
# To see debug messages for WebSocket handling, uncomment the following line:
#org.apache.tomcat.websocket.level = FINE

*1 Hier wird die Anzahl der LOG-Dateien von 90 (Tagen) LOG-Dateien auf 14 (Tage) LOG-Dateien abgeändert

Zugriffsbeschränkung "localhost" aufheben

Falls der Zugriff auf die mit installierten Web-Anwendungen des Apache Tomcat-Applikation-Server unter dem Verzeichnis

  • /var/lib/tomcat9/webapps/

welche da wären

  • docs - Dokumentation
  • examples - Beispiele
  • host-manager - Apache Tomcat Virtual Host Manager
  • manager - Apache Tomcat Webanwendungs-Manager

auch von einer Browser, welcher nicht auf dem selben Server läuft, sprich auf den IP-Adressen

  • 127.0.0.1
  • ::1

sind nachfolgende Schritte erforderlich.

:!: ACHTUNG - Die Konfiguration von address=„127.0.0.1“ und address=„::1“ darf NICHT in den einzelnen Konnektoren durchgeführt werden!!!

:!: WICHTIG - Die Angabe address=„127.0.0.1“ und address=„::1“ macht den Apache Tomcat-Applikation-Servers nur von der IP-Adresse 127.0.0.1 und ::1 (localhost) erreichbar und somit nicht mehr über ein Netzwerk (Internet/Intranet usw.) aufrufbar!

:!: HINWEIS - Aus Sicherheitsgründen kann die Angabe address=„127.0.0.1“ und address=„::1“ sinnvoll sein, wenn der Apache Tomcat-Applikation-Servers nur über einen Apache HTTPD Server auf dem selben Server über die Module mod_proxy_ajp oder mod_jk mit dem Protokoll AJP/1.3 angebunden ist!

context.xml

Jeder der installierten Web-Anwendungen des Apache Tomcat-Applikation-Server unter dem Verzeichnis

  • /var/lib/tomcat9/webapps/

hat im jeweiligen Verzeichnis

  • /var/lib/tomcat9/webapps/docs/META-INF/
  • /var/lib/tomcat9/webapps/examples/META-INF/
  • /var/lib/tomcat9/webapps/host-manager/META-INF/
  • /var/lib/tomcat9/webapps/manager/META-INF/

eine Konfigurationsdatei mit dem Namen

  • context.xml

welche durch eine Beschränkung dafür sorgt, das die jeweilige installierten Web-Anwendungen des Apache Tomcat-Applikation-Server nur von den IP-Adressen

  • 127.0.0.1
  • ::1

erreichbar ist.

Um Änderungen an den originalen Konfigurationsdateien context.xml zu vermeiden, können diese mit nachfolgenden Befehlen in das Verzeichnis

  • /etc/tomcat9/Catalina/localhost

kopiert und gleichzeitig umbenannt werden, um so den Inhalt entsprechend abändern zu können und damit auch diese Konfigurationsdatei dann jeweils angezogen wird und nicht mehr die originale.

# cp -a /var/lib/tomcat9/webapps/docs/META-INF/context.xml /etc/tomcat9/Catalina/localhost/docs.xml
# cp -a /var/lib/tomcat9/webapps/examples/META-INF/context.xml /etc/tomcat9/Catalina/localhost/examples.xml
# cp -a /var/lib/tomcat9/webapps/host-manager/META-INF/context.xml /etc/tomcat9/Catalina/localhost/host-manager.xml
# cp -a /var/lib/tomcat9/webapps/manager/META-INF/context.xml /etc/tomcat9/Catalina/localhost/manager.xml

Anschliessend kann jede so neu entstandene Konfigurationsdatei wie folgt angepasst werden.

/etc/tomcat9/Catalina/localhost/docs.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
 
      http://www.apache.org/licenses/LICENSE-2.0
 
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<Context antiResourceLocking="false" >
  <!-- Tachtler - disabled -->
  <!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  -->
</Context>

/etc/tomcat9/Catalina/localhost/examples.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
 
      http://www.apache.org/licenses/LICENSE-2.0
 
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<Context antiResourceLocking="false" >
  <!-- Tachtler - disabled -->
  <!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  -->
</Context>

/etc/tomcat9/Catalina/localhost/host-manager.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
 
      http://www.apache.org/licenses/LICENSE-2.0
 
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <!-- Tachtler - disabled -->
  <!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  -->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

/etc/tomcat9/Catalina/localhost/manager.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
 
      http://www.apache.org/licenses/LICENSE-2.0
 
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <!-- Tachtler - disabled -->
  <!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  -->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

Update von /var/lib/tomcat9/webapps/ROOT verhindern

/ect/pacman.conf

Falls eine eigene Web-Anwendung als ROOT.war deployed werden soll, kann nachfolgendes Problem beim updaten des Apache Tomcat-Applikation-Server auftreten.

Da mit jedem Update des Apache Tomcat-Applikation-Server auch die Standard-Web-Anwedung, welche sich im Verzeichnis

  • /var/lib/tomcat9/webapps/ROOT

befindet, ebenfalls wieder mit installiert wird, kommt es in diesem Fall zum dem Problem, das dadurch die eigene Web-Anwendung, welche ebenfalls als ROOT.war deployed wurde, überschrieben wird, bzw. die Standard-Web-Applikation einfach zusätzlich in das Verzeichnis kopiert wird.

Um dies zu verhindern, können beim Updaten mittels des Paket-Managers Pacman, genauer gesagt beim entpacken des jeweiligen Pakets, Dateien und sogar ganze Verzeichnisse ausgenommen werden.

Nachfolgende Konfiguration in der Pacman-Konfigurationsdatei /etc/pacman.conf kann dies bewirken:

(Nur relevanter Ausschnitt)

#
# GENERAL OPTIONS
#
[options]
# Tachtler - NEW -
NoExtract=var/lib/tomcat9/webapps/ROOT/*

:!: HINWEIS - !!! Kein führendes /-Zeichen am Anfang der Pfadangabe setzen !!!

Erster Start

Nachdem alle vorhergehenden Konfigurationsschritte erfolgreich durchgeführt worden sind, kann der Apache Tomcat-Applikation-Server mit nachfolgendem Befehle gestartet werden:

# systemctl start tomcat9.service

Nachfolgender Befehl kann zur Überprüfung, ob der Apache Tomcat-Applikation-Server gestartet wurde, genutzt werden:

# systemctl status tomcat9.service
● tomcat9.service - Tomcat 9 servlet container
     Loaded: loaded (/usr/lib/systemd/system/tomcat9.service; enabled; preset: >
    Drop-In: /etc/systemd/system/tomcat9.service.d
             └─override.conf
     Active: active (running) since Fri 2023-08-04 05:18:42 CEST; 8s ago
    Process: 1211 ExecStart=/usr/bin/jsvc -Dcatalina.home=${CATALINA_HOME} -Dca>
   Main PID: 1217 (jsvc)
      Tasks: 70 (limit: 4655)
     Memory: 175.3M
        CPU: 5.102s
     CGroup: /system.slice/tomcat9.service
             ├─1214 jsvc.exec -Dcatalina.home=/usr/share/tomcat9 -Dcatalina.bas>
             ├─1216 jsvc.exec -Dcatalina.home=/usr/share/tomcat9 -Dcatalina.bas>
             └─1217 jsvc.exec -Dcatalina.home=/usr/share/tomcat9 -Dcatalina.bas>

Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.jasp>
                                        INFO: At least one JAR was scanned for >
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: Deployment of web application dir>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: Deploying web application directo>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.jasp>
                                        INFO: At least one JAR was scanned for >
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: Deployment of web application dir>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.coyo>
                                        INFO: Starting ProtocolHandler ["http-n>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.coyo>
                                        INFO: Starting ProtocolHandler ["http-n>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.coyo>
                                        INFO: Starting ProtocolHandler ["ajp-ni>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.coyo>
                                        INFO: Starting ProtocolHandler ["ajp-ni>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: Server startup in [1735] millisec>

LOG-Ausgaben

Mit nachfolgendem Befehl, kann die LOG-Ausgabe des Apache Tomcat-Applikation-Servers überprüft werden:

# journalctl -eu tomcat9.service

und sollte eine Ausgabe, in etwa wie die nachfolgende erzeugen:

Aug 04 05:18:42 server systemd[1]: Starting Tomcat 9 servlet container...
Aug 04 05:18:42 server systemd[1]: tomcat9.service: Can't open PID file /run/to>
Aug 04 05:18:42 server systemd[1]: tomcat9.service: Supervising process 1217 wh>
Aug 04 05:18:42 server systemd[1]: Started Tomcat 9 servlet container.
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Server version name:   Apache Tom>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Server built:          Jan 20 197>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Server version number: 9.0.78.0
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: OS Name:               Linux
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: OS Version:            6.1.39-2-l>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Architecture:          amd64
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Java Home:             /usr/lib/j>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: JVM Version:           11.0.20+8
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: JVM Vendor:            Oracle Cor>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: CATALINA_BASE:         /usr/share>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: CATALINA_HOME:         /usr/share>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Command line argument: -Dcatalina>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Command line argument: -Dcatalina>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Command line argument: -Djava.io.>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Command line argument: -Xms128m
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Command line argument: -Xmx1024m
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Command line argument: -Dcommons.>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Command line argument: -Dcommons.>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Command line argument: -Dcommons.>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Command line argument: abort
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Loaded Apache Tomcat Native libra>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: APR capabilities: IPv6 [true], se>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: APR/OpenSSL configuration: useApr>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: OpenSSL successfully initialized >
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.coyo>
                                        INFO: Initializing ProtocolHandler ["ht>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.coyo>
                                        INFO: Initializing ProtocolHandler ["ht>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.coyo>
                                        INFO: Initializing ProtocolHandler ["aj>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.coyo>
                                        INFO: Initializing ProtocolHandler ["aj>
Aug 04 05:18:42 server jsvc.exec[1216]: Aug 04, 2023 5:18:42 AM org.apache.cata>
                                        INFO: Server initialization in [601] mi>
Aug 04 05:18:43 server jsvc.exec[1216]: Aug 04, 2023 5:18:43 AM org.apache.cata>
                                        INFO: Starting service [Catalina]
Aug 04 05:18:43 server jsvc.exec[1216]: Aug 04, 2023 5:18:43 AM org.apache.cata>
                                        INFO: Starting Servlet engine: [Apache >
Aug 04 05:18:43 server jsvc.exec[1216]: Aug 04, 2023 5:18:43 AM org.apache.cata>
                                        INFO: Deploying web application directo>
Aug 04 05:18:43 server jsvc.exec[1216]: Aug 04, 2023 5:18:43 AM org.apache.jasp>
                                        INFO: At least one JAR was scanned for >
Aug 04 05:18:43 server jsvc.exec[1216]: Aug 04, 2023 5:18:43 AM org.apache.cata>
                                        INFO: Deployment of web application dir>
Aug 04 05:18:43 server jsvc.exec[1216]: Aug 04, 2023 5:18:43 AM org.apache.cata>
                                        INFO: Deploying web application directo>
Aug 04 05:18:43 server jsvc.exec[1216]: Aug 04, 2023 5:18:43 AM org.apache.jasp>
                                        INFO: At least one JAR was scanned for >
Aug 04 05:18:43 server jsvc.exec[1216]: Aug 04, 2023 5:18:43 AM org.apache.cata>
                                        INFO: Deployment of web application dir>
Aug 04 05:18:43 server jsvc.exec[1216]: Aug 04, 2023 5:18:43 AM org.apache.cata>
                                        INFO: Deploying web application directo>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.jasp>
                                        INFO: At least one JAR was scanned for >
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: ContextListener: contextInitializ>
                                        Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: SessionListener: contextInitializ>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: ContextListener: attributeAdded('>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: Deployment of web application dir>
                                        Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: Deploying web application directo>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.jasp>
                                        INFO: At least one JAR was scanned for >
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: Deployment of web application dir>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: Deploying web application directo>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.jasp>
                                        INFO: At least one JAR was scanned for >
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: Deployment of web application dir>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.coyo>
                                        INFO: Starting ProtocolHandler ["http-n>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.coyo>
                                        INFO: Starting ProtocolHandler ["http-n>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.coyo>
                                        INFO: Starting ProtocolHandler ["ajp-ni>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.coyo>
                                        INFO: Starting ProtocolHandler ["ajp-ni>
Aug 04 05:18:44 server jsvc.exec[1216]: Aug 04, 2023 5:18:44 AM org.apache.cata>
                                        INFO: Server startup in [1735] millisec>

IP/Port-Listen

Mit nachfolgendem Befehl kann überprüft werden auf welchen IP-Adressen (sollte in diesem Beispiel NUR 127.0.0.1 und :.1 sein) und auf welchen Ports der Apache Tomcat-Applikation-Server horcht:

# ss -tauben | grep tomcat9.service
tcp   LISTEN 0   100       [::ffff:127.0.0.1]:8089      *:*     uid:58 ino:22405 sk:5 cgroup:/system.slice/tomcat9.service v6only:0 <->        
tcp   LISTEN 0   100       [::ffff:127.0.0.1]:8088      *:*     uid:58 ino:22401 sk:6 cgroup:/system.slice/tomcat9.service v6only:0 <->        
tcp   LISTEN 0   100       [::1]:8089                [::]:*     uid:58 ino:22406 sk:8 cgroup:/system.slice/tomcat9.service v6only:1 <->        
tcp   LISTEN 0   100       [::1]:8088                [::]:*     uid:58 ino:22404 sk:9 cgroup:/system.slice/tomcat9.service v6only:1 <->

Aufruf

Unter nachfolgender URL kann nun der im Browser die

  • ROOT-Web-Anwendung
  • docs-Web-Anwendung
  • examples-Web-Anwendung
  • host-manager-Web-Anwendung
  • manager-Web-Anwendung

des Apache Tomcat-Applikation-Server direkt aufgerufen werden:

und sollte in etwa eine Ausgabe, wie nachfolgend dargestellt, im Browser zur Anzeige bringen:

Apache Tomcat Applikation-Server - ROOT-Web-Anwendung

Apache Tomcat Applikation-Server - docs-Web-Anwendung

Apache Tomcat Applikation-Server - examples-Web-Anwendung

Apache Tomcat Applikation-Server - Server-Status-Web-Anwendung

Apache Tomcat Applikation-Server - Manager-Web-Anwendung

Apache Tomcat Applikation-Server - Host-Manager-Web-Anwendung

Weiterführende Konfigurationen

Unter nachfolgenden internen Links, werden weiterführende Konfiguration durchgeführt

LDAP-Authentifizierung JNDIRealm

Logging - log4j

  • Interner Link zu: Apache Tomcat 9 Server Archlinux - Logging - log4j
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/apache_tomcat_9_server_archlinux.txt · Zuletzt geändert: 2024/03/05 15:46 von klaus