Apache Tomcat ist eine Open-Source-Implementierung der Jakarta-Servlet-Spezifikation und der meistgenutzte Container für Java-Webanwendungen. Tomcat wird über Skripte im bin/-Verzeichnis oder systemd gesteuert; die Umgebungsvariablen CATALINA_HOME (Installation) und CATALINA_BASE (Instanz) bestimmen den Betrieb.

Start und Stopp

$CATALINA_HOME/bin/startup.sh        # Tomcat im Hintergrund starten
$CATALINA_HOME/bin/shutdown.sh       # Tomcat kontrolliert stoppen
$CATALINA_HOME/bin/catalina.sh run   # im Vordergrund starten (für Debug/Container)

Unter Windows heißen die Skripte startup.bat und shutdown.bat. Als systemd-Dienst (z.B. tomcat9 unter Debian/Ubuntu) gilt:

sudo systemctl start tomcat9
sudo systemctl stop tomcat9
sudo systemctl restart tomcat9
sudo systemctl status tomcat9

catalina.sh im Detail

Das zentrale Steuerskript catalina.sh kennt weitere Aktionen:

catalina.sh start          # wie startup.sh
catalina.sh run            # Vordergrund (Logs direkt auf der Konsole)
catalina.sh stop           # wie shutdown.sh
catalina.sh stop -force    # hart stoppen (kill -9) bei Timeout
catalina.sh configtest     # server.xml auf Syntax prüfen (Exit-Code beachten)
catalina.sh version        # Versionsnummern anzeigen
catalina.sh start -security    # mit SecurityManager starten (Java 17+ entfernt)

Die Java-Optionen lassen sich über die Umgebungsvariable JAVA_OPTS setzen, z.B. für den Heap:

export JAVA_OPTS="-Xms512m -Xmx1024m"
$CATALINA_HOME/bin/startup.sh

Wichtige Verzeichnisse

  • conf/server.xml (Ports, Hosts, Connectors), web.xml, context.xml, tomcat-users.xml
  • webapps/ – deployte Webanwendungen (WAR-Dateien werden hier abgelegt und automatisch deployed)
  • logs/catalina.out, localhost.log, access_log
  • bin/ – Start-/Stoppskripte und tomcat-juli.jar
  • lib/ – gemeinsame Bibliotheken für alle Anwendungen

Manager- und Deploy-Befehle

Die Manager-Web-App erlaubt das Deployment per HTTP (PUT einer WAR-Datei auf /manager/text/deploy?path=/meine-app) oder per Kommandozeile mit curl:

curl -u tomcat:geheim http://localhost:8080/manager/text/list
curl -u tomcat:geheim -T meine-app.war "http://localhost:8080/manager/text/deploy?path=/meine-app"
curl -u tomcat:geheim "http://localhost:8080/manager/text/undeploy?path=/meine-app"

Der Standard-Port ist 8080 (HTTP) und 8005 (Shutdown); der Zugriff auf die Manager-App erfordert in tomcat-users.xml hinterlegte Rollen wie manager-gui.

Verwandte Grundlagen: Java-Befehle, Apache-Befehle, Nginx-Befehle, Webserver, Reverse-Proxy.