TOMCAT的安装与基本信息

一、TOMCAT简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。

官网: Apache Tomcat® - Welcome!

官网文档: Apache Tomcat 8 (8.5.99) - Documentation Index

帮助文档:

Apache Tomcat Home - Apache Tomcat - Apache Software Foundation         

FAQ - Apache Tomcat - Apache Software Foundatio

二、TOMCAT安装

1.JDK介绍

JDK(Java Development Kit)是 Java 语言的软件开发工具包,它包含了编译、运行Java应用程序所需的全部组件。主要包括以下几个部分:

javacJava 编译器,用于将源代码(.java 文件)编译为字节码文件(.class 文件)。
javaJava 运行时环境,负责加载和执行字节码文件。
javadocJava 文档生成工具,用于从源代码注释中提取信息生成API文档。
jarJava 打包工具,可以将多个类文件打包成一个.jar文件。
jdbJava 调试器,用于调试Java程序。

jps, jinfo, jmap, jhat,

jstack, jstat 等

这些是用于监控和管理Java虚拟机(JVM)的实用工具。
jmod在较新版本的JDK中引入的一个模块化工具,用于处理Java模块化系统中的模块。
jshell自JDK 9起引入的交互式Java Shell工具,可进行快速原型设计和学习Java语法。

JDK在Linux中默认是安装的,但是安装的是openjdk

OpenJDK:

 1.是一个开源项目,遵循GPL v2许可协议(部分组件使用不同的兼容许可证),由全球的开发者社区共同维护和开发,包括但不限于Oracle和其他公司。
2.通常被视为Java官方参考实现的基础,任何Java版本的新特性首先会出现在OpenJDK中。
3.更新频率较快,由于社区驱动,新特性和错误修复的集成速度可能更快。
4.不包含一些商业特性,如Flight Recorder(但后来也开源了)、Mission Control等工具,以及某些性能优化或特定平台的支持。
5.多数Linux发行版默认提供的Java环境就是基于OpenJDK构建的。
Oracle JDK:

1.直到Java SE 11之前,Oracle JDK一直是Oracle公司发布的免费供个人使用的JDK版本,并为企业用户提供长期支持(LTS)版本。
2.包含了一些OpenJDK没有的额外商业特性和服务,比如上述提到的高级分析工具和可能存在的性能增强。
3.在授权方面,自Java SE 11起,Oracle JDK对商业用途开始实施订阅制收费模式,非商业用户仍然可以免费下载更新和安全补丁,但需要遵循Oracle的技术支持策略。
4.Oracle JDK曾经提供更稳定且及时的技术支持,尤其是对于付费的企业用户。
总结来说,在大多数情况下,OpenJDK与Oracle JDK在核心功能上差异较小,两者可以互换使用。然而,Oracle JDK针对企业级应用提供了更多的服务和支持,而OpenJDK则更适合那些寻求完全开源解决方案并愿意接受社区支持的开发者和组织。随着Java生态的发展,越来越多的第三方厂商也开始发布基于OpenJDK的长期支持版本,为用户提供与Oracle JDK相媲美的稳定性和技术

2.安装Oracle JDK

安装包下载官方链接:Java Downloads | Oracle

安装包下载需要登录,所以提前准备好安装包

ram安装

事先准备好rmp包,而后yum install  安装,或者使用日rpm  -ivh  安装包名称;进行安装

安装好之后,找到安装目录

在该目录下可以看到很多执行文件,就是一些需要用到的java工具

为了让系统能够识别并使用这个JDK版本作为默认Java环境,需要设置一个环境变量

写在开机自动检测的文件当中

对于全局生效(所有用户):编辑 /etc/profile 或 /etc/profile.d/*.sh文件。

对于仅当前用户生效:编辑 ~/.bashrc 或 ~/.bash_profile 文件。

export JAVA_HOME=/usr/java/default
#设置了JAVA_HOME环境变量,它指向Java开发工具包(JDK)的安装目录。
 
export PATH=$JAVA_HOME/bin:$PATH
#修改了系统PATH环境变量,在原有PATH值前添加了 $JAVA_HOME/bin。这样一来,在执行java等命令时
#系统会在指定的Java bin目录下查找并优先执行相应的命令。也就是先执行$JAVA_HOME里的Java命令
#找到相应的命令后,立即停止查找
 
export JRE_HOME=$JAVA_HOME/jre
#非必须项,但常见做法。设置了JRE_HOME环境变量,指向Java运行时环境(JRE)的安装目录
#通常位于JDK安装目录下的jre子目录。
 
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
#非必须项。设置了CLASSPATH环境变量,用于Java应用程序加载类文件时搜索的路径列表。
#在早期Java版本中,需要通过CLASSPATH来指定自定义类库的位置。

3.安装TOMCAT

安装tomcat可以使用yum install,但是,yum源中的版本过于老旧,所以不推荐 

可以在官方网站下载好较新版本的安装包,而后进行二进制安装

官方网站与镜像下载站点

Apache Tomcat® - Apache Tomcat 8 Software Downloads

Index of /apache/tomcat

[root@localhost ~]#rpm -ivh jdk-8u201-linux-x64.rpm
#安装JDK包
警告:jdk-8u201-linux-x64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ec551f03: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...1:jdk1.8-2000:1.8.0_201-fcs        ################################# [100%]
[root@localhost ~]#cd /usr/java/jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]#ll
总用量 25980[root@localhost jdk1.8.0_201-amd64]#vim /etc/profile
#添加环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost jdk1.8.0_201-amd64]#source /etc/profile
#刷新配置文件
[root@localhost tomcat]#tar zxvf apache-tomcat-9.0.16.tar.gz 
[root@localhost tomcat]#cp -r apache-tomcat-9.0.16 /usr/local/tomcat
[root@localhost tomcat]#cd /usr/local/tomcat/
[root@localhost tomcat]#/usr/local/tomcat/bin/startup.sh
#启动tomcat  #catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh 
#关闭服务   #catalina.sh stop添加到
[root@localhost bin]#useradd -s /sbin/nologin tomcat
#新建用户
[root@localhost local]#chown tomcat:tomcat tomcat/ -R
#修改属主和属组[root@localhost ~]#cat > /usr/lib/systemd/system/tomcat.service <<EOF
[Unit]
Description=Tomcat
After=syslog.target network.target[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat[Install]
WantedBy=multi-user.targetEOF[root@localhost local]#systemctl daemon-reload
[root@localhost local]#systemctl start tomcat
[root@localhost local]#ss -ntap |grep 8080

三、配置文件介绍及核心组件

(一)配置文件

使用tree命令可以查看到在/usr/local/tomcat/目录下有好多文件

1.目录文件

bin存放启动和关闭 Tomcat 的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh 三个文件
conf存放 Tomcat 服务器的各种配置文件,比较常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。
lib存放 Tomcat 服务器的 jar 包,一般不作任何改动,除非连接第三方服务
logs存放 Tomcat 日志 catalina.out
temp存放 Tomcat 运行时产生的文件
webapps部署Web应用程序的地方。将WAR文件或解压后的目录放在这里,Tomcat会自动检测并部署这些应用
workTomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到(升级版本时注意要删除里面的缓存)

2.bin下的启动文件

以.bat结尾的文件一般为windows环境下的相关文件

以.sh结尾的文件为Unix/Linux环境下的相关文件

其中最常用的三个文件为

catalina.sh:Unix/Linux平台下启动、停止和管理Tomcat服务器的主要脚本

startup.sh:启动Tomcat服务器的脚本。

shutdown.sh:关闭Tomcat服务器的脚本。

3.conf下的子配置文件

Catalina:这不是一个文件,而是指Tomcat服务器的核心容器。它负责处理所有的Web应用请求,并且通过加载conf目录下的配置文件来管理服务器的行为。

catalina.properties:这个文件包含了Catalina容器的一些全局属性设置,例如日志路径、临时工作目录、JMX设置等。

jaspic-providers.xml:Java Authentication and Authorization Service Provider Contract for Containers (JAAS) 的提供者配置文件,用于定义和配置安全认证与授权的服务提供商。

jaspic-providers.xsd:对应的XML模式定义文件(XSD),用来验证jaspic-providers.xml文件是否遵循正确的结构和内容规范。

logging.properties:Tomcat的日志系统配置文件,定义了各种日志级别、日志输出位置以及格式化样式。

server.xml:Tomcat服务器的主要配置文件,包括端口号设置、连接器配置(HTTP/HTTPS/AJP)、引擎、主机、上下文(Web应用程序)以及其他全局服务配置。

tomcat-users.xml:用户账号和权限信息的配置文件,定义了可以访问Tomcat Manager应用和其他受保护资源的用户名、密码以及角色分配。

tomcat-users.xsd:同样作为模式定义文件,用于验证tomcat-users.xml文件的格式正确性。

web.xml:位于conf/webapps/ROOT/WEB-INF或全局配置目录下,这是Servlet容器的默认部署描述符,定义了所有Web应用通用的初始化参数、Servlet映射、过滤器、监听器等配置。对于每个单独的应用,也会有各自的web.xml文件放置在各自的WEB-INF目录内。

4.日志文件与临时、缓存文件

(二)组件

Catalina Container Catalina是Tomcat的主要容器,它负责管理整个请求处理生命周期。Catalina遵循Servlet和JavaServer Pages (JSP) 规范,以处理HTTP请求并生成响应。Catalina内部有多个层次的容器结构,包括Engine、Host、Context和Wrapper。

       Engine:引擎,代表整个Catalina Servlet容器,它可以包含多个虚拟主机(Host)。

       Host:虚拟主机,对应一个或多个域名/IP地址,每个Host可以部署多个Web应用程序。

       Context:上下文,代表一个Web应用程序,通常对应于WAR文件解压后的目录结构。

       Wrapper:最底层容器,封装了一个具体的Servlet实例。

Connector Connector是Tomcat与客户端进行通信的关键组件,它监听指定端口上的HTTP请求,并将这些请求传递给相应的Container进行处理。例如,HTTP/1.1协议的Connector会监听8080端口(默认配置),AJP Connector则监听8009端口用于与前端代理服务器如Apache HTTP Server进行通信。

Jasper Jasper是Tomcat内置的JSP编译器和容器,负责将JSP页面转换为Java Servlet源代码,然后编译成字节码并加载到容器中执行。

Web Applications Manager (Manager App) Manager是一个Web应用程序,提供了通过浏览器界面管理Tomcat上部署的应用程序的功能,比如部署新的WAR文件、启动、停止及删除已部署的应用等。

Host Manager Host Manager也是Web应用程序,主要用于管理和配置Tomcat中的虚拟主机。

Libraries and Classloaders Tomcat包含一组库文件(位于lib目录下),它们包含了运行时所需的类库和Tomcat自身功能实现所需要的类。同时,Tomcat具有复杂的类加载机制,确保不同Web应用程序之间的类隔离和资源加载。

Security Manager 安全管理器可选地在Tomcat中启用,用于实施更细粒度的安全策略控制,限制Web应用程序访问系统资源的能力。

Logging System Tomcat自带日志系统,支持灵活的日志级别设置以及多种输出格式,通过conf/logging.properties配置文件进行定制。

Global JNDI Resources Tomcat提供对Java Naming and Directory Interface (JNDI)的支持,允许在全局范围内定义和查找资源,例如数据库连接池、邮件服务等。

1.组件分层和分类

2.核心组件

(三)TOMCAT请求过程

#接收请求
 
'当客户端(通常是Web浏览器)向Tomcat服务器发送一个HTTP请求时,请求首先被监听在
特定端口上的Connector组件接收。例如,对于默认配置,HTTP Connector通常监听8080端口'
 
#解析请求
'Connector接收到请求后,会根据HTTP协议规范对请求进行解析,提取出请求方法(GET、
POST等)、请求URI、HTTP头信息以及可能存在的请求体内容'
 
#路由请求到适当的Context:
'解析后的请求将被传递给Engine容器,Engine通过匹配请求的Host头或IP地址找到对应的虚拟
主机(Host)。
Host接着根据请求URI找到关联的Web应用程序Context,也就是WAR文件解压后部署的应用目录。'
 
#查找并执行Servlet
'Context容器负责查找请求URI映射到的Servlet,并实例化或重用该Servlet。
如果请求的URL与某个Servlet的URL映射规则相匹配,则调用Servlet的service()方法来处理请求'
 
#处理请求
'在Servlet内部,根据请求的方法和请求参数,调用相应的doGet()、doPost()等方法处理请求数
据,并生成响应结果。'
 
#创建响应
'Servlet处理完成后,返回一个HttpServletResponse对象,其中包含了状态码、响应头和响应
体内容(如HTML页面、JSON数据或其他格式的内容)。'
 
#写回响应
'Context将Servlet生成的响应传递给Host,再由Host传递给Engine,最终由Engine中的
Connector将响应数据封装成HTTP响应报文并通过网络发送回客户端。'
 
#清理资源:
'在整个处理过程中,Tomcat还负责管理连接、线程池以及其他系统资源,确保请求处理完毕后释放
相关资源以供后续请求使用'
 
#生命周期事件通知:
'Tomcat在应用启动、停止、上下文初始化、销毁等阶段还会触发相应的生命周期事件,以便开发者
能够插入自定义的初始化逻辑或资源清理操作。'

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

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

相关文章

IO 与 NIO

优质博文&#xff1a;IT-BLOG-CN 一、阻塞IO / 非阻塞NIO 阻塞IO&#xff1a;当一条线程执行read()或者write()方法时&#xff0c;这条线程会一直阻塞直到读取到了一些数据或者要写出去的数据已经全部写出&#xff0c;在这期间这条线程不能做任何其他的事情。 非阻塞NIO&…

记录踩过的坑-macOS下使用VS Code

目录 切换主题 安装插件 搭建Python开发环境 装Python插件 配置解释器 打开项目 打开终端 切换主题 安装插件 方法1 方法2 搭建Python开发环境 装Python插件 配置解释器 假设解释器已经通过Anaconda建好&#xff0c;只需要在VS Code中关联。 打开项目 打开终端

ArmV8架构

Armv8/armv9架构入门指南 — Armv8/armv9架构入门指南 v1.0 documentation 上面只是给了一个比较好的参考文档 其他内容待补充

AutoSAR(基础入门篇)13.5-Mcal Mcu时钟的配置

目录 一、EB的Mcu模块结构 二、时钟的配置 对Mcu的配置主要就是其时钟树的配置,但是EB将GTM、ERU等很多重要的模块也都放在了Mcu里面做配置,所以这里的Mcu是一个很庞大的模块, 我们目前只讲时钟树的部分 一、EB的Mcu模块结构 1. 所有的模块都基本上是这么些配置类别,Mc…

阅读笔记 | Transformers in Time Series: A Survey

阅读论文&#xff1a; Wen, Qingsong, et al. “Transformers in time series: A survey.” arXiv preprint arXiv:2202.07125 (2022). 这篇综述主要对基于Transformer的时序建模方法进行介绍。论文首先简单介绍了Transformer的基本原理&#xff0c;包括位置编码、多头注意力机…

回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测&#xff08;完整…

自动化测试介绍、selenium用法(自动化测试框架+爬虫可用)

文章目录 一、自动化测试1、什么是自动化测试&#xff1f;2、手工测试 vs 自动化测试3、自动化测试常见误区4、自动化测试的优劣5、自动化测试分层6、什么项目适合自动化测试 二、Selenuim1、小例子2、用法3、页面操作获取输入内容模拟点击清空文本元素拖拽frame切换窗口切换/标…

十五 超级数据查看器 讲解稿 外观设置

十五 超级数据查看器 讲解稿 外观设置 视频讲座地址 讲解稿全文: 大家好&#xff0c;今天讲解超级数据查看器,详情界面的外观设置。 首先&#xff0c;我们打开超级数据查看器。 本节课以成语词典为例来做讲述。 我们打开成语词典这个表&#xff0c;随便选一条记录点击&#x…

【虚拟机安装centos7后找不到网卡问题】

最近开始学习linux&#xff0c;看着传智播客的教学视频学习&#xff0c;里面老师用的是centos6.5&#xff0c;我这边装的是centos7最新版的 结果到了网络配置的这一节&#xff0c;卡了我好久。 我在centos一直找不到我的网卡eth0&#xff0c;只有一个回环网口&#xff0c;在/…

第五套CCF信息学奥赛c++练习题 CSP-J认证初级组 中小学信奥赛入门组初赛考前模拟冲刺题(选择题)

第五套中小学信息学奥赛CSP-J考前冲刺题 1、不同类型的存储器组成了多层次结构的存储器体系,按存取速度从快到慢排列的是 A、快存/辅存/主存 B、外存/主存/辅存 C、快存/主存/辅存 D、主存/辅存/外存 答案&#xff1a;C 考点分析&#xff1a;主要考查计算机相关知识&…

静态链表(3)

尾插函数 尾插就比头插多了一步找尾巴&#xff0c;其他均一样 尾插步骤画图 1.找到空闲结点3 2.空链踢空点&#xff0c;穿透删除 先绑后面 再接前面&#xff0c;就完成插入了 综上所述&#xff0c;静态链表就是处理两条链表&#xff0c;静态链表总的执行一次插入或删除&#…

【大厂AI课学习笔记NO.62】模型的部署

我们历尽千辛万苦&#xff0c;总算要部署模型了。这个系列也写到62篇&#xff0c;不要着急&#xff0c;后面还有很多。 这周偷懒了&#xff0c;一天放出太多的文章&#xff0c;大家可能有些吃不消&#xff0c;从下周开始&#xff0c;本系列将正常更新。 这套大厂AI课&#xf…

【剑指offer--C/C++】JZ3 数组中重复的数字

一、题目 二、本人思路及代码 这道题目它要求的时间空间利用率都是n&#xff0c;那么可以考虑创建一个长度为n的数组repeat初始化为0&#xff0c;下标代码出现的数字&#xff0c;下标对应的数组内容代表该下标数字出现的次数。然后遍历提供的数组&#xff0c;每出现一个数字&a…

超详细多表查询详解-多表关系-多表查询-子查询

多表关系 一对多关系&#xff1a;这是最常见的关系类型&#xff0c;它表示在两个表之间&#xff0c;一个表中的记录可以与另一个表中的多个记录相关联。例如&#xff0c;一个班级&#xff08;父表&#xff09;可以有多个学生&#xff08;子表&#xff09;&#xff0c;但每个学…

市场复盘总结 20240301

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 40% 最常用的…

Linux高级编程:进程(一)

1、进程 1.1什么是进程&#xff1a;进行中的程序&#xff08;正在运行中的程序&#xff09;-process过程 程序的一次执行过程 - 进程 hello.c -- 程序源代码 a.out -- 可执行程序 1.2程序和进程的关系&#xff1a; 程序<------>进程 1.3进程怎么来的&#xff1a; 程…

http 协议深入介绍

一&#xff0c;http 相关概念 &#xff08;一&#xff09;关键名词 1&#xff0c;互联网 是网络的网络&#xff0c;是所有类型网络的母集 2&#xff0c;因特网 世界上最大的互联网网络。即因特网概念从属于互联网概念。习惯上&#xff0c;大家把连接在因特网上的计算机都成…

码界深潜:全面解读软件工程的艺术与科学

&#x1f3e1; 基石构筑篇——软件工程基础理论及技能 &#x1f522; 编程语言选型与精修 于软件工程之浩瀚宇宙中&#xff0c;编程语言犹如各色画笔&#xff0c;每种语言的特性对应不同的创作领域。譬如Java倚仗跨平台兼容性和强大的面向对象机制&#xff0c;在企业级应用程序…

【大厂AI课学习笔记NO.59】(12)过拟合与欠拟合

拟合就是调整参数和模型&#xff0c;让结果无限接近真实值的过程。 我们先来了解个概念&#xff1a; 偏差-方差窘境&#xff08;bias-variance dilemma&#xff09;是机器学习中的一个重要概念&#xff0c;它涉及到模型选择时面临的权衡问题。 偏差&#xff08;Bias&#xf…

centos7单节点部署ceph(mon/mgr/osd/mgr/rgw)

使用ceph建议采用多节点多磁盘方式部署&#xff0c;本文章仅作为单节点部署参考&#xff0c;请勿用于生产环境 使用ceph建议采用多节点多磁盘方式部署&#xff0c;本文章仅作为单节点部署参考&#xff0c;请勿用于生产环境 使用ceph建议采用多节点多磁盘方式部署&#xff0c;…