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

news2024/9/24 3:18:22

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

阅读指南

  • 开篇说明
  • 一、基础环境说明
    • 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.coloradmin.cn/o/1921016.html

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

相关文章

我们水冷使制动电阻功率密度成倍增加-水冷电阻设计工厂

先进陶瓷 我们后来发现工业应用中对占用空间最小的水冷电阻器的工业需求&#xff0c;推出了适用于中压工业应用的水冷电阻器。它的特点是两块由具有特殊性能的先进陶瓷制成的板。 使用工业电驱动装置的一个重要好处是&#xff0c;可靠的再生和动态制动系统可以补充或取代传统…

Unity 中使用状态机模式来管理UI

1. 清晰的状态管理 状态机模式允许你以结构化的方式管理不同的UI状态。每个状态&#xff08;比如主菜单、设置菜单、游戏中界面等&#xff09;都有其独立的行为和属性&#xff0c;这使得管理复杂UI逻辑变得更加清晰和可维护。 2. 简化的状态切换 状态机模式可以简化不同UI状…

Javaweb11-Filter过滤器

Filter过滤器 1.Filter的基本概念&#xff1a; 在Java Servlet中&#xff0c;Filter接口是用来处理HttpServletRequest和HttpServletResponse的对象的过滤器。主要用途是在请求到达Servlet之前或者响应离开Servlet之前对请求或响应进行预处理或后处理。 2.Filter常见的API F…

Python使用策略模式和openpyxl库创建Excel文件并追加内容

from openpyxl import load_workbook# 数据数组 data [[1, 2, 3],[4, 5, 6],[7, 8, 9] ]# 打开现有的 Excel 文件 excel_file sheetApend_example.xlsx wb load_workbook(excel_file)# 选择要追加数据的工作表 sheet_name test_Sheet2 # 指定要追加数据的工作表名称 sheet…

【微服务】SpringCloud-eureka光速入门

SpringCloud-eureka光速入门 一、Eureka 主要组件 二、工作流程 三、优势 四、Eureka-光速入门【重点】 4.1 案例准备 4.1.1 创建父工程 tingyi-shop 4.1.2 创建子工程 tingyi-goods 4.1.3 创建子工程 tingyi-order 4.1.4 案例调整 4.1.4.1 在order模块创建 RestTemp…

安装和使用vue-router

1.安装vue-router npm install vue-router2.新建页面 views > home > home.vue <script setup lang"ts"></script><template><div>首页</div> </template><style scoped></style>2.配置路由 router > i…

从LLM中完全消除矩阵乘法,效果出奇得好,10亿参数跑在FPGA上接近大脑功耗

一直以来&#xff0c;矩阵乘法&#xff08;MatMul&#xff09;稳居神经网络操作的主导地位&#xff0c;其中很大原因归结为 GPU 专门针对 MatMul 操作进行了优化。这种优化使得 AlexNet 在 ILSVRC2012 挑战赛中一举胜出&#xff0c;成为深度学习崛起的历史性标志。 在这当中&a…

HBase 在统一内容平台业务的优化实践

作者&#xff1a;来自 vivo 互联网服务器团队-Leng Jianyu、Huang Haitao HBase是一款开源高可靠性、扩展性、高性能和灵活性的分布式非关系型数据库&#xff0c;本文围绕数据库选型以及使用HBase的痛点展开&#xff0c;从四个方面对HBase的使用进行优化&#xff0c;取得了一些…

PG 逻辑备份

导出模式&#xff1a; ph_dump 只能备份单个数据库&#xff0c;不会导出角色和表空间相关的信息&#xff0c;而且恢 复的时候需要创建空数据库。 pg_dumpall 可以备份所有数据库&#xff0c;并且备份角色&#xff0c;表空间。 调用pg_dump&#xff1a; 逻辑恢复的恢复顺序&…

国漫推荐07

玄幻、奇幻 1.侠岚系列 《侠岚》&#xff08;第1至6季&#xff09; 《画江湖之侠岚》&#xff08;侠岚第7季&#xff09; 2.《斗破苍穹》 三十年河东&#xff0c;三十年河西&#xff0c;莫欺少年穷&#xff01; 3.《武动乾坤》&#xff08;第1至4季&#xff09; 4.《妖神记》…

热点观察 丨《绝区零》下载量突破5000万、中国厂商占领全球手游收入榜

7月第2周.热点趋势 1. 《绝区零》全球下载量突破5000万 2. 《Character AI》爆火后内容管控变严 3. 芬兰手游厂商Supercell宣布开发新游戏 4. 6月全球手游收入榜中国厂商前十占六 5. 韩版《贪吃蛇大冒险》6月下载亮眼 6. 苹果、三星加入AI手机大战 7. 麦当劳推出首部短剧…

STM32智能仓储管理系统教程

目录 引言环境准备晶智能仓储管理系统基础代码实现&#xff1a;实现智能仓储管理系统 4.1 数据采集模块 4.2 数据处理与决策模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;仓储管理与优化问题解决方案与优化收尾与总结 1. 引言 智能仓储管理系统…

物流智能锁在物流货运智能锁控管理中的应用

一、物流锁控管理的痛点剖析 &#xff08;一&#xff09;货物安全风险高 在传统的物流运输中&#xff0c;常用的机械锁和普通电子锁安全性有限&#xff0c;容易被非法破解或撬开。据不完全统计&#xff0c;每年因货物被盗造成的经济损失高达数十亿。这导致货物在运输途中面临…

IDEA设置代码提示忽略大小写

一、设置代码提示为忽略大小写 IDEA代码提示默认是区分大小写的&#xff0c;设置为提示忽略大小写&#xff1a; Setting——Editor——Code Completion 如图

vue vite+three在线编辑模型导入导出

文章目录 序一、1.0.0版本1.新增2.编辑3.导出4.导入 二、2.0.0版本1. 修复模型垂直方向放置时 模型会重合4. 修复了导出导入功能 现在是1:1导出导入5. 新增一个地面 视角看不到地下 设置了禁止编辑地面 地面设置为圆形6. 新增功能 可选择基本圆形 方形 圆柱形等模型以及可放置自…

每天五分钟深度学习:向量化技术在神经网络中的应用

本文重点 向量化技术,简而言之,就是利用矩阵运算(而非传统的for循环)来执行大规模的计算任务。这种技术依赖于单指令多数据(SIMD)架构,允许一个指令同时对多个数据元素执行相同的操作。例如,在向量化加法中,不再需要逐个元素进行加法操作,而是可以一次性对整个向量执…

防御课第一次作业第一天笔记整理

网络安全概述 网络安全&#xff08;Cyber Security&#xff09;是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而遭受到破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;网络服务不中断 中国网络安全市场近年来只增不…

【微信小程序知识点】自定义构建npm

在实际开发中&#xff0c;随着项目的功能越来越多&#xff0c;项目越来越复杂&#xff0c;文件目录也变得很繁琐&#xff0c;为了方便进行项目的开发&#xff0c;开发人员通常会对目录结构进行优化调整&#xff0c;例如&#xff1a;将小程序源码放到miniprogram目录下。 &…

探索最佳海外代理服务商!你知道哪些?

近期收到很多读者回复&#xff0c;咨询我有没有好用的海外代理&#xff0c;许多业务会用到海外代理&#xff0c;给大家整理了几个亲测好用的代理&#xff0c;如果有需要可以去试一试。 一、711Proxy 711Proxy的覆盖范围广&#xff0c;住宅IP质量高&#xff0c;基本上爬虫业务…

【测开能力提升-fastapi框架】fastapi路由分发

1.7 路由分发 apps/app01.py from fastapi import APIRouterapp01 APIRouter()app01.get("/food") async def shop_food():return {"shop": "food"}app01.get("/bed") async def shop_food():return {"shop": "bed&…