Technologieaustausch

[Detaillierte Erläuterung des Tomcat-Verzeichnisses] Was Sie sonst noch über Tomcat wissen müssen

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Ich hoffe, der Artikel kann Ihnen Inspiration und Inspiration geben ~
Wenn Sie der Meinung sind, dass der Artikel für Sie hilfreich ist,Liken+Folgen+Sammeln Bitte unterstützen Sie den Blogger~

Eröffnungsnotizen

Tomcat ist immer noch im täglichen Leben der Entwickler aktiv, aber haben wir ein tieferes Verständnis davon oder reicht es aus, nur zu wissen, wie man es installiert, konfiguriert und startet? Dieser Artikel dient als meine Zusammenfassung und Aufzeichnung. Ich hoffe, dass Sie etwas brauchen.

Fügen Sie hier eine Bildbeschreibung ein

1. Grundlegende Umgebungsbeschreibung

Unter Berücksichtigung von Umweltfaktoren sollte jeder seine eigene Software- und Hardwareumgebung ordnungsgemäß vergleichen und analysieren ~ Bitte lesen Sie die Hardware- und Softwareumgebung sorgfältig durch.

1.1 Hardwareumgebung

Windows 11 专业版

1.2 Softwareumgebung

Entwicklungswerkzeuge:Tomcat 9.0

2. Tomcat-Dateistruktur

Die Dateiverzeichnisstruktur ist hauptsächlich unterteilt in: bin, conf, lib, logs, temp, webapps, work. Die Dateiverzeichnisstruktur in Tomcat ist relativ klar und jedes Verzeichnis hat sein eigenes特定的功能Und用途

Fügen Sie hier eine Bildbeschreibung ein

2.1 bin-Verzeichnis

Im bin-Verzeichnis werden mehrere Skriptdateien zum Starten und Herunterfahren von Tomcat gespeichert重要的文件Wir müssen es wissen;

  • Dateien mit der Endung .sh: Skripte zum Starten und Herunterfahren auf Linux-Plattformen oder Mac.
  • Dateien mit der Endung .bat: Skripte zum Starten und Herunterfahren auf Windows-Plattformen.
  • catalina.sh: Das Kernstartskript von Tomcat, in dem JVM-Parameter festgelegt werden können.
  • Startup.sh und Shutdown.sh: werden zum Starten bzw. Herunterfahren des Tomcat-Servers verwendet.
  • service.bat: Wird zum Registrieren des Tomcat-Dienstes in Windows verwendet.

2.1.1 Starten und Herunterfahren

fürstartupUndshutdown Sie müssen damit sehr vertraut sein. Wir müssen es jeden Tag verwenden, um den Tomcat-Server schnell zu starten und herunterzufahren. Was das Suffix bat betrifft, hängt es von Ihrem Betriebssystemtyp ab.

2.1.2 Catalina

umCatalinaDie Datei stammt ebenfalls von Tomcat启动脚本,UndstartupDer Hauptunterschied besteht darin, dass letzteres专注启动, während ersterer noch passieren kann配置参数um andere Zwecke zu erreichen;

Hier verwende ich beispielsweise Catalina, um Tomcat zu starten. Ich werde Folgendes tun: Eingabecatalina.bat start (Windows-System)
Fügen Sie hier eine Bildbeschreibung ein
hier isttomcat的bin目录Wird unter ausgeführt, sofern Sie dies konfiguriert haben环境变量, dann können Sie diesen Vorgang an jedem beliebigen Ort durchführen; in ähnlicher Weise können wir ihn auch verwendencatalina.bat stopden Dienst beenden;

Wie konfiguriere ich also Parameter?

Der übliche Ansatz besteht darin, die relevanten Parameter durch Ändern der Catalina-Datei zu konfigurieren. Die häufigste Parameterkonfiguration, die wir verwenden, ist JVM und andere verwandte Inhalte, zum Beispiel in der Catalina-Datei, hier I-Xms512mbereits eingerichtetJVM的初始堆内存ist 512 MB,-Xmx1024mbereits eingerichtet最大堆内存ist 1024 MB,-XX:+UseG1GCErmöglichtG1垃圾回收器-Duser.timezone=Asia/Shanghaibereits eingerichtetJVM的时区

Fügen Sie hier eine Bildbeschreibung ein
Starten Sie Tomcat nach der Änderung neu, damit die Konfiguration wirksam wird. Hier finden Sie einen Vergleich der Unterschiede vor und nach der Konfiguration.
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Das Programm startet normal und wir können die von uns konfigurierten Parameterinformationen auf der Konsole sehen;

需要注意的是, in tatsächlichen Situationen tun wir das nicht不建议直接在catalina中修改Dies ist für die Aktualisierung und Wartung unseres Tomcat-Dienstes nicht geeignet und wird daher empfohlen通过setenv配置文件 Um Parameter zu konfigurieren; warum setenv? Werfen wir einen Blick auf die Konfigurationsdatei von Catalina. In diesem Absatz erfahren Sie, dass das Skript beim Start eine Beurteilung vornimmt. Diese Datei ist normalerweise nicht im aktuellen Tomcat-Verzeichnis vorhanden um selbst eines manuell zu erstellen.
Fügen Sie hier eine Bildbeschreibung ein
Nachdem Sie setenv (setenv.bat unter Windows, setenv.sh unter Mac/Linux) erstellt haben, fügen Sie darin je nach System Konfigurationen hinzu. Bitte beachten Sie, dass die Syntax leicht unterschiedlich sein wird;

// mac或linux
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC -Duser.timezone=Asia/Shanghai"
  • 1
  • 2
// windows
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC -Duser.timezone=Asia/Shanghai
  • 1
  • 2

2.1.3 service.bat (Windows)

Servicedatei, wir sehen diese Datei nur in Windows. Sie wird normalerweise verwendet, um den Tomcat-Dienst als Systemdienst zu registrieren. Die Hauptverwendung besteht darin, das bin-Verzeichnis einzugeben und service.bat install + benutzerdefinierten Dienstnamen auszuführen.
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Dann können wir im Windows-Dienst sehen, dass er zu diesem Zeitpunkt nicht gestartet ist. Sie können auf klicken, um den Computer zu starten oder neu zu starten. Er wird beim nächsten Neustart des Computers automatisch gestartet.

2.2 conf-Verzeichnis

Im Verzeichnis conf werden verschiedene globale Konfigurationsdateien des Tomcat-Servers gespeichert.

  • server.xml: Die Hauptkonfigurationsdatei von Tomcat, einschließlich Konfigurationsinformationen zu Dienst, Connector, Engine, Host und anderen Komponenten.
  • web.xml: Eine Konfigurationsdatei, die dem Servlet-Spezifikationsstandard folgt und zum Konfigurieren von Servlets und zum Bereitstellen von Standardkonfigurationsinformationen für alle Webanwendungen verwendet wird.
  • tomcat-users.xml: Zugehörige Rollen, Benutzer, Passwörter und andere Informationen, die bei der Realm-Authentifizierung verwendet werden.
  • context.xml: Standardkonfigurationsinformationen für alle Hosts.
  • catalina.policy: Java-bezogene Sicherheitsrichtlinien-Konfigurationsdatei.
  • catalina.properties: Tomcat-interne Paketdefinition und zugriffsbezogene Kontrolldateien.
  • logging.properties: Konfigurationsinformationen zum Tomcat-Logger.

2.2.1 server.xml

In der Konfigurationsdatei server.xml von Apache Tomcat können Sie dies tun配置多个端口, aber die häufigsten davon sindHTTP服务的端口(Standard ist 8080),AJP服务的端口(Standard ist 8009) undSSL/TLS(即HTTPS)的端口(Wenn aktiviert, ist der Standardwert möglicherweise 8443, dies hängt jedoch von der spezifischen Konfiguration ab.)
【1】HTTP-Anschluss

Der HTTP-Connector wird zur Verarbeitung von HTTP-Anfragen verwendet, die in Tomcat eingehen. Standardmäßig lauscht Tomcat auf Port 8080. Sie können diesen Port ändern, indem Sie das Portattribut des Labels ändern.

Fügen Sie hier eine Bildbeschreibung ein
【2】AJP-Anschluss

Der AJP-Connector (Apache JServ Protocol) wird für die Kommunikation zwischen Tomcat und dem Apache-HTTP-Server verwendet, insbesondere bei Verwendung des Moduls mod_jk. Standardmäßig lauscht Tomcat auf Port 8009.

AJP目前我们其实不怎么使用,因为nginx已经可以替代它;它一开始是默认注释的,根据自己需要来开启

【3】SSL/TLS (HTTPS)-Anschluss

Wenn Tomcat HTTPS-Anfragen verarbeiten soll, müssen Sie einen SSL/TLS-Connector konfigurieren.Dabei müssen Informationen wie der Schlüsselspeicher (Keystore) und das Passwort des SSL-Zertifikats angegeben werden

Fügen Sie hier eine Bildbeschreibung ein
这个也是默认注释的,当你需要用到https请求的时候,再去开启;certificateKeystoreFile和certificateKeystorePassword应该指向你的密钥库文件和它的密码。这些值需要根据你的实际密钥库文件和密码进行更改

2.2.2 web.xml (wenig geändert)

Im Tomcat-Installationsverzeichnisconf目录Mitteweb.xml文件Ja全局配置文件 , das die serverweite Tomcat-Standard-Servlet- und MIME-Typzuordnung usw. definiert. Normalerweise muss diese globale web.xml-Datei nicht häufig von Entwicklern geändert werden, es sei denn, Sie müssen dem gesamten Tomcat-Server eine globale Servlet-Zuordnung, einen Filter (Filter), einen Listener (Listener) usw. hinzufügen.

一些配置是可以通过注解(Annotations)来完成,这减少了对web.xml文件的依赖;

2.2.3 tomcat-users.xml

<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">  
  
  <!--  
    注意:默认情况下,Tomcat Manager是禁用的,并且没有设置任何用户。  
    要启用Tomcat Manager,并为其设置用户,你需要取消以下注释,  
    并根据需要修改用户名、密码和角色。  
  -->  
  
  <role rolename="manager-gui"/>  
  <role rolename="manager-script"/>  
  <user username="tomcat" password="tomcat" roles="manager-gui"/>  
  <user username="admin" password="admin123" roles="manager-script"/>  
  
</tomcat-users>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

2.2.4 Protokollierungseigenschaften

Durch Bearbeiten dieser Datei können Sie die Protokollebene, das Format, den Ausgabeort usw. definieren. Dies ist nützlich zum Überwachen und Debuggen von Tomcat-Servern und ihren bereitgestellten Anwendungen.

# 设置日志的根级别和处理器  
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler  
  
# 设置根日志级别  
.level = INFO  
  
# 设置特定类别的日志级别  
org.apache.catalina.level = INFO  
org.apache.catalina.startup.level = FINE  
org.apache.catalina.session.level = FINE  
org.apache.catalina.util.lifecycle.level = FINE  
  
# 为不同的处理器(文件处理器和控制台处理器)设置格式和文件路径  
# 文件处理器示例  
1catalina.org.apache.juli.FileHandler.level = FINE  
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
1catalina.org.apache.juli.FileHandler.prefix = catalina.  
  
2localhost.org.apache.juli.FileHandler.level = FINE  
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
2localhost.org.apache.juli.FileHandler.prefix = localhost.  
  
3manager.org.apache.juli.FileHandler.level = FINE  
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
3manager.org.apache.juli.FileHandler.prefix = manager.  
  
4host-manager.org.apache.juli.FileHandler.level = FINE  
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.  
  
# 控制台处理器  
java.util.logging.ConsoleHandler.level = FINE  
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter  
  
# 设置日志文件的编码  
org.apache.juli.FileHandler.encoding = UTF-8  
  
# Java 类的日志级别  
org.apache.jasper.level = INFO  
org.apache.coyote.level = INFO
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

2.3 lib-Verzeichnis (im Wesentlichen unverändert)

Funktion: Speichern Sie die Bibliotheksdateien (JAR-Dateien), die zum Ausführen von Tomcat erforderlich sind.
Hinweis: Obwohl einige alte Versionen von Tomcat oder bestimmte Konfigurationen JAR-Dateien möglicherweise in anderen Verzeichnissen wie common/lib, server/lib oder shared/lib speichern, bevorzugen moderne Versionen von Tomcat die Speicherung von Kernbibliotheksdateien im lib-Verzeichnis.

2.4 Protokollverzeichnis

Funktion: Speichern Sie die Protokolldateien, wenn Tomcat ausgeführt wird.
Inhalt: einschließlich verschiedener Protokollinformationen während des Startens, Ausführens und Herunterfahrens von Tomcat, z. B. catalina.out, localhost.log usw.

Fügen Sie hier eine Bildbeschreibung ein
这里catalina.2024-7-10是通过日志滚动策略生成的,用于记录Catalina容器的日常运行日志;

locahost.2024-7-10,localhost_access_log.2024-7-10分别记录了应用程序的日志信息和访问日志;

host-manager日志是监控和管理Tomcat服务器上虚拟主机的重要工具。通过分析这些日志文件,管理员可以了解虚拟主机的使用情况,以及是否存在潜在的问题或安全风险

Wenn wir Protokolle täglich überprüfen, wählen wir normalerweise nicht Catalina.log/Catalina.out/appName.log usw. aus;

2.5 Webapps-Verzeichnis

Funktion: Das Hauptverzeichnis für die Webveröffentlichung von Tomcat, das zum Speichern von Webanwendungen verwendet wird.
Inhalt: Standardmäßig kann die Anwendung veröffentlicht werden, indem die Webanwendungsdateien in diesem Verzeichnis abgelegt werden. Tomcat scannt die Anwendungen in diesem Verzeichnis automatisch und stellt sie bereit.

Merkmale von Webapps sind:
【1】Automatische Bereitstellung: Tomcat scannt regelmäßig alle Inhalte im Webapps-Verzeichnis.wenn Sie a platzieren WAR 文件(z. B. myapp.war) Wenn Tomcat diese Datei im Webapps-Verzeichnis ablegt, erkennt sie sie automatisch und尝试部署它 .Wenn es sich bei der Datei um ein WAR-Paket handelt, dekomprimiert Tomcat zunächst die Datei und stellt dann die Anwendung entsprechend der dekomprimierten Verzeichnisstruktur bereit.
【2】Verwaltung: Durch direktes Bearbeiten der Dateien im Webapps-Verzeichnis können Sie Webanwendungen auf Tomcat einfach verwalten.Sie können zum Beispiel bestehen删除目录来卸载应用程序, oder über替换 WAR 文件KommenerneuernApp.

【3】Benutzerdefinierter Bereitstellungspfad:Tomcat 默认将 Web 应用程序部署在 webapps 目录下, aber Sie können auch die Tomcat-Konfigurationsdatei ändern (z. B server.xml ), um ein anderes Verzeichnis als Bereitstellungspfad der Anwendung anzugeben. Lassen Sie mich das erwähnen: Es kommt selten vor, dass ein anderer Weg definiert wird, aber es ist nicht unmöglich;

<Host name="localhost"  appBase="webapps"  
        unpackWARs="true" autoDeploy="true">  
  
    <!-- 配置一个Context来指定其他目录为应用程序的部署路径 -->  
    <Context path="/myapp" docBase="/path/to/your/application" reloadable="true">  
        <!-- 这里可以添加更多的Context配置 -->  
    </Context>  
  
    <!-- 其他Host配置 -->  
  
</Host>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.6 Arbeitsverzeichnis

Funktion: Speichern Sie die nach der JSP-Kompilierung generierten Klassendateien und die temporären Dateien von Servlet.
Hinweis: Löschen Sie den Inhalt dieses Verzeichnisses und starten Sie Tomcat neu, um den kompilierten Cache von JSP und Servlet zu löschen.

简单的来说,work的作用就是JSP编译和缓存来提高tomcat的性能,主要体现在响应速度上;
注意需要定期清理该目录,长期tomcat的运行和更新会导致该目录越来愈大;占用大量的磁盘空间;

2.7 temporäres Verzeichnis

Funktion: Speichern Sie temporäre Dateien, die während der Ausführung von Tomcat generiert werden.
Hinweis: Diese temporären Dateien werden normalerweise zur Unterstützung interner Vorgänge von Tomcat verwendet, z. B. Sitzungsverwaltung, Datei-Upload usw.

这个目录有点类似于work目录,也是通过缓存临时文件来提高应用程序的性能

3. Endlich

[1] Nachdem Sie relevante Konfigurationen vorgenommen haben, müssen Sie Tomcat häufig neu starten, damit es wirksam wird.

[2] Obwohl es sich bei den temporären und Arbeitsverzeichnissen um Cache-Dateien und temporäre Dateien handelt, müssen Sie beim Löschen dennoch eine Sicherungskopie erstellen und überprüfen, ob diese Dateien noch von anderen Anwendungsprozessen belegt sind.

[3] Wenn das Herunterfahren ausgeführt wird, wird Tomcat nicht sofort gestoppt, sondern es kann je nach Situation eine Weile dauern, bis dieser Vorgang beendet wird. Sie können anhand des Tomcat-Portstatus beurteilen, ob Tomcat heruntergefahren wurde ;