技術共有

【Tomcatディレクトリの詳しい解説】Tomcatについて知っておくべきこと

2024-07-12

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

この記事があなたにインスピレーションとインスピレーションを与えることができれば幸いです〜
この記事が役に立ったと思われる場合は、いいね+フォロー+集める ブロガーをサポートしてください〜

冒頭メモ

Tomcat は今でも開発者の日常生活の中で活躍していますが、私たちはそれをより深く理解しているのでしょうか、それともインストール、構成、起動方法を知っているだけで十分なのでしょうか?この記事は私の要約と記録として役立ちます。

ここに画像の説明を挿入します

1. 基本的な環境の説明

環境要因を考慮して、誰もが自分のソフトウェアとハ​​ードウェア環境を適切に比較および分析する必要があります〜ハードウェアとソフトウェア環境をよく読んでください。

1.1 ハードウェア環境

Windows 11 专业版

1.2 ソフトウェア環境

開発ツール:Tomcat 9.0

2. Tomcatのファイル構造

ファイル ディレクトリ構造は主に、bin、conf、lib、logs、temp、webapps、work に分かれています。Tomcat のファイル ディレクトリ構造は比較的明確で、各ディレクトリには独自の構造があります。特定的功能そして用途

ここに画像の説明を挿入します

2.1 bin ディレクトリ

bin ディレクトリには、Tomcat の起動スクリプト ファイルとシャットダウン スクリプト ファイルがいくつか保存されます。重要的文件私たちは知らなければなりません。

  • .sh で終わるファイル: Linux プラットフォームまたは Mac の起動スクリプトとシャットダウン スクリプト。
  • .bat で終わるファイル: Windows プラットフォームの起動スクリプトとシャットダウン スクリプト。
  • catalina.sh: Tomcat のコア起動スクリプト。JVM パラメータを設定できます。
  • startup.sh と shutdown.sh: それぞれ Tomcat サーバーの起動とシャットダウンに使用されます。
  • service.bat: Windows で Tomcat サービスを登録するために使用されます。

2.1.1 起動とシャットダウン

のためにstartupそしてshutdown Tomcat サーバーを迅速に起動およびシャットダウンするには、このツールを毎日使用する必要があります。サフィックス but については、オペレーティング システムの種類によって異なります。

2.1.2 カタリナ

についてCatalinaこのファイルも Tomcat からのものです启动脚本、そしてstartup主な違いは、後者は专注启动、前者はまだ通過できますが、配置参数他の目的を達成するため。

たとえば、ここでは catalina を使用して Tomcat を起動します。次のようにします。catalina.bat start (ウィンドウズシステム)
ここに画像の説明を挿入します
ここはtomcat的bin目录設定している場合は以下で実行されます环境变量同様に、この操作を任意の場所で実行できます。catalina.bat stopサービスを停止する。

では、パラメータを設定するにはどうすればよいでしょうか?

通常のアプローチは、catalina ファイルを変更して関連パラメータを設定することです。ここで使用する最も一般的なパラメータ設定は、たとえば catalina ファイル内の JVM およびその他の関連コンテンツです。-Xms512mすでにセットアップされていますJVM的初始堆内存512MBです、-Xmx1024mすでにセットアップされています最大堆内存1024MBです、-XX:+UseG1GC有効G1垃圾回收器-Duser.timezone=Asia/ShanghaiすでにセットアップされていますJVM的时区

ここに画像の説明を挿入します
変更後、tomcat を再起動して設定を有効にします。これは、設定の前後の違いを比較したものです。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
プログラムが正常に起動し、設定したパラメータ情報がコンソールに表示されます。

需要注意的是、実際の状況ではそうではありません不建议直接在catalina中修改これは、Tomcat サービスのアップグレードとメンテナンスには適さないため、推奨します通过setenv配置文件パラメータを設定するには、なぜ setenv を使用するのでしょうか? catalina の設定ファイルを見てみましょう。この段落では、このファイルが存在する場合、スクリプトが起動時に自動的に呼び出されることを示しています。このファイルは通常、現在の Tomcat ディレクトリには存在しません。自分で手動で作成することもできます。
ここに画像の説明を挿入します
setenv (Windows では setenv.bat、mac/linux では setenv.sh) を作成した後、異なるシステムに従って設定を追加します。構文が若干異なることに注意してください。

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

service ファイル。このファイルは Windows でのみ表示されます。通常、Tomcat サービスをシステム サービスとして登録するために使用されます。主な使用法は、bin ディレクトリに入り、service.bat install + カスタム サービス名を実行することです。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
次に、Windows サービスが現時点では開始されていないことがわかります。クリックしてコンピュータを起動または再起動すると、次回のコンピュータの再起動時に自動的に開始されます。

2.2 conf ディレクトリ

conf ディレクトリには、Tomcat サーバーのさまざまなグローバル設定ファイルが保存されます。

  • server.xml: Tomcat のメイン構成ファイル。サービス、コネクタ、エンジン、ホスト、その他のコンポーネントの構成情報が含まれます。
  • web.xml: サーブレット仕様標準に準拠した構成ファイルで、サーブレットを構成し、すべての Web アプリケーションにデフォルトの構成情報を提供するために使用されます。
  • tomcat-users.xml: 関連するロール、ユーザー、パスワード、およびレルム認証で使用されるその他の情報。
  • context.xml: すべてのホストのデフォルト構成情報。
  • catalina.policy: Java 関連のセキュリティ ポリシー設定ファイル。
  • catalina.properties: Tomcat の内部パッケージ定義およびアクセス関連の制御ファイル。
  • logging.properties: Tomcat ロガーに関連する構成情報。

2.2.1 サーバー.xml

Apache Tomcat の server.xml 設定ファイルでは、次のことができます。配置多个端口、ただし、これらの中で最も一般的なものは次のとおりです。HTTP服务的端口(デフォルトは8080)、AJP服务的端口(デフォルトは 8009)、およびSSL/TLS(即HTTPS)的端口(有効な場合、デフォルトは 8443 になる可能性がありますが、これは特定の構成によって異なります)
【1】httpコネクタポート

HTTP コネクタは、Tomcat に届く HTTP リクエストを処理するために使用されます。デフォルトでは、Tomcat はポート 8080 をリッスンします。ラベルのポート属性を変更することで、このポートを変更できます。

ここに画像の説明を挿入します
【2】AJPコネクタポート

AJP (Apache JServ Protocol) コネクタは、特に mod_jk モジュールを使用する場合、Tomcat と Apache HTTP サーバー間の通信に使用されます。デフォルトでは、Tomcat はポート 8009 をリッスンします。

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

【3】SSL/TLS(HTTPS)コネクタポート

Tomcat に HTTPS リクエストを処理させる予定の場合は、SSL/TLS コネクタを構成する必要があります。これには、SSL 証明書のキーストア (キーストア) やパスワードなどの情報の指定が含まれます。

ここに画像の説明を挿入します
这个也是默认注释的,当你需要用到https请求的时候,再去开启;certificateKeystoreFile和certificateKeystorePassword应该指向你的密钥库文件和它的密码。这些值需要根据你的实际密钥库文件和密码进行更改

2.2.2 web.xml (ほとんど変更なし)

Tomcat のインストール ディレクトリ内conf目录真ん中web.xml文件はい全局配置文件 、Tomcat サーバー全体のデフォルトのサーブレットと MIME タイプのマッピングなどを定義します。通常、グローバル サーブレット マッピング、フィルター (Filter)、リスナー (Listener) などを Tomcat サーバー全体に追加する必要がない限り、開発者はこのグローバル web.xml ファイルを頻繁に変更する必要はありません。

一些配置是可以通过注解(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 ロギングプロパティ

このファイルを編集することで、ログ レベル、形式、出力場所などを定義できます。これは、Tomcat サーバーとそのデプロイされたアプリケーションの監視とデバッグに役立ちます。

# 设置日志的根级别和处理器  
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 ディレクトリ (基本的に変更なし)

機能: Tomcat の実行に必要なライブラリ ファイル (JAR ファイル) を格納します。
注: Tomcat の古いバージョンや特定の構成では、JAR ファイルを common/lib、server/lib、shared/lib などの他のディレクトリに保存する場合がありますが、Tomcat の最新バージョンでは、コア ライブラリ ファイルを lib ディレクトリに保存することを好みます。

2.4 ログディレクトリ

機能: Tomcat 実行時のログ ファイルを保存します。
内容: Tomcat の起動、プロセスの実行中、シャットダウン中のさまざまなログ情報 (catalina.out、localhost.log など) が含まれます。

ここに画像の説明を挿入します
这里catalina.2024-7-10是通过日志滚动策略生成的,用于记录Catalina容器的日常运行日志;

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

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

通常、ログを毎日チェックする場合、Catalina.log/Catalina.out/appName.log などを選択しません。

2.5 webapps ディレクトリ

機能: Tomcat のメインの Web 公開ディレクトリ。Web アプリケーションの保存に使用されます。
コンテンツ: デフォルトでは、Web アプリケーション ファイルをこのディレクトリに配置することでアプリケーションを公開できます。 Tomcat は、このディレクトリ内のアプリケーションを自動的にスキャンし、展開します。

Web アプリの特徴は次のとおりです。
【1】自動展開: Tomcat は webapps ディレクトリ内のすべてのコンテンツを定期的にスキャンします。を置くとき WAR 文件(例: myapp.war) webapps ディレクトリに配置されると、Tomcat はこのファイルを自動的に検出し、尝试部署它 。ファイルが WAR パッケージの場合、Tomcat はまずファイルを解凍し、次に解凍されたディレクトリ構造に従ってアプリケーションをデプロイします。
【2】管理:webappsディレクトリ内のファイルを直接操作することで、Tomcat上でWebアプリケーションを簡単に管理できます。たとえば、次のように渡すことができます。删除目录来卸载应用程序、または経由替换 WAR 文件来る更新するアプリ。

【3】カスタマイズされた展開パス:Tomcat 默认将 Web 应用程序部署在 webapps 目录下、ただし、Tomcat 構成ファイル (次のように) を変更することもできます。 server.xml ) アプリケーションのデプロイメント・パスとして別のディレクトリを指定します。別のパスが定義されることはまれですが、不可能ではありません。

<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 作業ディレクトリ

機能: JSPコンパイル後に生成されるクラスファイルとサーブレットの一時ファイルを格納します。
注: このディレクトリの内容をクリアし、Tomcat を再起動して、JSP とサーブレットのコンパイル済みキャッシュをクリアします。

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

2.7 一時ディレクトリ

機能: Tomcat の実行中に生成される一時ファイルを保存します。
注: これらの一時ファイルは通常、セッション管理、ファイルのアップロードなど、Tomcat の内部操作をサポートするために使用されます。

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

3. 最後に

[1] 関連する設定を行った後、有効にするために Tomcat を再起動する必要があることがよくあります。

[2] temp ディレクトリと work ディレクトリはキャッシュ ファイルおよび一時ファイルですが、クリアする場合はバックアップを作成し、これらのファイルがまだ他のアプリケーション プロセスによって占有されていないか確認する必要があります。

[3] シャットダウンを実行すると、すぐには停止せず、Tomcat のシャットダウンが正常に行われます。状況によっては、Tomcat がシャットダウンされたかどうかを判断できます。 ;