首页 > 其他分享 >Tomcat部署及优化

Tomcat部署及优化

时间:2022-11-17 18:45:42浏览次数:56  
标签:容器 java Tomcat tomcat 部署 Servlet 优化

一 Tomcat的简介

二 Tomcat的组件构成

三Tomcat的功能组件结构

四 Tomcat的请求过程

五 Tomcat服务的部署

六 tomcat启动优化

总结

 

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 应用项目资源的目录

work:Tomcat 的工作目录,存放 Web 应用代码生成和编译文件

 

一 Tomcat的简介

Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。

Tomcat 属于轻量级应用服务器,在中小型系统和并发访问用户(据了解tomcat的并发量处理能力是nginx的六分之一)不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。一般来说,Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样,具有处理 HTML 页面的功能,然而由于其处理静态 HTML 的能力远不及 Apache 或者 Nginx,所以 Tomcat 通常是作为一个 Servlet 和 JSP 容器,单独运行在后端。

二 Tomcat的组件构成

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

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

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

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

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

JSP: 全称 Java Server Pages,是一种动态网页开发技术。它使用 JSP 标签在HTML网页中插入 Java 代码。标签通常以 <% 开头,以 %> 结束。也是一种 Java servlet,主要用于实现 Java web 应用程序的用户界面部分。

JSP 通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

三Tomcat的功能组件结构

Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。 其中连接器和容器相辅相成,一起构成了基本的 web 服务 Service。每个 Tomcat 服务器可以管理多个 Service。

 

 

 

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

 

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

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

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,这四个容器之间属于层层递进的父子关系。

容器 由一个引擎(Engine)可以管理多个虚拟主机(Host)。每个虚拟主机(Host)可以管理多个 Web 应用(Context)。每个 Web 应用会有多个 Servlet 封装器(Wrapper)。

四 Tomcat的请求过程

用户在浏览器中输入网址,请求被发送到本机端口 8080,被在那里监听的 Connector 获得;

Connector 把该请求交给它所在的 Service 的 Engine(Container)来处理,并等待 Engine 的回应;

请求在 Engine、Host、Context 和 Wrapper 这四个容器之间层层调用,最后在 Servlet 中执行对应的业务逻辑、数据存储等。

执行完之后的请求响应在 Context、Host、Engine 容器之间层层返回,最后返回给 Connector,并通过 Connector 返回给客户端。 

 五 Tomcat服务的部署

本次部署准备的版本安装包(版本根据需求): jdk-8u201-linux-x64.rpm(jdk环境包,是tomcat的运行环境)        apache-tomcat-9.0.16.tar.gz(tomcat服务软件包)

步骤一:搭建Tomcat运行环境 

(1)关闭防火墙和selinux,防止其对安装过程的干扰

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

(2)将准备好的软件包拖入/opt目录下,进行安装

 

#某rpm包尚未安装,我们可以通过该命令查询其说明信息、安装以后会生成的文件;
rpm -qpl jdk-8u201-linux-x64.rpm 
 
#安装并以#显示安装进度以及显示详细过程
rpm -ivh jdk-8u201-linux-x64.rpm 
 
#查看jdk环境
java -version

(3)设置jdk的环境变量 

设置全局的环境变量,一般会有两种方式(本次部署采用第二种方式)

方式一:直接对 /etc/profile(全局变量配置文件进行改变)

方式二:在/etc/profile.d/  目录下创建相关的 .sh 脚本,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
 

拓展知识:

CLASSPATH:编译、运行Java程序时,JRE会去该变量指定的路径中搜索所需的类(.class)文件。

JDK :java development kit (java开发工具)

JRE :java runtime environment (java运行时环境)

JVM :java virtuak machine (java虚拟机),使java程序可以在多种平台上运行class文件。

source /etc/profile.d/java.sh
java -version

(4)编写一个java 简易的源代码,进行环境测试

vim Hello.java
#类名、接口名命令:英文大小写字母、数字字符、$和_,不能使用关键字和数字开头;
一个单词命名时第一个单词的首字母要大写;多单词组成时,所有单词的首字母大写:XxxYyyZzz(大驼峰命名法)
public class Hello {            
  public static void main(String[] args){
    System.out.println("Hello world!");
  }
}

 

#编译源代码
javac Hello.java
#运行源代码
java Hello

 

 

 

步骤二:安装启动tomcat 

(1)安装Tomcat

cd /opt
#解压tomcat软件包
tar zxvf apache-tomcat-9.0.16.tar.gz
 
#移动至服务软件包统一管理目录中,并且简易其名称
mv apache-tomcat-9.0.16 /usr/local/tomcat

(2)启动Tomcat 

 注意:Tomcat服务启动时会占用8080端口

 

#后台启动
/usr/local/tomcat/bin/startup.sh 
或
/usr/local/tomcat/bin/catalina.sh start    
    

 

#前台启动
/usr/local/tomcat/bin/catalina.sh run    

#关闭后台运行的tomcat
/usr/local/tomcat/bin/shutdown.sh 

(3)开启tomcat服务,测试访问tomcat的默认首页 

 

六 tomcat启动优化

优化tomcat启动速度

直接启动tomcat的速度很快,但是tomcat中跑了项目后,启动就很慢(40G可能启动10分钟)。

当java中的jar包、war包放在/webapps中,需要重新启动tomcat服务,(shutdown.sh 和startup.sh), 重启tomcat的目的: 是为了让tomcat的环,能够重新加载、识别/webapps目录下的这些java代码。

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security   #修改jdk的配置参数

 虚拟主机的概念: 是模拟多个渠道(功能)

 优点: 充分使用资源、管理便捷、降低架构的复杂度,方便自定义“扩容”(创建多个虚拟主机)

缺点: 需要其它资源的支持、消耗相同的网络资源、单点故障

nginx中的虚拟主机: 基于不同的IP、基于不同的域名、基于不同的端口。(配置文件中,每一个server就是一个虚拟主机)

Tomcat中的虚拟主机: 使用一台tomcat服务运行多台虚拟主机,通过不同的虚拟主机访问不同的项目。(配置文件中,每一个host就是一个虚拟主机)

 

 

 配置文件主要内容

 

 添加benet项目

<Host name="www.ydq.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/ydq" path="" reloalable="true" />
</Host>

<Host name="www.benet.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/benet" path="" reloalable="true" />
</Host>

配置文件介绍
Host name:主机名
appBase:Tomcat程序工作目录,即存放web应用程序的目录,相对路径:webapps,绝对路径:/usr/local/tomcat/webapps
unpackWARs:在启用此webapps时是对WAR格式的归档文件先进行展开
autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用城西是否进行更新
xmlValidation:是否验证xml执行有效检验的标志
xmlNamespaceAware:是否启用命令空间,设置该值于xmlValidation为true,表示web.xml文件执行有效性验证
docBase:相应的web应用程序的存放位置,也可以使用相对路径,起始路径为此context所属Host中appBase定义的路径
path:相对web服务器跟路径而言的URI,如果为空,则表示为webapps的根路径/
reloadable:是否允许重新加载此context相关的web应用程序的类。

 

 

  Tomcat优化

默认安装下的缺省配置并不适合生产环境,它可能会频繁出现假死现象需要重启,只有通过不断压测优化才能让他最高效率稳定的运行,优化主要包括三方面,分别为操作系统优化(内核优化),Tomcat配置文件参数优化,Java虚拟机调优。

优化的配置文件为:/usr/local/tomcat/conf/server.conf ,优化的方向为Connector容器。

常用的优化相关参数如下Tomcat配置文件参数

【maxThreads】:Tomcat使用线程来处理接收的每个请求,这个值表示Tomcat可以创建的最大的线程数,默认值为200。

【minSpareThreads】:最小空闲线程数。启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是10.

【maxSpareThreads】:最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值是-1(无限制),一般不需要指定。

【URIEncoding】:指定Tomcat容器的URL编码格式,语言编码格式这块倒不如其它Web服务器软件配置方便,需要分别指定。

【connectionTimeout】:网络连接超时,单位:毫秒,设置为0表示用不超时,这样设置有隐患的,通常默认20000毫秒就可以。

【enableLookups】:是否反查域名,以返回远程主机的主机名,取值为true或false,如果设置为false,则直接返回IP地址,为了提高处理能力,应设置false。

【disabkeUploadTimeout】:上传是否使用超时机制,应设置为true

【connectionUploadTimeout】:上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个格局你自己的业务需要自己挑,以使servlet有较长的时间来完成它的执行,需要与上一个参数一起配置使用才会生效。

【accpetCount】:指定所有可用使用的处理请求的线程数都被使用时,可传入连接请求的最大列长度,超过这个数的请求将不予处理,你默认为100个。

【compression】:是否对相应的数据进行GZIP压缩,off:表示进制压缩,on:表示允许压缩(文本将被压缩),force:表示所有情况下都进行压缩,默认值为0ff,压缩数据可以有效的减少压面的大小,一般可以减小1/3左右,节省带宽。

【compressionMinSize】:表示压缩相应最小值,只有当相应报文大小大于这个值的时候,才会对报文进行压缩,如果开启压缩功能,默认值就是2048.

【compressableMimeType】:压缩类型,指定堆哪些类型的文件进行数据压缩

【noCompressionUserAgents=“gozilla,traviata”】:对于以下浏览器,不启用压缩。

 优化配置

vim /usr/local/tomcat/conf/server.xml

#71行添加
minSpareThreads="50" 
enableLookups="false" 
disableUploadTimeout="true" 
acceptCount="300" 
maxThreads="500" 
processorCache="500"
URIEncoding="UTF-8" 
compression="on" 
compressionMinSize="2048" 
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png"/>

总结

Tomcat可做为运行JAVA代码的环境,只要把java源码(.class可执行的类文件)或者war包或jar包放在/webapps中,那么Tomcat启动时,就可以解压,并运行放在/webapps中的这些应用(只需要修改配置文件:server.xml)

engine引擎---》Host---》context---》servlet(调用应用程序的java代码执行动态操作的环境)

1、tomcat 组件有哪些,从进入到处理

server: server元素在最顶层,代表整个Tomca容器,因此它必须是server.xml中唯一一个最外层的元素。一个server元素中可以有一个或多个service元素。server的主要任务,就是提供一个接口让客户端能够访问到这个service集合。同时维护它所有的service的声明周期,包括如何初始化,如何结束服务,如何找到客户端要访问的service。

service: service的作用,是在connector和engine外面报了一层,把他们组装在一起,对外提供服务,一个service可以包含多个connector,但是只能包含一个engine,其中connector的作用是从客户端接收请求,engine的作用是处理接收进行的请求,TTomcat可以提供多个service,不同的service监听不同的端口。

connector : 连接器,coyo http/1.1 8080 端口

engine: 容器引擎,容器引擎是管理运行容器的一个核心组件(container:web容器、jsp容器、servlet容器)

Host: 需要和java运行环境进行对接—》通过context连接java运行环境

context: Context元素代表在特定虚拟主机上运行的一个Web应用。每个Web应用基于WAR文件,或WAR文件解压后对应的目录(这里称为应用目录)。Context是Host的子容器,每个Host中可以定义任意多的Context元素。

servlet: 管理调用以及运行java代码的核心组件

2、Tomcat虚拟主机

在service.xml 中进行配置,只需要对应配置 <Context …/> 这段就可以了,此配置用于定于Tomcat 如何管理JAVA应用+如何对接、连接java应用。

3、Tomcat优化

①配置文件中的优化:我们会在connector 连接配置端中进行优化,而优化的内容包括:如何更好的等待请求,如何分配线程资源、内存资源、队列、连接数、超时时间。启动时间优化(启动时间优化是优化jdk优化。进入/var/java/jdk-xxxxx/securty/java.securty 启动线程/dev/random ->/dev/urandom 的优化)

②JVM优化:-Xms -Xmx 的优化—》表示的意思是最小/最大的内存优化-----》简单理解为-Xms -Xmx 就是对应用使用的内存资源最小、最大值的优化。

③GC垃圾回收优化—》是因为java应用在Tomcat时,当应用运行的线程、进程资源退出时,会遗留一些资源碎片,GC就是对于这些资源碎片进行指定回收用的。

 

标签:容器,java,Tomcat,tomcat,部署,Servlet,优化
From: https://www.cnblogs.com/123456789SI/p/16889067.html

相关文章

  • MySQL+MGR单主模式集群环境部署
    MySQLGroupReplication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MGR是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方......
  • Tomcat多实例部署
    一、Tomcat多实例的操作步骤1、关闭防火墙,将安装Tomcat所需软件包传到/opt目录下jdk-8u201-linux-x64.rpmapache-tomcat-9.0.16.tar.gzsystemctlstopfirewalld......
  • tomcat的概述、部署、优化
    一、Tomcat概述1.1、Tomcat的概念Tomcat是Java语言开发的,服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合......
  • Tomcat的概述、部署、及优化
    一、Tomcat概述1、Tomcat的概念Tomcat是Java语言开发的,服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下......
  • LVS-NAT模式群集部署
    LVS-NAT模式群集部署LVS调度器作为Web服务器池的网关,LVS具有两块网卡,分别连接内外网,使用轮询(rr)调度算法1.配置负载调度器LVS(ens33:192.168.10.11ens37:12.0.0.1)system......
  • Nginx优化与防盗链
    Nginx优化与防盗链  目录前言一、隐藏版本号二、修改Nginx用户和组三、配置Nginx网页缓存时间四、实现Nginx的日志切割五、配置Nginx实现连接超时六、更改N......
  • Tomcat多实例部署
    一、实例操作:Tomcat多实例1、关闭防火墙,将安装Tomcat所需软件包传到/opt目录下2、安装JDK3、安装tomcat4、配置tomcat环境变量5、修改tomcat2中的se......
  • Nginx优化与防盗链
    导图一.Nginx优化①可以使用Fiddler工具抓取数据包,查看Nginx版本,也可以在CentOS中使用命令curl-Ihttp://192.168.80.10显示响应报文首部信息。curl-Ihttp://1......
  • 网站SEO 优化带来的好处
    一般来说,做网站的时候,基本都会考虑做网络推广,网站优化等等。网络优化就是我们所说的SEO优化。它通过专业的手段提高网站的排名,通过站内优化和站外优化实现网站的良好排名。......
  • Nginx 优化与防盗链
    一、隐藏版本号1、隐藏版本号的操作步骤可以使用Fiddler工具抓取数据包,查看Nginx版本,也可以在CentOS中使用命令 curl-Ihttp://192.168.229.90 显示响应报文首......