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的。 它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值