Tomcat 部署优化

目录

一.Tomcat介绍

二.了解Tomcat里面里面是放什么的

三. Tomcat:是一个特殊的服务   有两个领域

 四.tomcat概述

五.再加上那个扩展java虚拟机(JVM) 调优  

tomcat 优化分两种

六.Tomcat核心组件

​编辑 容器:什么是容器

web容器:完成web服务的功能

Serviet容器:

JSP 容器: 

七.tomcat核心组件

八. Tomcat处理请求(内部数据流向图)

8.1Tomcat的功能组件结构

九.Tomcat 请求过程

一.实战部署

1.Tomcat 服务部署

二.安装启动Tomcat

三.优化tomcat启动速度 

四.Tomcat 虚拟主机配置

1.创建 kgc 和 benet 项目目录和文件

五.客户端浏览器访问验证 


一.Tomcat介绍

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

  • 免费的、开放源代码的Web应用服务器
  • Apache软件基金会(Apache Software Foundation)Jakarta项目中的一个核心项目
  • 由Apache、Sun和一些公司及个人共同开发而成
  • 深受Java爱好者的喜爱,并得到部分软件开发商的认可
  • 目前比较流行的Web应用服务器

二.了解Tomcat里面里面是放什么的

 Tomcat:是以 java代码运行的平台 ,里面放置着我们正常用的的也软件app如 支付宝、健康码。小程序、抖音自媒体、拼多多等  这些就是用java代码写的

三. Tomcat:是一个特殊的服务   有两个领域

开发、研发领域 

共同点

共同维护

 四.tomcat概述

1.Tomcat核心组件

  1.1tomcat 由那些系列的组件机构

  1.2tomcat 核心组件如何进行交互

  1.3tomcat 功能组件机构

    1.3.1  container 结果  (分析)

2.tomcat 处理请求  (内部数据流向)这是重点

3.tomcat 部署步骤

4.tomcat 主要目录说明  这是重点

5.tomcat 虚拟机的配置

6.tomcat 优化 

7.tomcat 多实列部署

五.再加上那个扩展java虚拟机(JVM) 调优  

tomcat 优化分两种

1.tomcat 配置文件优化

2.tomcat 虚拟机 (JVM调优)

六.Tomcat核心组件

 容器:什么是容器

 举个例子 水杯就最普通的容器 水就是封装的对象

web容器:完成web服务的功能

tomcat web 应用服务  web--可以通过httpd(s)来访问的页面--》会指向文件

web容器--》就是封装了一组文件  集中化管理--》一组组员对象

说白点就是 web动态页面

Serviet容器:

就是catalina处理Servlet代码

JSP 容器: 

将JSP动态页面翻译成Servlet代码交给 Servlet 代码

index.php-->php  index.jsp--tomcat   hyml--> nginx

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

七.tomcat核心组件


1、Web容器 :①接受、响应请求
             ② 展示动态页面      
               入口  出口
2、JSP容器:翻译java--> servlet
index.html --》 nginx可以直接展示index.php

index.jsp --> java环境---》和数据库怎么进行交互,怎么连接到后端???

index.jsp---》java类代码---》就是执行对接后端的执行代码,所以我们需要在进行与用户交互时,将用户发出的请求、数据、传输到后端 
但是index.jsp中的一些java代码无法直接执行对接或者调用,需要先翻译魏可以可直接执行的代码方式---》格式serverlet 代码格式

3、serverlet容器:serverlet代码格式就是用JSP容器来处理
简介:
web容器:1、接受、响应请求  2 、 展示动态页面
JSP容器:翻译java--->servlet
Serverlet容器:借助于catalina来执行servelet代码(动态任务执行的标准格式)

八. Tomcat处理请求(内部数据流向图)

总:用户访问数据经过nginx发送到web容器用index.php类型页面接收Java代码再到JSP容器将前面的index.jsp的代码翻译为servlet代码后交给servlet容器处理通过api接口调用数据库中的信息后再次回给用户。

8.1Tomcat的功能组件结构


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

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

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

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

8.5Container 结构分析(包含了 4 个子容器)
每个 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 封装器。

九.Tomcat 请求过程


Tomcat 请求过程图示

开发java——写代码——编译jar——打包(war 、jar)
运维放在tomcat并行放在/webapps 当启动tomcat时会自动把包解压,解压成项目目录

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

5.Tomcat 详细请求过程
假设来自客户的请求为: http://localhost:8080/blue/blue_index.jsp
(1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
(2) Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
(3) Engine获得请求localhost/blue/blue_index.jsp,匹配它所拥有的所有虚拟主机Host
(4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
(5) localhost Host获得请求/blue/blue_index.jsp,匹配它所拥有的所有Context
(6) Host匹配到路径为/blue的Context(如果匹配不到就把该请求交给路径名为"“的Context去处理)
(7) path=”/blue"的Context获得请求/blue_index.jsp,在它的mapping table中寻找对应的servlet
(8) Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
(9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
(10)Context把执行完了之后的HttpServletResponse对象返回给Host
(11)Host把HttpServletResponse对象返回给Engine
(12)Engine把HttpServletResponse对象返回给Connector
(13)Connector把HttpServletResponse对象返回给客户browser

6.Tomcat容器和功能组件
6.1结构图示

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

一.实战部署

1.Tomcat 服务部署

1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下

在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。
1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下jdk-8u201-linux-x64.rpm
apache-tomcat-9.0.16.tar.gzsystemctl stop firewalld
systemctl disable firewalld
setenforce 0

 2.安装JDK

cd /opt
rpm -qpl jdk-8u371-linux-x64.rpm
rpm -ivh jdk-8u371-linux-x64.rpm 
java -version

 3.设置JDK环境变量

3.设置JDK环境变量
vim /etc/profile.d/java.shexport JAVA_HOME=/usr/java/jdk1.8.0-x64                           #定义环境变量
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar #定义环境变量
export PATH=$JAVA_HOME/bin:$PATH                                  #定义环境变量source /etc/profile.d/java.sh                   #刷新文件,使立即生效
java -version                                   #再次查看JDK版本                

3.1先在再开个终端 把7号 路径复制到1号机哪里的配置文件里

3.2 这边贴上路径

3.3  在再回到2号机这边在把  tools.jar 复制

3.4 贴在1号机这边  配置文件就更改完成了

 4.写一个java代码测试java是否安装完成

vim Hello.javapublic class Hello {			public static void main(String[] args){System.out.println("Hello world!");}
}

javac Hello.java   #对源代码进行编译
java Hello         #执行
Hello WOrld!      #测试成功

 

二.安装启动Tomcat

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

1.解压apache到当前目录

cd /opt
tar xf apache-tomcat-8.5.16.tar.gz   #解压tomcat安装包#将解压后的源码包目录拷贝至/usr/local/下并重命名为tomcat
mv apache-tomcat-8.5.16 /usr/local/tomcat

  2.##启动tomcat ##(去bin目录下)

 ##启动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的默认主页192.168.158.22:8080  端口号为8080

三.优化tomcat启动速度 

 第一次启动tomcat可能会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。

 vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security--117行--修改这一行securerandom.source= file:/dev/urandom  #修改成伪随机数生成器,优化启动速度

四.Tomcat 虚拟主机配置

很多时候公司会有多个项目需要运行,一般不会是在一台服务器上运行多个 Tomcat 服务,这样会消耗太多的系统资源。此时, 就需要使用到 Tomcat 虚拟主机。

例如现在新增两个域名 www.kgc.com 和 www.benet.com, 希望通过这两个域名访问到不同的项目内容。

1.创建 kgc 和 benet 项目目录和文件

mkdir /usr/local/tomcat/webapps/kgc 
mkdir /usr/local/tomcat/webapps/benetecho "This is kgc page\!" > /usr/local/tomcat/webapps/kgc/index.jsp
echo "This is benet page\!" > /usr/local/tomcat/webapps/benet/index.jsp

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

修改 Tomcat 主配置文件 server.xml
vim /usr/local/tomcat/conf/server.xml
--165行前--插入
<Host name="www.kgc.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/kgc" path="" reloadable="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="" reloadable="true" />
</Host>

 /usr/local/tomcat/bin/shutdown.sh     关闭 
/usr/local/tomcat/bin/startup.sh      启动

五.客户端浏览器访问验证 


echo "192.168.158.22 www.kgc.com www.benet.com" >> /etc/hosts浏览器访问 http://www.kgc.com:8080/   页面显示This is kgc page\! 
浏览器访问 http://www.benet.com:8080/   页面显示This is benet page\!

浏览器访问 http://www.kgc.com:8080/   页面显示This is kgc page\! 

HTTP 请求过程:
(1)Connector 连接器监听的端口是 8080。由于请求的端口和监听的端口一致,连接器接受了该请求。
(2)因为引擎的默认虚拟主机是 www.kgc.com,并且虚拟主机的目录是webapps。所以请求找到了 tomcat/webapps 目录。
(3)访问的路径为根路径,URI 为空,即空是 Web 程序的应用名,也就是 context。此时请求找到 /usr/local/tomcat/webapps/kgc 目录,解析 index.jsp 并返回。

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

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

相关文章

C/C++内存管理详解

去年的今日&#xff0c;博主第一次发文&#xff0c;那时初出茅庐&#xff0c;没什么经验。时隔一年&#xff0c;更加优质的博文献上&#xff0c;希望可以帮助到更多的人❤️❤️❤️ 文章目录 &#x1f4ac; 前言一、C/C内存分布二、C语言中动态内存管理方式三、C内存管理方式1…

密码学—Vigenere破解Python程序

文章目录 概要预备知识点学习整体流程技术名词解释技术细节小结代码 概要 破解Vigenere需要Kasiski测试法与重合指数法的理论基础 具体知识点细节看下面这两篇文章 预备知识点学习 下面两个是结合起来使用猜测密钥长度的&#xff0c;只有确认了密钥长度之后才可以进行破解。 …

旅游卡app软件开发解决方案

旅游业的不断发展&#xff0c;旅游卡作为一种便捷的旅游方式越来越受到人们的青睐。旅游卡可以帮助游客节省旅游开支&#xff0c;同时也能让游客更好地规划自己的旅游行程。针对这种情况&#xff0c;开发一款旅游卡app软件是非常必要的。本文将介绍旅游卡app软件开发的解决方案…

基于高校图书馆的用户画像、可视化、模型预测、推荐算法项目实现

需要本项目的可以私信博主获取源码及项目&#xff01;&#xff01;&#xff01; 本研究基于高校图书馆的借阅信息、馆藏图书信息、读者入馆信息、用户信息等多维度的数据表&#xff0c;首先将不同年份的数据拼接在一起&#xff0c;按照时间维度进行整合&#xff0c;并保证数据…

JVM原理:JVM运行时内存模型(通俗易懂)

目录 前言正文虚拟机栈局部变量表操作数栈动态链接方法返回地址 本地方法栈本地方法存在的意义本地方法的调用 虚拟机堆堆结构Eden区Survivor区域老年代Old区常用参数指令 方法区常量池 运行时常量池方法信息类信息域信息JDK1.7前的方法区JDK1.7时的方法区JDK1.7后的方法区 程序…

【MYSQL篇】Update语句原理详解

文章目录 前言缓冲池Buffer PoolInnoDB 内存结构redo logundo logBinlog 总结 前言 前面的文章我们已经对MySQL的查询语句的执行流程进行了说明&#xff0c;感兴趣的可以去看看&#xff1a; 【MySQL篇】Select语句原理详解 本篇文章我们来聊聊 MySQL更新语句的执行原理。更新…

【JavaSE】方法

目录 【1】一个小例子 【2】方法概念及使用 【2.1】什么是方法(method) 【2.2】方法定义 【2.3】方法调用的执行过程 【2.4】实参和形参的关系(重要) 【1.5】没有返回值的方法 【2】函数重载 【2.1】为什么需要方法重载 【2.2】方法重载概念 【2.3】方法签名 【3】…

卷积神经网络--猫狗系列之下载、导入数据集

(由于是学习&#xff0c;所以文章会有一些报错及解决办法) 在Kaggle()获取数据集&#xff1a;&#xff08;没有账号先去注册一个账号&#xff0c;在注册时可能会出现的问题见Kaggle注册出现一排“Captcha must be filled out.”&#xff01;&#xff09; https://www.kaggle.…

vue3+wangEditor5/vue-quill自定义上传音频+视频

一.各种编辑器分析 Quill 这是另一个常用的富文本编辑器&#xff0c;它提供了许多可定制的功能和事件&#xff0c;并且也有一2个官方的 Vue 3 组件 wangEditor5 wangEditor5用在Vue3中自定义扩展音频、视频、图片菜单&#xff1b;并扩展音频元素节点&#xff0c;保证音频节…

曝光调整和曝光融合论文粗读

曝光调整论文调研 M. Afifi, K. G. Derpanis, B. Ommer and M. S. Brown, “Learning Multi-Scale Photo Exposure Correction,” 2021 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), Nashville, TN, USA, 2021, pp. 9153-9163, doi: 10.1109/CVPR4…

linux epoll/select使用区分和实例对比

Linux内核poll&#xff0c;ppoll&#xff0c;epoll&#xff0c;select代码位置&#xff1a; poll&#xff0c;ppoll&#xff0c;select相关内核实现在在fs/select.c中; epoll_ctl和epoll_wait相关函数在fs/eventpoll.c中 epoll实测不支持监听普通文件&#xff0c;select可以…

基于Python+MySQL所写的医院管理系统

点击以下链接获取源码资源&#xff1a; https://download.csdn.net/download/qq_64505944/87985429?spm1001.2014.3001.5503 目录 摘要 I 1 需求分析 1 1.1 任务描述 1 1.2 需求分析的过程 1 1.3 业务需求 2 1.4 功能描述 2 2 总体设计 3 2.1 系统开发环境 3 2.2 系统功能流…