当前位置: 首页 > news >正文

web server apache tomcat11-01-官方文档入门介绍

前言

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。

开源项目

同时也为从零手写实现 tomcat 提供一些基础和特性的思路。

minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。

系列文章

web server apache tomcat11-01-官方文档入门介绍

web server apache tomcat11-02-setup 启动

web server apache tomcat11-03-deploy 如何部署

web server apache tomcat11-04-manager 如何管理?

web server apache tomcat11-06-Host Manager App -- Text Interface

web server apache tomcat11-07-Realm Configuration

web server apache tomcat11-08-JNDI Resources

web server apache tomcat11-09-JNDI Datasource

web server apache tomcat11-10-Class Loader

...

简介

对于管理员和 Web 开发人员来说,在开始之前,有一些重要的信息您应该熟悉。本文档作为对 Tomcat 容器背后一些概念和术语的简要介绍,以及在需要帮助时应该去哪里的指南。

术语

在阅读这些文档的过程中,您会遇到许多术语;一些是特定于 Tomcat 的,而另一些是由 Servlet 和 JSP 规范定义的。

  • 上下文(Context)- 简而言之,上下文是一个 Web 应用程序。

如果您发现需要添加更多术语到此部分,请告诉我们。

目录和文件

以下是一些关键的 Tomcat 目录:

  • /bin - 启动、关闭和其他脚本。*.sh 文件(对于 Unix 系统)是 *.bat 文件(对于 Windows 系统)的功能副本。由于 Win32 命令行缺少某些功能,因此这里有一些额外的文件。
  • /conf - 配置文件和相关的 DTD。这里最重要的文件是 server.xml。这是容器的主要配置文件。
  • /logs - 默认情况下存放日志文件。
  • /webapps - 这是您的 Web 应用程序的位置。

CATALINA_HOME 和 CATALINA_BASE

在文档中,有两个属性的引用:

  • CATALINA_HOME:代表您的 Tomcat 安装的根目录,例如 /home/tomcat/apache-tomcat-11.0.0 或 C:\Program Files\apache-tomcat-11.0.0。
  • CATALINA_BASE:代表特定 Tomcat 实例的运行时配置的根目录。如果您想在一台机器上运行多个 Tomcat 实例,请使用 CATALINA_BASE 属性。

如果您将这两个属性设置为不同的位置,那么 CATALINA_HOME 位置包含静态资源,例如 .jar 文件或二进制文件。CATALINA_BASE 位置包含配置文件、日志文件、部署的应用程序以及其他运行时要求。

为什么使用 CATALINA_BASE

默认情况下,CATALINA_HOME 和 CATALINA_BASE 指向同一个目录。当您需要在一台机器上运行多个 Tomcat 实例时,手动设置 CATALINA_BASE。这样做有以下好处:

  • 更容易管理升级到较新版本的 Tomcat。因为所有具有单个 CATALINA_HOME 位置的实例共享一组 .jar 文件和二进制文件,您可以轻松地将文件升级到较新版本,并将更改传播到使用相同 CATALIA_HOME 目录的所有 Tomcat 实例。
  • 避免重复使用相同的静态 .jar 文件。
  • 可以共享某些设置,例如 setenv shell 或 bat 脚本文件(取决于您的操作系统)。

CATALINA_BASE 的内容

在开始使用 CATALINA_BASE 之前,请先考虑并创建 CATALINA_BASE 使用的目录树。请注意,如果您没有创建所有推荐的目录,Tomcat 将自动创建这些目录。如果它无法创建所需的目录,例如由于权限问题,Tomcat 将无法启动,或者可能无法正常工作。

考虑以下目录列表:

  • 包含 setenv.sh、setenv.bat 和 tomcat-juli.jar 文件的 bin 目录。
    • 推荐:否。
    • 查找顺序:首先检查 CATALINA_BASE;然后回退到 CATALINA_HOME。
  • 包含要添加到类路径的其他资源的 lib 目录。
    • 推荐:是,如果您的应用程序依赖于外部库。
    • 查找顺序:首先检查 CATALINA_BASE;其次加载 CATALINA_HOME。
  • 用于特定实例日志文件的 logs 目录。
    • 推荐:是。
  • 用于自动加载的 Web 应用程序的 webapps 目录。
    • 推荐:是,如果您要部署应用程序。
    • 查找顺序:仅检查 CATALINA_BASE。
  • 包含已部署的 Web 应用程序的临时工作目录的 work 目录。
    • 推荐:是。
  • JVM 用于临时文件的 temp 目录。
    • 推荐:是。

我们建议您不要更改 tomcat-juli.jar 文件。但是,如果您需要自己的日志记录实现,可以将 tomcat-juli.jar 文件替换为特定 Tomcat 实例的 CATALINA_BASE 位置。

我们还建议您将所有配置文件从 CATALINA_HOME/conf 目录复制到 CATALINA_BASE/conf/ 目录。如果在 CATALINA_BASE 中缺少配置文件,将不会回退到 CATALINA_HOME。因此,这可能会导致失败。

至少,CATALINA_BASE 必须包含:

  • conf/server.xml
  • conf/web.xml
    • 包括 conf 目录。否则,Tomcat 将无法启动,或无法正常工作。

有关高级配置信息,请参阅 RUNNING.txt 文件。

如何使用 CATALINA_BASE

CATALINA_BASE 属性是一个环境变量。您可以在执行 Tomcat 启动脚本之前设置它,例如:

  • 在 Unix 上:CATALINA_BASE=/tmp/tomcat_base1 bin/catalina.sh start
  • 在 Windows 上:CATALINA_BASE=C:\tomcat_base1 bin/catalina.bat start

配置 Tomcat

本节将向您介绍在配置容器期间使用的基本信息。

所有配置文件中的信息都在启动时读取,这意味着对文件的任何更改都需要重新启动容器。

寻求帮助

虽然我们已尽力确保这些文档写得清晰易懂,但我们可能会漏

掉一些内容。以下是一些网站和邮件列表,以防您遇到困难。

请注意,一些问题和解决方案在不同版本的 Tomcat 之间可能会有所不同。

在网络上搜索时,会有一些文档与 Tomcat 11 无关,而仅与早期版本有关。

  • 当前文档 - 大多数文档将列出潜在的问题。请务必彻底阅读相关文档,这将节省您大量的时间和精力。没有什么比搜索网络更好的了,只是发现答案一直在您眼前!
  • Tomcat FAQ
  • Tomcat Wiki
  • jGuru 的 Tomcat FAQ
  • Tomcat 邮件列表档案 - 许多网站存档了 Tomcat 邮件列表。由于链接随时间而变化,请点击此处搜索 Google。
  • TOMCAT-USER 邮件列表 - 您可以在此订阅。如果您没有收到回复,那么您的问题可能已在列表存档或常见问题解答中得到了解答。尽管有时会提出并回答一般的 Web 应用程序开发问题,但请将您的问题重点放在 Tomcat 特定问题上。
  • TOMCAT-DEV 邮件列表 - 您可以在此订阅。此列表专用于讨论 Tomcat 本身的开发。有关 Tomcat 配置以及开发和运行应用程序时遇到的问题,通常更适合在 TOMCAT-USER 列表上讨论。

如果您认为文档中应该包含某些内容,请务必在 TOMCAT-DEV 列表上让我们知道。

参考资料

https://tomcat.apache.org/tomcat-11.0-doc/introduction.html

相关文章:

web server apache tomcat11-01-官方文档入门介绍

前言 整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。 开源项目 同时也为从零手写实现 tomcat 提供一些基础和特性的思路。 minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。 系列文章 web server apac…...

java的总结

由于最近已经开始做项目了,所以对java的基础知识的学习都是一个离散化的状态没有一个很系统的学习,都是哪里不会就去学哪里。 先来讲一下前后端的区别吧 在我的理解前端就是:客户端在前端进行点击输入数据,前端将这些数据整合起来…...

解决npm run dev跑项目,发现node版本不匹配,怎么跑起来?【已解决】

首先问题点就是我们npm run dev 运行项目的时候发现出错,跑不起来,类型下面这种 这里的出错的原因在于我们的node版本跟项目的版本不匹配 解决办法 我这里的问题是我的版本是node14的,然后项目需要node20的,执行下面的就可以正…...

flood_fill 算法|图形渲染

flood fill 算法常常用来找极大连通子图,这是必须掌握的基本算法之一! 图形渲染 算法原理 我们可以利用DFS遍历数组把首个数组的值记为color,然后上下左右四个方向遍历二维数组数组如果其他方块的值不等于color 或者越界就剪枝 return 代码…...

Promise简单概述

一. Promise是什么? 理解 1.抽象表达: Promise是一门新的技术(ES6规范) Promise是JS中进行异步编程的新解决方案(旧方案是单纯使用回调函数) 异步编程:包括fs文件操作,数据库操作(Mysql),AJAX,定时器 2.具…...

【Java集合进阶】数据结构(平衡二又树旋转机制)数据结构(红黑树、红黑规则、添加节点处理方案详解)

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …...

富文本在线编辑器 - tinymce

tinymce 项目是一个比较好的富文本编辑器. 这里有个小demo, 下载下来尝试一下, 需要配置个本地服务器才能够访问, 我这里使用的nginx, 下面是我的整个操作过程: git clone gitgitee.com:chick1993/layui-tinymce.git cd layui-tinymcewget http://nginx.org/download/nginx-1.…...

从汇编代码理解数组越界访问漏洞

数组越界访问漏洞是 C/C 语言中常见的缺陷,它发生在程序尝试访问数组元素时未正确验证索引是否在有效范围内。通常情况下,数组的索引从0开始,到数组长度减1结束。如果程序尝试访问小于0或大于等于数组长度的索引位置,就会导致数组…...

skynet 使用protobuf

一、安装protobuf 下面的操作方法都是在 centos 环境下操作 #下载 Protocol Buffers 源代码: #您可以从 Protocol Buffers 的 GitHub 仓库中获取特定版本的源代码。使用以下命令克隆仓库 git clone -b v3.20.3 https://github.com/protocolbuffers/protobuf.git#编译…...

Vue Router 4 与 Router 3 路由配置与区别

文章目录 路由安装路由配置vue-router 3.x版本写法配置路由使用路由 vue-router 4.x版本写法配置路由使用路由 Vue Router 4 与 Vue Router 3 区别 路由安装 Vue 2 (使用 Vue Router 3) :npm install vue-router3 Vue 3 (使用 Vue Router 4) :npm insta…...

python借助elasticsearch实现标签匹配计数

给定一组标签 [{“tag_id”: “1”, “value”: “西瓜”}, {“tag_id”: “1”, “value”: “苹果”}],我想精准匹配到现有的标签库中存在的标签并记录匹配成功的数量。 标签id(tag_id)标签名(tag_name)标签值(tag_name )1水果西瓜1水果苹果1水果橙子2动物老虎 …...

Yolo-world+Python-OpenCV之摄像头视频实时目标检测

上一次介绍了如何使用最基本的 Yolo-word来做检测,现在我们在加opencv来做个实时检测的例子 基本思路 1、读取离线视频流 2、将视频帧给yolo识别 3、根据识别结果 对视频进行绘制边框、加文字之类的 完整代码如下: import datetimefrom ultralytics …...

vue-treeselect 的基本使用

vue-treeselect 的基本使用 1. 效果展示2. 安装 插件3. 引入组件4. 代码 1. 效果展示 2. 安装 插件 vue-treeselect是一个树形的下拉菜单,至于到底有多少节点那就要看你的数据源有多少层了,挺方便的。下面这个这个不用多说吧,下载依赖 npm in…...

Vue(二)

文章目录 1.条件渲染1.关于js中的false的判定2.基本介绍3.v-if1.需求分析2.代码实例 4.v-show实现5.v-if与v-show比较6.课后练习 2.列表渲染1.代码实例2.课后练习 3.组件化编程1.基本介绍2.实现方式一_普通方式2.实现方式二_全局组件方式3.实现方式三_局部组件方式 4.生命周期和…...

Python基于深度学习的车辆特征分析系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

推理还原的干货

故事的递进还原 从下层故事到上层故事 设定还原 还原的逻辑 隐藏信息拼凑、因果导致果推因、规则还原现象 设计思路: 真解答 真解答的关键信息 推理逻辑链 哪些环节可以被误导 如何把关键信息变成伪解答 解释变形信息 给出识别变形信息的方法或线索 其实看似一个…...

【Redis 神秘大陆】006 灾备方案

六、Redis 灾备方案 6.1 存储方案 6.1.1 基础对比 RDB持久化AOF持久化原理周期性fork子进程生成持久化文件每次写入记录命令日志文件类型二进制dump快照文件文本appendonly日志文件触发条件默认超过300s间隔且有1s内超过1kb数据变更永久性每秒fsync一次文件位置配置文件中指…...

【Java基础】17.异常处理

文章目录 前言一、异常的概念1.异常的3种类型2.支持异常处理的关键字和类 二、Exception 类的层次三、内置异常类1.非检查性异常2.检查性异常类 四、异常处理1.捕获异常2.多重捕获块3.throws/throw 关键字1.throw 关键字2.throws 关键字 3.finally关键字 五、编译时异常处理方式…...

【python】flask结合SQLAlchemy,在视图函数中实现对数据库的增删改查

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

APIGateway的认证

APIGateway的支持的认证如下: 我们从表格中可以看到,HTTP API 不支持资源策略的功能,另外是通过JWT的方式集成Cognito的。 对于REST API则是没有显示说明支持JWT认证,这个我们可以通过Lambda 自定义的方式来实现。 所以按照这个…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制&#xff0…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...