Tomcat部署与优化

5 篇文章 0 订阅

目录

一、Tomcat简介

 1、什么是Tomcat

2、Tomcat核心组件

3、Tomcat处理请求

4、小结

二、部署Tomcat

1、环境部署——JDK

 2、安装启动Tomcat

3、tomcat启动优化

三、Tomcat虚拟主机配置

1、创建项目目录文件

 2、修改Tomcat主配置文件:server.xml

 问题:

3、客户端浏览器访问

4、小结

四、Tomcat优化

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

2、优化配置

 五、总结


一、Tomcat简介

Tomcat是一款免费,开放源代码的web应用服务器,是Apache原件基金会的一个核心开源项目,属于轻量级应用服务器。

 1、什么是Tomcat

Tomcat属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发调试jsp程序的首选。

一般来说,Tomcat虽然和Apache或者Nginx这些Web服务器一样,具有处理静态和动态页面的能力,但是能力远不如nginx和Apache,所有它在服务器的后端。

所以Tomcat通常作为一个servlet和jsp容器,单独运行在后端。

Tomcat是目前比较流行的web应用服务。

web服务:就是网页服,比如nginx。

web应用服务:就是应用服务能够使用web的形式进行运行。

2、Tomcat核心组件

通常意义上web服务器接受请求后,只是单纯的响应静态资源,如HTML文件、图片文件等,不能在后端进行一定的处理操作。

Tomcat是Apache下的一个子项目,它具备web服务器的所有功能,不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的Java代码,同事将执行的结果以HTML代码的形式写回客户端。

tomcat主要的三个容器:web容器、jsp容器、servlet容器。
什么是容器?
容器就是封装一组资源/功能集合的个体。

 Tomcat由一系列的组件构成,其中核心的组件容器由三个:

web容器:完成web服务器的功能HTTP/HTTPS请求接受和响应。

描述:①接受、响应请求 ②展示动态页面

jsp容器:用以将index.jsp文件的java代码翻译成Servlet代码。

描述:index.jsp文件里面有静态展示的HTML语言,还有一些Java类代码,但是文件中Java代码无法直接接受Tomcat执行,所以需要先翻译为可执行的代码方式,也就是翻译成servlet代码格式。

servlet容器:由名称为Catalina的脚本来处理Servlet代码。

描述:使用Catalina进行处理jsp容器翻译成servlet代码。

总体描述:(各组件之间如何对接)

假如用户需要登录支付宝的查看个人信息,通过网页的nginx服务的80端口,请求访问动态请求,nginx将请求反向代理到tomcat服务的8080端口,那么tomcat就收到了用户的请求,

请求给到Web 容器中有index.jsp 文件,里面存在java代码,需要处理动态请求,tomcat就去读取该文件中的java代码,但是java代码无法被tomcat识别,

所以就需要使用JSP 容器将index.jsp文件中的java代码,翻译为servlet代码,翻译成servlet代码后,就需要使用servlet 容器进行处理servlet代码。

那么selvlet容器会通过catalina脚本执行servlet代码。执行完成之后,使用api接口调用对应的支付宝应用,

支付宝收到用户的请求后,会进行调用mysql数据库的3306端口进行确认数据,最后将数据返回到用户。

3、Tomcat处理请求

Tomcat的端口为8080,但是监听8080端口的不是Tomcat主进程, 而是connector的连接器(java写的)监听的。

使用netstat-natp | grep tomcat 无法查看到Tomcat端口需要使用:netstat-natp | grep 8080 查看

Tomcat功能组件

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

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

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

Container结构分析:

每个Service会包含一个container容器。一个container内部包含了4个子容器。

**Engine引擎: **用来管理多个虚拟主机,一个service最多只能有一个Engine。

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

**Context: **代表一个web应用,包含多个servlet封装器,用于连接Host项目和servlet容器

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

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

用户请求——用户访问网页内容,申请动态访问请求,通过nginx的80端口反向代理到Tomcat的80801端口——到了Tomcat后,被connetor(连接器中)的coyote(Java框架)监听到——接受到请求之后,将请求交给container(容器)中的engine进行处理,engine是作为容器运动的动力核心——基于engine支撑,容器中会跑很多host虚拟主机(项目),这些虚拟主机中也会有很多的项目,然后通过context(当前程序所处的环境)连接到servlet容器——servlet处理完后返回给context——context在返回给engine,engine再返回给端口,端口再将页面展示给客户端。

4、小结

Tomcat:是一种web应用服务

Tomcat所处的位置:一般来说,是在Nginx之后,作为动态处理的服务。

Tomcat职能:作为Java类语言开发的应用所执行和持续运行的平台。

Tomcat工作流程:nginx的80端口接受——Tomcat8080端口由connector连续监听——给与容器的engine——host——通过context传递代码,连接——应用的连接环境,最后执行servlet代码(动态请求的任务)——最后,要么对接数据库,要么直接返回给nginx——展示给客户看。

二、部署Tomcat

1、环境部署——JDK

关闭防火墙

 将所需安装包放置在/opt目录下

 安装jdk环境包

 设置JDK的环境变量

 

 再次查看java版本

 2、安装启动Tomcat

解压tomcat包

 将解压后的包剪切到/usr/local 目录中,并改名为tomcat

 查看tomcat文件

我们如果要执行、持续运行一个java开发应用服务,在经过简单配置之后,可以直接将war包、jar包,放入到webapps中,来让tomcat运行。

主要目录说明
1、bin :存放启动和关闭Tomcat的脚本文件,比较常用的是:catalina.sh 、 startup.sh 、 shutdown.sh
2、conf: 存放Tomcat服务器的各种配置文件,比较常用的是server.xml、context.xml、tomcat-users.xml、web.xml
3、lib: 存放Tomcat服务器的jar包,一般不做任何改动,除非连接第三方服务,比如redis,那就需要添加对应的jar包。
4、logs:存放Tomcat日志
5、temp:存放Tomcat运行时产生的文件
****6、webapps:存放项目资源的目录
7、work: Tomcat工作目录,一般清除Tomcat缓存的时候会使用到

Tomcat配置文件详解
1、catalina.policy :权限控制配置文件
2、catalina.properties: Tomcat的属性配置文件
3、context.xml : 上下文配置文件
4、logging.properties:日志相关配置文件
***5、server.xml : 主配置文件,通过配置文件,可以修改tomcat的启动端口,网站目录,虚拟主机,开启https等功能
6、tomacat-user.xml/.xsd: 管理用户配置文件
7、web.xml: tomcal的servlet、servlet-mapping、filter、MIME等相关配置

 将启动脚本放入环境中方便启动

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

前台启动(终端关闭,tomacat停止运行)
/usr/local/tomcat/bin/catalina.sh  run

关闭
/usr/local/tomcat/bin/shutdown.sh 

将启动关闭脚本放入到环境中
ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin

 启动tomcat

 页面访问:192.168.100.2:8080

3、tomcat启动优化

①优化tomcat启动速度

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

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

修改jdk的配置参数:

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security

urandom:表示随机数池更大 

三、Tomcat虚拟主机配置

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

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

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

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

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

1、创建项目目录文件

首先创建两个Host虚拟主机,一个ydq项目,一个benet项目

 创建用户

 创建项目的页面文件

 2、修改Tomcat主配置文件:server.xml

找到主配置文件server.xml

 配置文件主要内容介绍(connector)

 添加ydq项目和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服务关闭出错问题,如图:

解决方法:

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

1、

 2、vim /etc/hosts添加自己主机ip和域名

3、客户端浏览器访问

客户机上配置DNS

192.168.100.2 www.qwf.com www.benet.com

浏览器搜索:www.qwf.com:8080

 浏览器搜索:www.benet.com:8080

4、小结

配置文件中的Host项目格式
<host name>  为开头
<Contet......../> 配置如何连接OST的运行环境位置(指向web)
</host> 表示该项目的结尾

 

四、Tomcat优化

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

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

    1、常用的优化相关参数如下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”】:对于以下浏览器,不启用压缩。

2、优化配置

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服务。即可正常完成配置。

 五、总结

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

engine引擎---》Host---》context---》servlet(调用应用程序的java代码执行动态操作的环境)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值