Apache Tomcat 是一個強大的 Servlet 容器,它不僅支持 Java Servlet 和 JSP 技術,還提供了豐富的功能來幫助開發者構建和部署動態的 Web 應用。為了更好地理解和使用 Tomcat,了解其文件結構和組成部分是至關重要的。本文將深入探討 Tomcat 的目錄結構及其各個組件的作用。
Tomcat 的文件結構和組成
目錄結構
目錄 | 說明 |
---|---|
bin | 服務啟動,停止等相關程序和文件 |
conf | 配置文件 |
lib | 庫目錄 |
log | 日志目錄 |
webapps | 應用程序,應用部署目錄 |
work | jsp編譯后的結果文件,建議提前預熱訪問,升級應用后,刪除此目錄數據才能更新 |
查看tomcat相關目錄和文件
[root@ubuntu2404 tomcat]#pwd
/usr/local/src/tomcat
[root@ubuntu2404 tomcat]#ls
bin BUILDING.txt conf CONTRIBUTING.md lib LICENSE logs NOTICE README.md RELEASE-NOTES RUNNING.txt temp webapps work
[root@ubuntu2404 tomcat]#ls bin/
bootstrap.jar ciphers.sh daemon.sh migrate.bat shutdown.sh tool-wrapper.bat
catalina.bat commons-daemon.jar digest.bat migrate.sh startup.bat tool-wrapper.sh
catalina.sh commons-daemon-native.tar.gz digest.sh setclasspath.bat startup.sh version.bat
catalina-tasks.xml configtest.bat makebase.bat setclasspath.sh tomcat-juli.jar version.sh
ciphers.bat configtest.sh makebase.sh shutdown.bat tomcat-native.tar.gz
[root@ubuntu2404 tomcat]#ls conf/
Catalina context.xml jaspic-providers.xsd server.xml tomcat-users.xml web.xml
catalina.properties jaspic-providers.xml logging.properties tomcat.conf tomcat-users.xsd
[root@ubuntu2404 tomcat]#ls lib
annotations-api.jar ecj-4.35.jar servlet-api.jar tomcat-i18n-es.jar tomcat-jdbc.jar
catalina-ant.jar el-api.jar tomcat-api.jar tomcat-i18n-fr.jar tomcat-jni.jar
catalina-ha.jar jakartaee-migration-1.0.9-shaded.jar tomcat-coyote-ffm.jar tomcat-i18n-ja.jar tomcat-util.jar
catalina.jar jasper-el.jar tomcat-coyote.jar tomcat-i18n-ko.jar tomcat-util-scan.jar
catalina-ssi.jar jasper.jar tomcat-dbcp.jar tomcat-i18n-pt-BR.jar tomcat-websocket.jar
catalina-storeconfig.jar jaspic-api.jar tomcat-i18n-cs.jar tomcat-i18n-ru.jar websocket-api.jar
catalina-tribes.jar jsp-api.jar tomcat-i18n-de.jar tomcat-i18n-zh-CN.jar websocket-client-api.jar
[root@ubuntu2404 tomcat]#ls logs/
catalina.2025-05-03.log catalina.out localhost.2025-05-03.log localhost_access_log.2025-05-03.txt
[root@ubuntu2404 tomcat]#ls webapps/
docs examples host-manager manager ROOT
[root@ubuntu2404 tomcat]#ls work/
Catalina
[root@ubuntu2404 tomcat]#ls work/Catalina/
localhost
[root@ubuntu2404 tomcat]#ls work/Catalina/localhost/
docs examples host-manager manager ROOT
[root@ubuntu2404 tomcat]#ls temp/
safeToDelete.tmp
[root@ubuntu2404 tomcat]#ll -i work/Catalina/localhost/
total 28
3804287 drwxr-x--- 7 tomcat tomcat 4096 May 3 18:24 ./
3804286 drwxr-x--- 3 tomcat tomcat 4096 May 3 18:24 ../
3804293 drwxr-x--- 3 tomcat tomcat 4096 May 3 18:29 docs/
3804290 drwxr-x--- 2 tomcat tomcat 4096 May 3 18:24 examples/
3804292 drwxr-x--- 3 tomcat tomcat 4096 May 3 19:05 host-manager/
3804288 drwxr-x--- 3 tomcat tomcat 4096 May 3 18:29 manager/
3804289 drwxr-x--- 3 tomcat tomcat 4096 May 3 18:28 ROOT/
[root@ubuntu2404 tomcat]#ll -i webapps/
total 28
3803488 drwxr-x--- 7 tomcat tomcat 4096 Apr 1 22:40 ./
3803473 drwxr-xr-x 9 tomcat tomcat 4096 May 3 18:17 ../
3803491 drwxr-x--- 16 tomcat tomcat 4096 May 3 18:17 docs/
3803517 drwxr-x--- 7 tomcat tomcat 4096 May 3 18:17 examples/
3803578 drwxr-x--- 6 tomcat tomcat 4096 May 3 18:17 host-manager/
3803584 drwxr-x--- 6 tomcat tomcat 4096 May 3 18:17 manager/
3803489 drwxr-x--- 3 tomcat tomcat 4096 May 3 18:17 ROOT/
[root@ubuntu2404 tomcat]#tree work/Catalina/localhost/
work/Catalina/localhost/
├── docs
│ └── org
│ └── apache
│ └── jsp
│ └── WEB_002dINF
│ └── jsp
├── examples
│ └── org
│ └── apache
│ └── jsp
│ └── WEB_002dINF
│ └── jsp
├── host-manager
│ └── org
│ └── apache
│ └── jsp
│ └── WEB_002dINF
│ └── jsp
├── manager
│ └── org
│ └── apache
│ └── jsp
│ └── WEB_002dINF
│ └── jsp
└── ROOT└── org└── apache└── jsp29 directories, 2 files
[root@ubuntu2404 tomcat]#curl http://192.168.1.20:8080/
#當訪問過后,work目錄中生成新文件
[root@ubuntu2404 tomcat]#tree work/Catalina/localhost/
work/Catalina/localhost/
├── docs
│ └── org
│ └── apache
│ └── jsp
│ └── WEB_002dINF
│ └── jsp
├── examples
│ └── org
│ └── apache
│ └── jsp
│ └── WEB_002dINF
│ └── jsp
├── host-manager
│ └── org
│ └── apache
│ └── jsp
│ └── WEB_002dINF
│ └── jsp
├── manager
│ └── org
│ └── apache
│ └── jsp
│ └── WEB_002dINF
│ └── jsp
└── ROOT└── org└── apache└── jsp├── index_jsp.class #字節碼文件└── index_jsp.java #servlet文件#tomcat會自動的將jsp文件生成java源文件,再編譯成class文件
[root@ubuntu2404 tomcat]#less work/Catalina/localhost/ROOT/org/apache/jsp/index_jsp.java
/** Generated by the Jasper component of Apache Tomcat* Version: Apache Tomcat/11.0.6* Generated at: 2025-05-03 11:25:58 UTC* Note: The last modified time of this file was set to* the last modified time of the source file after* generation to assist with modification tracking.*/
package org.apache.jsp;import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.jsp.*;public final class index_jsp extends org.apache.jasper.runtime.HttpJspBaseimplements org.apache.jasper.runtime.JspSourceDependent,org.apache.jasper.runtime.JspSourceImports,org.apache.jasper.runtime.JspSourceDirectives {private static final jakarta.servlet.jsp.JspFactory _jspxFactory =jakarta.servlet.jsp.JspFactory.getDefaultFactory();private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;private static final java.util.Set<java.lang.String> _jspx_imports_packages;private static final java.util.Set<java.lang.String> _jspx_imports_classes;static {_jspx_imports_packages = new java.util.LinkedHashSet<>(4);_jspx_imports_packages.add("jakarta.servlet");_jspx_imports_packages.add("jakarta.servlet.http");
配置文件和日志
配置文件說明
官方幫助文檔:https://tomcat.apache.org/tomcat-10.1-doc/index.html
在tomcat安裝目錄下的 conf 子目錄中,有以下的 tomcat 的配置文件
文件名 | 說明 |
---|---|
server.xml | 主配置文件 |
web.xml | 每個webapp只有“部署”后才能被訪問,它的部署方式通常由web.xml進行定義,其存放位置為WEB-INF/目錄中;此文件為所有的webapps提供默認部署相關的配置,每個web應用也可以使用專用配置文件,來覆蓋全局文件 |
context.xml | 用于定義所有web應用均需加載的Context配置,此文件為所有的 webapps提供默認配置,每個web應用也可以使用自已專用的配置,它通常由專用的配置文件context.xml來定義,其存放位置為WEB-INF/目錄中,覆蓋全局的文件 |
tomcat-users.xml | 用戶認證的賬號和密碼文件 |
catalina.policy | 當使用security選項啟動tomcat時,用于為tomcat設置安全策略 |
catalina.properties | Tomcat 環境變量的配置,用于設定類加載器路徑,以及一些與JVM調優相關參數 |
logging.properties | Tomcat 日志系統相關的配置,可以修改日志級別和日志路徑等 |
注意:配置文件大小寫敏感
查看配置文件
[root@ubuntu2404 conf]#pwd
/usr/local/src/tomcat/conf
[root@ubuntu2404 conf]#wc -l context.xml jaspic-providers.xsd server.xml tomcat-users.xml web.xml catalina.properties jaspic-providers.xml logging.properties tomcat-users.xsd 31 context.xml52 jaspic-providers.xsd154 server.xml56 tomcat-users.xml4735 web.xml198 catalina.properties23 jaspic-providers.xml76 logging.properties59 tomcat-users.xsd5384 total
主要配置文件內容
[root@ubuntu2404 tomcat]#grep -v '\-\-' conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>Licensed to the Apache Software Foundation (ASF) under one or morecontributor license agreements. See the NOTICE file distributed withthis 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 withthe License. You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS"