【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,一经查实,立即删除!

相关文章

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

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

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.…

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

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

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推出新的自动配…

爬虫-浏览器自动化

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

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

元朝是中国历史上第一个由蒙古族族建立的大统一封建王朝。完整的元王朝历史进程分为四个阶段&#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 * …

【源码开源】C#桌面应用开发:串口调试助手

c#桌面应用开发 1、环境搭建和工程创建&#xff1a;参照番茄定时器项目 工程创建参照 2、界面布局设计 3、具体功能函数 &#xff08;1&#xff09;端口扫描&#xff1a; private void btn_com_scan_Click(object sender, EventArgs e){//端口号扫描ReflashPortToComboBox(…

安装失败,已为系统安装 Microsoft Edge Webview2 Runtime

在使用微软的webview2的时候&#xff0c;有时候会出现如下错误提示&#xff1a; 解决方案&#xff1a; 1、打开电脑“控制面板”&#xff0c;找到Microsoft Edge Webview2 Runtime 2、鼠标右键点击&#xff0c;“更改”&#xff0c;按电脑指示操作执行。 3、再次安装Microsoft…

CV每日论文--2024.7.12

1、LLaVA-NeXT-Interleave: Tackling Multi-image, Video, and 3D in Large Multimodal Models 中文标题&#xff1a;LLaVA-NeXT-Interleave&#xff1a;处理大型多模态模型中的多图像、视频和 3D 简介&#xff1a;视觉指令调整在增强大型多模态模型(LMMs)的能力方面取得了显著…

事务码 BP DYNPRO_NOT_FOUND

事务码 BP DYNPRO_NOT_FOUND 使用事务 BP 时&#xff0c;模块 PBO_START_SUBSCREEN 中 SAPLBUSS 中的转储 DYNPRO_NOT_FOUND 目录 问题 双击查看详细信息时发生错误DYNPRO_NOT_FOUND 解决方案 执行事务码BUSP 重新生成屏幕 参考链接: 1621119

2w才学到的交易策略,Anzo Capital今天免费分享

花费了2w学费才学到的外汇交易策略&#xff0c;Anzo Capital今天免费分享&#xff01;那就是使用交易价格行动和利润区策略&#xff0c;在实施价格行动利润区策略时&#xff0c;关键步骤一定要严格执行&#xff0c;下面是操作的关键步骤&#xff1a; 1. 定义趋势&#xff1a;首…

获取网页logo图标

怎么获取网页logo图标的URL链接 第一种方法&#xff1a; 最常用的方法&#xff08;适用于90%的站点&#xff09;是&#xff0c;直接在访问网址首页链接后加上上/favicon.ico&#xff0c;例如&#xff1a; https://www.baidu.com/favicon.ico 第二种方法&#xff1a; 按F12&…

【逆向基础】十二、工具分享之Process Explorer

一、简介 Process Explorer是一款出色的进程资源管理器。在调试运行window系统中的程序软件时&#xff0c;使用Process Explorer可以通过工整的UI界面&#xff0c;让我们快速了解软件的进程信息&#xff0c;挂载的动态库等&#xff1b;可以帮助我们快速定位分析的方向&#xf…

python如何结束程序运行

方法1&#xff1a;采用sys.exit(0)&#xff0c;正常终止程序&#xff0c;从图中可以看到&#xff0c;程序终止后shell运行不受影响。 方法2&#xff1a;采用os._exit(0)关闭整个shell&#xff0c;从图中看到&#xff0c;调用sys._exit(0)后整个shell都重启了&#xff08;RESTAR…

30.ROM-IP核的调用

&#xff08;1&#xff09;ROM IP核简介&#xff1a; ROM是只读存储器&#xff0c;是一种只能读出事先锁存的固态半导体存储器。其特性是一旦存储资料就无法再将之改变或删除&#xff0c;并且资料也不会因为电源关闭而消失。&#xff08;掉电不丢失&#xff09; FPGA使用内部RA…

上讯信息 InforCube运维管理审计系统 RepeatSend 前台RCE漏洞复现

0x01 产品简介 上讯信息的InforCube运维管理审计系统&#xff08;InforCube OMA&#xff09;是一款新一代运维安全审计产品&#xff0c;旨在全面提升企业IT运维管理水平&#xff0c;通过细粒度授权、全过程操作记录及控制、全方位操作审计等功能&#xff0c;实现运维过程的“事…