【Tomcat目录详解】关于Tomcat你还需要了解的详细内容

希望文章能给到你启发和灵感~
如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏 支持一下博主吧~

阅读指南

  • 开篇说明
  • 一、基础环境说明
    • 1.1 硬件环境
    • 1.2 软件环境
  • 二、Tomcat的文件结构
    • 2.1 bin目录
    • 2.1.1 startup和shutdown
    • 2.1.2 Catalina
    • 2.1.3 service.bat(Windows)
    • 2.2 conf目录
      • 2.2.1 server.xml
      • 2.2.2 web.xml (很少改动)
      • 2.2.3 tomcat-users.xml
      • 2.2.4 logging.properties
    • 2.3 lib目录(基本不动)
    • 2.4 logs目录
    • 2.5 webapps目录
    • 2.6 work目录
    • 2.7 temp目录
  • 三、最后

开篇说明

Tomcat目前仍然活跃在开发人员的日常中,但是我们是否对他有更深的了解,还是只是知道如何安装配置和启动他就够了呢?本篇作为自己的总结和记录,希望有些东西是你需要的;

在这里插入图片描述

一、基础环境说明

考虑环境因素,大家适当的对比自己的软硬件环境情况分析~请仔细阅读硬件、软件环境

1.1 硬件环境

Windows 11 专业版

1.2 软件环境

开发工具:Tomcat 9.0

二、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

对于startupshutdown一定很熟悉不过了,我们日常用于快速启动和关闭tomcat服务器必须要用到的。至于后缀bat,还是用sh这个取决你的操作系统类型;

2.1.2 Catalina

关于Catalina文件,他也是tomcat的启动脚本,和startup的主要区别就在于,后者专注启动,而前者在启动时还能通过配置参数来实现其他目的;

例如,这里我用catalina来启动Tomcat,我就会这样做:输入catalina.bat start (windows系统)
在这里插入图片描述
这里是在tomcat的bin目录下执行的,如果你已经配置了环境变量,那么你可以在任意位置执行这个操作;同理,我们也可以通过catalina.bat stop来停止服务;

那么如何进行参数的配置?

通常的做法,是通过修改catalina文件,来进行相关的参数配置,而参数配置我们比较常见的就是JVM等相关的内容;例如在catalina文件中,我这里-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"
// windows
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC -Duser.timezone=Asia/Shanghai

2.1.3 service.bat(Windows)

service文件,这个文件我们只会在windows中看见,通常用于我们将Tomcat服务注册为系统服务用的;主要的用法进入bin目录,执行service.bat install + 自定义服务名;
在这里插入图片描述
在这里插入图片描述
接着我们就能在windows服务中看到,此时是没有启动的,可以点击启动,也能重启计算机他会随着下次电脑的重启而自启动;

2.2 conf目录

conf目录存放Tomcat服务器的各种全局配置文件。

  • server.xml:Tomcat的主配置文件,包含Service、Connector、Engine、Host等组件的配置信息。
  • web.xml:遵循Servlet规范标准的配置文件,用于配置servlet并为所有Web应用程序提供默认配置信息。
  • tomcat-users.xml:Realm认证时用到的相关角色、用户和密码等信息。
  • context.xml:所有host的默认配置信息。
  • catalina.policy:Java相关的安全策略配置文件。
  • catalina.properties:Tomcat内部package的定义及访问相关的控制文件。
  • logging.properties:Tomcat日志记录器相关的配置信息。

2.2.1 server.xml

在Apache Tomcat的server.xml配置文件中,你可以配置多个端口,但其中最常见的包括HTTP服务的端口(默认是8080),AJP服务的端口(默认是8009),以及SSL/TLS(即HTTPS)的端口(如果启用的话,默认可能是8443,但这取决于具体配置)
【1】http连接器端口

HTTP连接器用于处理进入Tomcat的HTTP请求。默认情况下,Tomcat监听8080端口。你可以通过修改标签的port属性来改变这个端口。

在这里插入图片描述
【2】AJP连接器端口

AJP(Apache JServ Protocol)连接器用于Tomcat与Apache HTTP服务器之间的通信,特别是当使用mod_jk模块时。默认情况下,Tomcat监听8009端口。

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

【3】SSL/TLS(HTTPS)连接器端口

如果你打算让Tomcat处理HTTPS请求,你需要配置一个SSL/TLS连接器。这涉及到指定SSL证书的密钥库(keystore)和密码等信息

在这里插入图片描述
这个也是默认注释的,当你需要用到https请求的时候,再去开启;certificateKeystoreFile和certificateKeystorePassword应该指向你的密钥库文件和它的密码。这些值需要根据你的实际密钥库文件和密码进行更改

2.2.2 web.xml (很少改动)

Tomcat安装目录下的conf目录中的web.xml文件全局配置文件,它定义了Tomcat服务器范围内默认的Servlet和MIME类型映射等。通常,这个全局的web.xml文件不需要由开发者进行频繁的修改,除非你需要为整个Tomcat服务器添加全局的Servlet映射、过滤器(Filter)、监听器(Listener)等;

一些配置是可以通过注解(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>

2.2.4 logging.properties

通过编辑这个文件,你可以定义日志的级别、格式、输出位置等。这对于监控和调试 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

2.3 lib目录(基本不动)

功能:存放Tomcat运行所需的库文件(JAR文件)。
注意:虽然某些旧版本的Tomcat或特定配置可能会将JAR文件存放在其他如common/lib、server/lib或shared/lib目录下,但现代版本的Tomcat更倾向于将核心库文件统一放在lib目录下。

2.4 logs目录

功能:存放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会自动扫描此目录下的应用程序并进行部署。

webapps的特点是:
【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>

2.6 work目录

功能:存放JSP编译后产生的class文件以及Servlet的临时文件。
注意:清空此目录下的内容,并重启Tomcat,可以达到清除JSP和Servlet编译后缓存的效果。

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

2.7 temp目录

功能:存放Tomcat运行过程中产生的临时文件。
注意:这些临时文件通常用于支持Tomcat的内部操作,如会话管理、文件上传等。

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

三、最后

【1】在进行相关配置之后,往往是需要重启Tomcat才能生效的;

【2】temp和work目录虽然是缓存文件和临时文件,但是进行清除的时候仍然需要注意做好备份,并且确认是否这些文件还被其他应用进程所占用;

【3】shutdown执行时,并不是立即停止,而是尝试优雅的关闭Tomcat,这个过程根据情况可能会持续一段时间才能停止;可通过查看tomcat端口情况来判断是否Tomcat已经关闭;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/45383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析EtherCAT `CheckProductCode` 属性:确保系统一致性与安全性

在工业自动化领域&#xff0c;EtherCAT&#xff08;Ethernet for Control Automation Technology&#xff09;已成为一种广泛应用的实时以太网协议。它的高性能、灵活性和可靠性使其成为复杂自动化任务的理想选择。然而&#xff0c;确保系统的正确配置和安全运行是使用EtherCAT…

【43页PPT】企业数据架构数据治理设计规划咨询项目建议

本项目聚焦于企业数据资产的深度挖掘与价值最大化&#xff0c;旨在通过一系列定制化策略与架构设计&#xff0c;重塑企业的数据生态体系。我们的核心任务包括&#xff1a; 企业现状深度剖析&#xff1a;全面审视企业当前的数据环境、业务流程及战略方向&#xff0c;精准把握数…

Opencv中的直方图

cv2.calcHist() 直方图是图像中像素强度分布的图形表达方式&#xff0c;统计了每一个强度值所具有的像素个数。并可以计算图像中的一个或多个通道的直方图。 dst cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])images&#xff1a;源图像&am…

Docker 基本管理及部署

目录 1.Docker概述 1.1 Docker是什么&#xff1f; 1.2 Docker的宗旨 1.3 容器的优点 1.4 Docker与虚拟机的区别 1.5 容器在内核中支持的两种技术 1.6 namespace的六大类型 2.Docker核心概念 2.1 镜像 2.2 容器 2.3 仓库 3.安装Docker 3.1 查看 docker 版本信息 4.…

Java程序打印日志

一、maven依赖 POM文件中添加以下依赖&#xff0c;maven依赖的jar包版本可以在maven central repository 查看 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.34</version><…

【C语言】《回调函数》详细解析

目录 1. 什么是回调函数&#xff1f;2. 回调函数的用途3. 回调函数的基本实现3.1 定义回调函数类型3.2 注册回调函数3.3 使用回调函数 4. 示例与输出5. 注意事项6. 参考文献7. 结束语 回调函数&#xff08;Callback Function&#xff09;在C语言中是一种非常重要且常用的编程技…

CentOS7将yum源更换为国内源保姆级教程(含一键脚本)

在 CentOS 7 中更换 YUM (Yellowdog Updater Modified) 源到国内镜像可以显著提升软件包的下载速度。以下是一种常见的方法来更换为国内源&#xff0c;例如阿里云镜像&#xff1a; 备份原有源配置文件&#xff1a; sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d…

Apple trackpad 一代在win10下使用

鼠标点的食指有的累&#xff0c;翻出来一个旧的Apple trackpad一代&#xff0c;经典的电池仓和蓝牙配置。 支持手势操作&#xff0c;双指滑动可以滚动滚动条。 使用官方 Boot Camp 驱动程序。 有个AppleWirelessTrackpad64.exe安装就可以。

FPGA上板项目(一)——点灯熟悉完整开发流程、ILA在线调试

目录 创建工程创建 HDL 代码仿真添加管脚约束添加时序约束生成 bit 文件下载ILA 在线调试 创建工程 型号选择&#xff1a;以 AXU9EG 开发板为例&#xff0c;芯片选择 xczu9eg-ffvb1156-2-i 创建 HDL 代码 注意&#xff1a;由于输入时钟为 200MHz 的差分时钟&#xff0c;因此…

一文带你入门机器学习降维算法

专栏介绍 1.专栏面向零基础或基础较差的机器学习入门的读者朋友,旨在利用实际代码案例和通俗化文字说明,使读者朋友快速上手机器学习及其相关知识体系。 2.专栏内容上包括数据采集、数据读写、数据预处理、分类\回归\聚类算法、可视化等技术。 3.需要强调的是,专栏仅介绍主…

2024年高职云计算实验室建设及云计算实训平台整体解决方案

随着云计算技术的飞速发展&#xff0c;高职院校亟需构建一个与行业需求紧密结合的云计算实验室和实训平台。以下是针对2024年高职院校云计算实验室建设的全面解决方案。 1、在高职云计算实验室的建设与规划中&#xff0c;首要任务是立足于云计算学科的精准定位&#xff0c;紧密…

4.SpringBoot自定义封装Starter实践

目录 概述旧版2.7之后自定义Starter 概述 SpringBoot自定义封装Starter实践 旧版 在SpringBoot2.7之前&#xff0c;META-INF 下 spring.factories 加 org.springframework.boot.autoconfigure.EnableAutoConfigurationXXAutoConfiguration 2.7之后 SpringBoot2.7推出新的自动配…

LeetCode 2974.最小数字游戏:排序+交换奇偶位

【LetMeFly】2974.最小数字游戏&#xff1a;排序交换奇偶位 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-number-game/ 你有一个下标从 0 开始、长度为 偶数 的整数数组 nums &#xff0c;同时还有一个空数组 arr 。Alice 和 Bob 决定玩一个游戏&#xff…

爬虫-浏览器自动化

什么是selenium selenium是浏览器自动化测试框架&#xff0c;原本用于网页测试。但到了爬虫领域&#xff0c;它又成为了爬虫的好帮手。有了 selenium&#xff0c;我们便不再需要判断网页数据加载的方式&#xff0c;只要让 selenium 自动控制浏览器&#xff0c;就像有双无形的手…

字体反爬之自动化通过字体文件生成映射字典

1、首先找到以.ttf结尾的字体文件,下载下来,以我的字体文件sfont.ttf为例 sont.ttf下载地址https://download.csdn.net/download/lingyingdon/89534953 目前只测试了.ttf文件。如果想使用woff字体文件,请自行测试 2、下载分割字体文件的软件fontforge, 安装后将安装路径添加…

【以史为镜、以史明志,知史爱党、知史爱国】中华上下五千年之-元朝

元朝是中国历史上第一个由蒙古族族建立的大统一封建王朝。完整的元王朝历史进程分为四个阶段&#xff1a; 元朝的历史让我们一笔带过&#xff0c;相信大家也不怎么喜欢看。同意的点赞&#xff01; 元朝的前身——蒙古汗国&#xff08;1206年—1271年&#xff09; 建立王朝统治—…

快速体验 Llama3 的 4 种方式,本地部署,800 tokens/s 的推理速度真的太快了!

北京时间4月19日凌晨&#xff0c;Meta在官网上官宣了Llama-3&#xff0c;作为继Llama1、Llama2和CodeLlama之后的第三代模型&#xff0c;Llama3在多个基准测试中实现了全面领先&#xff0c;性能优于业界同类最先进的模型&#xff0c;你有没有第一时间体验上呢&#xff0c;这篇文…

加入这些使用,代码变得简单即优雅!

加入这些使用&#xff0c;代码变得简单即优雅&#xff01;在Spring Boot应用中&#xff0c;拦截请求通常可以通过两种方式实现&#xff1a;使用HandlerInterceptor&#xff08;处https://mp.weixin.qq.com/s?__bizMzkzMTY0Mjc0Ng&mid2247484482&idx1&sn063cea7cda…

Apache AGE 运算符

运算符 字符串特定比较运算符 测试数据 SELECT * FROM cypher(graph_name, $$ CREATE (:Person {name: John}),(:Person {name: Jeff}),(:Person {name: Joan}),(:Person {name: Bill}) $$) AS (result agtype);Starts With 对字符串执行区分大小写的前缀搜索。 SELECT * …

String的常用方法

目录 复习与回顾数组抽象类和接口的区别 StringString常量池String常用方法 复习与回顾 数组 数组&#xff08;array&#xff09;是一种数据结构 &#xff0c;用于存储同一类型元素的容器。 数组的特点&#xff1a; 不可变性&#xff1a;数组的长度是固定的&#xff0c;一旦…