Tomcat服务部署及优化

Java 开发者如何进行 Tomcat 的日常维护 Tomcat 作为一款广泛使用的开源 Servlet 容器,在 Java Web 开发中扮演着至关重要的角色。对于 Java 开发者而言,掌握 Tomcat 的日常维护技能,能够确保 Web 应用的稳定运行、提高性能、及时处理各类故障。本文的目的就是为 Java 开发者提供一套全面、详细的 Tomcat 日常维护指南,范围涵盖 Tomcat 的安装配置、性能优化、日志管理、故障排查等多个方面。本文将按照以下结构展开:首先介绍 Tomcat 的核心概念与联系,让读者对 Tomcat 的架构有清晰的认识; 阅读详情

目录

一、Tomcat简介

二、Tomcat核心组件

1、tomcat的三个核心组件

2、tomcat 功能组件结构

 3、tomcat请求过程

三、Tomcat的端口和主要目录说明

1、tomcat端口

2、tomcat主要目录

四、Tomcat 部署步骤

1、下载并安装 JDK

2、部署tomcat服务

3、访问浏览器验证是否成功

 4、优化tomcat启动速度

五、总结


一、Tomcat简介

       tomcat是jdk+servlet(严格地说是+jsp)实现的精简版的java ee,由于它只在jdk的基础上附加了jsp和servlet类库,所以它的应用范围主要是web应用。tomcat项目目前由apache软件基金会维护。

       它是一种应用程序服务器,只提供servlet容器,同时还提供apache解析静态HTML,只不过之它的处理能力不如独立的apache服务器。类似的应用程序服务还有websphere/weblogic/jetty/resin/jboss等,它们都是在jdk基础上附加各种类库实现不同程度的java ee(tomcat=jdk+servlet)。

       对于tomcat来说,它高度模块化,通过各个组件实现各种功能。它的体系结构如下图所示:

  • server是顶级类,一个server算是一个tomcat实例,在此层次中可定义tomcat服务的监听端口。
  • service是server下的子组件,用于封装绑定connector和containor,并为它们提供一个名称属性。有了service就可以提供相关的服务,如监听TCP连接请求、处理http请求。注意server是管理整个tomcat实例的层次,它和提供服务没有关系。
  • connector是连接器,定义http协议(默认)以及该协议的监听端口。连接器用于接收客户端请求并将containor处理的数据返回给客户端。
  • containor称为容器,它和connector连接器进行绑定。该容器内有4个子容器,包括:engine容器、host容器、context容器、Wrapper容器。容器用于分析、处理请求,并构建响应给connector以发送给客户端。它和connector是tomcat的心脏组件。
  • engine容器定义servlet引擎,用于定义引擎的名称、默认的虚拟主机。引擎用于分析http请求并将请求转发给对应的虚拟主机。
  • host容器用于定义虚拟主机。
  • context容器用于定义webapp,一个context定义一个webapp。它是真正管理servlet容器的层次。
  • wrapper容器对应的是真正的servlet容器,一个wrapper代表一个servlet,它负责管理一个Servlet,包括的Servlet的装载、初始化、执行以及资源回收。Wrapper是最底层的容器,一个context只能包含一个wrapper。在配置文件中,无法配置该容器的属性。

二、Tomcat核心组件

1、tomcat的三个核心组件

1)web容器: 完成Web服务器的功能。

2)Servlet 容器: 名字为catalina,用于处理Servlet 代码。

3)JSP容器: 用于将JSP动态网页翻译成Servlet 代码。

因此Tomcat 是Web 应用服务器,也是一个Servlet/JSP 容器。Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户。

什么是servlet

  • Servlet是 Java Servlet的简称,可以理解为是一一个服务连接器,是用Java编写的服务器端程序,具有独立于平台和协议的特性。
  • 简单的理解:servlet 就是一 个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。

什么是JSP

  • JSP全称Java Server Pages, 是一种动态网页开发技术。|它使用JSP 标签在HTML网页中插入Java 代码。标签通常以<%开头,以%>结束。
  • JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。
  • JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

2、tomcat 功能组件结构

Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器Connector, 和负责处理请求的容器Container。

其中连接器和容器相辅相成,一起构成了基本的web服务Service。每个Tomcat服务器可以管理多个Service。

Tomcat 功能组件结构:

  • Connector: 负责对外接收和响应请求。它是Tomcat与外界的交通枢细,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。

  • Container: 负责对内处理业务逻辑。其内部由Engine、 Host、Context和wrapper 四个容器组成,用于管理和调用Servlet 相关逻辑。

  • Service: 对外提供的Web服务。主要包含Connector 和Container 两个核心组件,以及其他功能组件。Tomcat 可以管理多个Service, 且各Service之间相互独立。

    (一个service就是一个外部应用,各个service之间是相互独立的,每个service可以监听不同的端口号)

Container结构分析:

每个Service 会包含一一个Container 容器。在Container 内部包含了4个子容器: 4个子容器的作用分别是:

(1) Engine: 引擎,用来管理多个虚拟主机,一个Service最多只能有一一个Engine;

(2) Host: 代表一个虚拟主机,也可以叫站点,通过配置Host就可以添加站点;

(3) Context: 代表一个Web应用,包含多个Servlet 封装器;

(4) wrapper: 封装器,容器的最底层。每一Wrapper 封装着一个servlet, 负责对象实例的创建、执行和销毁功能。

Engine、Host、Context 和Wrapper,这四个容器之间属于父子关系。

容器由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个web应用。每个Web应用会有多个Servlet封装器。

 3、tomcat请求过程

  • 用户在浏览器中输入网址,请求被发送到本机端口8080, 被在那里监听的Connector 获得。
  • Connector 把该请求交给它所在的Service 的Engine (Container) 来处理,并等待Engine 的回应。
  • 请求会在Engine、 Host、 Context 和wrapper 这四个容器之间层层调用,最后在Servlet 中执行对应的业务逻辑、数据存储等。
  • 执行完之后的请求响应在Context、 Host、 Engine 容器之间层层返回,最后返回给Connector,并通过Connector 返回给客户端。

 

三、Tomcat的端口和主要目录说明

1、tomcat端口

客户端和tomcat进行连接时使用:

  • 8080端口:http的默认端口
  • 8443端口:https的默认端口

8005端口: shutdown用于关闭tomcat进程。tomcat监听的关闭端口,就是说这个端口负责监听关闭tomcat的请求。

8009端口: 用于转发,负责和其他http服务器建立连接。但一般不用,因为tomcat一般放在后端服务器,其他服务器转发给tomcat。

2、tomcat主要目录

目录说明
bin存放启动和关闭Tomcat 的脚本文件,如catalina.sh、startup.sh、shutdown.sh
conf存放Tomcat 服务器的各种配置文件,如主配置文件server.xml 和应用默认的部署描述文件web.xml
lib存放Tomcat运行需要的库文件的jar 包,一般不作任何改动
logs存放Tomcat 执行时的日志
temp存放Tomcat 运行时产生的文件
webapps存放Tomcat默认的web应用项目资源的目录
workTomcat 的工作目录,存放web应用代码生成和编译文件

四、Tomcat 部署步骤

在部署 Tomcat 之前必须安装好 jdk,因为Tomcat是采用Java语言编写的,而jdk是java的开发工具,没有jdk,Tomcat是跑不起来的,所以 jdk 是 Tomcat 运行的必要环境。

1、下载并安装 JDK

1. #关闭防火墙
systemctl stop firewalld
setenforce 0
  
2. #将安装 Tomcat 所需软件包传到/opt目录下。
apache-tomcat-9.0.16.tar.gz 
jdk-8u201-linux-x64.rpm
  
3. #切换至/opt下,安装JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm
 ​
4. #设置JDK环境变量
#/etc/profiled.d目录下存放着profile文件中调用的变量,所以我们在该目录下新建一个java的变量脚本,让profile调用即可。
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64    #定义环境变量
export JRE_HOME=$JAVA_HOME/jre                   #定义环境变量
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib  #定义环境变量
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH   
#修改系统变量,将定义的变量加入全局,并且在原先的PATH路径变量前面,因为我们已经有了131版本的JDK,如果放在PATH后面,会优先找到131的JDK文件(linux查找可执行文件是根据PATH变量从左往右查找,找到即停止。
 ​
source /etc/profile.d/java.sh     #刷新文件,使立即生效
java -version                     #再次查看JDK版本

2、部署tomcat服务

在部署Tomcat之前必须安装好jdk,因为jdk是Tomcat运行的必要环境。

1.#安装tomcat
cd /opt
tar zxf apache-tomcat-9.0.16.tar.gz    #解压tomcat安装包
#将解压后的源码包目录拷贝至/usr/local/下并重命名为tomcat
mv apache-tomcat-9.0.16 /usr/local/tomcat
 ​
2.##启动tomcat ##(去bin目录下)
#后台启动
/usr/local/tomcat/bin/startup.sh
或
/usr/local/tomcat/bin/catalina.sh start
 ​
#前台启动
/usr/local/tomcat/bin/catalina.sh run
 ​
netstat -natp | grep 8080
 ​
3.#浏览器访问测试
浏览器访问Tomcat的默认主页 http://192.168.80.7:8080
 ​
 ​
#启动Tomcat的方法:
startup.sh          #后台启动tomcat
catalina.sh start   #后台启动tomcat
catalina.sh run     #前台启动 tomcat
#关闭tomcat的方法:
shutdown.sh      关闭tomcat
#查看tomcat是否启动:
netstat ss ps jps

3、访问浏览器验证是否成功

 4、优化tomcat启动速度

第一次启动tomcat可能会发现Tomcat启动很慢,如果/dev/random中的随机数不足,默认情况下可能会需要几十秒,可以修改jdk参数进行改。

/dev/urandom,它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
--117行--修改这一行
securerandom.source= file:/dev/urandom

五、总结

  • JDK的安装,在运行tomcat前必须将JDK安装好。

  • /usr/local/tomcat/bin目录中的 startup.sh 和 shutdown.sh 脚本可以直接运行,但 catalina.sh 文件需要加上命令参数,start为后台运行,run为前台运行。

  • /dev/random: 阻塞型,读取它就会产生随机数据,但该数据取决于熵池噪声,当熵池空了,对/dev/random 的读操作也将会被阻塞。

  • /dev/urandom: 非阻塞的随机数产生器,它会重复使用熵池中的数据以产生伪随机数据。 这表示对/dev/urandom的读取操作不会产生阻塞,但其输出的熵可能小于/dev/random的。 它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。

MATLAB实战:5步搞定铣削稳定性叶瓣图(附完整代码解析) 本文提供了一份基于MATLAB的铣削稳定性叶瓣图实战指南。通过5个清晰步骤,从动力学原理出发,详细解析了利用半离散法构建稳定性判据、模块化代码设计、高效参数扫描及高级可视化的完整流程,并附有完整代码,帮助工程师快速预测和规避加工颤振,优化铣削工艺参数。 阅读详情

相关推荐

【GPT】Coze使用开放平台接口-【7】Dify 比较篇

coze 用于社交,dify 用来内部构建。抛开工作流,机器人,工具,coze 最大的区别在于可以直接发布到社交媒体上。所以,coze 对操作体验上也花了不少功夫,而 dify 就专注在帮助使用者打磨工作流。coze 各个大模块之前可以联动的机制也比较多,所以侧重点各不相同。

非晓为骁的博客 7613

Tomcat简介及环境配置

Tomcat安装步骤

z020315的博客 774

R语言实战:GEO单细胞数据下载与自动化整理全流程(附代码)

本文详细介绍了使用R语言从GEO数据库下载scRNA-seq数据并实现自动化整理的完整流程。通过GEOquery和Seurat等工具包,读者可以高效获取单细胞RNA测序数据,完成从原始数据下载到预处理的全过程,最终生成可直接用于分析的Seurat对象。文章包含完整代码示例,特别适合生物信息学研究者处理单细胞数据。

weixin_29061821的博客 427

Tomcat核心组件

连接器是Tomcat的核心组件之一,用于监听指定的网络端口并接受客户端的连接请求。HTTP连接器用于处理HTTP协议的请求,而AJP连接器用于与前端Web服务器(如Apache)之间的通信。阀门是Tomcat中的一个重要概念,用于对请求和响应进行处理。引擎是Tomcat的顶级组件,用于管理多个虚拟主机(Host)。引擎负责接收来自连接器的请求,并将请求分发给相应的虚拟主机处理。以上是Tomcat的核心组件,它们共同协作,使得Tomcat能够高效地处理Web应用程序的生命周期和请求处理。

kankan_s的专栏 425

【工控基础】UVW平台踩坑

1 每个轴按顺时针或逆时针走一个距离,就是旋转。 2 图中W动,U轴V轴不动,就是X方向的平移 3 图中U轴V轴同时动,X不动,就是Y方向的平移。

songhuangong123的博客 6945

【教程4>第7章>第6节】基于FPGA的Viterbi维特比译码verilog实现——ACS加比选单元1

本文介绍了ACS加比选单元模块在FPGA中的实现过程,重点讲解了维特比译码中的ACS单元功能及其在硬件实现中的关键问题。文章首先概述了ACS单元在维特比译码中的作用,即通过计算和比较分支度量值来选择最优路径。接着,详细描述了FPGA实现中的分支度量值归一化处理策略,并指出了其存在的弊端。随后,文章提供了基于Verilog的ACS加比选单元模块代码,解释了其输入输出端口及工作流程。最后,总结了本小节内容,并预告了下一章节将涉及ACS顶层模块的开发与仿真测试。

FPGA/MATLAB学习教程/源码/项目合作开发 568

Tomcat运维

tomcat从安装到项目部署

pdp1196431288的博客 2468

C++(Qt)软件调试---内存分析工具Heob(26)

绝对最全面最详细的Heob使用说明。(图文并茂) 绝大部分的文章都说Heob是一个内存泄漏分析工具,其实Heob只是内存泄漏分析功能比较突出,实际上Heob可以分析很多内存问题。 Heob是一个Windows下检测缓冲区溢出(野指针、空指针、内存越界、重复释放、异常捕获等)和内存泄漏的工具,集成到Qt Creator中,功能强大,简单容易上手。

mahuifa的博客 4311

Tomcat服务部署优化

如果在同一个物理机上启动了多个Server实例,必须配置它们使用不同的端口目录名字功能bin存放启动和关闭 Tomcat 的脚本文件,比较常用的是三个文件conf存放 Tomcat 服务器的各种配置文件,比较常用的是server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。lib存放 Tomcat 服务器的 jar 包,一般不作任何改动,除非连接第三方服务,比如 redis,那就需要添加相对应的 jar 包logs存放 Tomcat 日志。

Kiryu7的博客 1276

基于STM32L4XX、HAL库的 TMC2660C-PA 驱动程序设计

/ 默认灵敏度和电流。// 20/31最大电流。

zhusl6688的博客 384

【DaVinci Developer专题】-36-创建一个“既读又写”的Sender Receiver Port(SR PR-Port)

有时会遇到SWC需要对一个Port进行“既可以读,也可以写”的操作。以下图为例,Test_A_SWC中Test_A_Port是P-Port;Test_B_SWC中Test_A_Port是R-Port。Test_C_SWC需要对Test_A_Port同时进行“读”和“写”。 该篇将详细介绍PR-Port的创建方法。 目录 1 创建一个S/R Port Interface 2 将一个PR-Port端口添加至Application Component 3 PR-Port端口初始化 4 Run.

「汽车电子助手」的博客 3013

Tomcat服务 部署及优化

Tomcat一、Tomcat概述二、tomcat核心组件三、什么是 servlet?四、什么是 JSP?五、Tomcat 功能组件结构5.1、Tomcat两个核心功能5.2、Container 结构分析5.2、 Tomcat顶层架构 一、Tomcat概述 Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。 Tomcat 属于

weixin_44841019的博客 497

开尔文四线法与电桥(uΩ电阻检测)

本文介绍了开尔文四线法与电桥在电阻测量中的应用,特别是针对uΩ级别电阻的精确检测。讨论了基本电桥电路的工作原理,强调了开尔文四线法的优势,它能消除导线和接触电阻的影响。文中还提到了测试设备的介绍,包括不同级别的电阻测试,并详细阐述了uΩ级别电阻测试的步骤和注意事项。此外,对比了惠斯通电桥与开尔文电桥,强调了它们在电阻测量中的作用和计算方法。

让你爱上电路设计 7858

Tomcat服务部署和优化

目录 一、Tomcat介绍 1.1 什么是Tomcat 1.2 Tomcat的构成组件 1.2.1 Java Servlet 介绍 1.3四个子容器的作用分别是: 1.4 Tomcat请求过程 二、Tomcat服务部署 2.1 Tomcat服务部署的步骤(理论) 1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下 2.安装JDK 3.设置JDK环境变量 4.安装启动Tomcat 5.优化tomcat启动速度 2.2Tomcat服务部署的具体实验步骤(实操) 三.

BeliefWish的博客 263

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Tomcat服务部署与优化

目录 一、Tomcat介绍 1.1 什么是Tomcat 1.2 Tomcat的构成组件 1.2.1 Java Servlet 介绍 1.2.1 JSP介绍 1.3 Tomcat顶层架构 1.4 Tomcat请求过程 二、Tomcat服务部署 2.1 Tomcat服务部署的步骤 2.1 Tomcat服务部署的具体实验步骤(实操) 三、Tomcat服务优化 一、Tomcat介绍 1.1 什么是Tomcat Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务

weixin_48861962的博客 169

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Tomcat服务的部署及配置优化

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。一般来说,Tomcat虽然和Apache或者Nginx这些Web服务器一样,具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常是作为 一个Servlet和JSP容器,单独运行在后端。官网地址: http://tomcat.apache.org/​​​​​。

m0_74170357的博客 1482

Tomcat服务器的部署以及优化

前言:本章我们要介绍Nginx以及Tomcat服务器,Tomcat服务器是一个免费的开放源代码的Web应用服务器,它属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用 一.Tomcat服务器介绍 1.1.Tomcat概述 1.Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。 2.To

weixin_67474417的博客 1960
上一篇: nginx rewrite(重定向)
下一篇: LVS负载均衡群集——NAT模式
梅比乌斯N
博客等级 码龄4年 287粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值