Tomcat 部署优化

news/2024/11/8 20:29:31/

目录

一.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.ppmy.cn/news/675994.html

相关文章

【Unity开发小技巧】UnityWebGL打包本地浏览器运行查看

目录 一.前言&#xff1a; 二.WebGL打包 三.配置web.config&#xff08;重要&#xff09; 四.部署IIS 五.测试 一.前言&#xff1a; 正常打包WebGL后在浏览器直接运行会报以下这个错&#xff1a; It seems your browser does not support running Unity WebGL content fr…

wifidog 配置中文说明

#网关ID GatewayID default #外部网卡 ExternalInterface eth0 #无线网卡 GatewayInterface eth0 #无线IP GatewayAddress 192.168.1.1 #路由状态HTML HtmlMessageFile wifidog-msg.html #验证服务器 #AuthServer { # Hostname (Mandatory; Default: NONE)…

android wifidog

一. 配置wifidog.conf 1. adb shell 1. ls /sys/class/net/ 2. 找到ap0,wlan0&#xff0c;或br0之类的接口 3. ifconfig ap0&#xff0c;注ap0&#xff0c;对应换成接口列表中的接口名&#xff1b;收到如&#xff1a;ap0: ip 192.168.43.1 mask 255.255.255.0 flags [up br…

wifidog源码分析

正文 程序启动过程 初始化运行参数--config_init() 读取配置文件--config_read(config->configfile) 检查关键参数是否存在--config_validate()--网关接口--认证服务器IP 初始化用户链表--client_list_init() 注册信号--由wdctl线程发送信号&#xff0c;重启等待--in…

wifidog 认证 php

<p style"margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;">1.首先简单说说wifidog认证的过程客户端首次连接到wifi后&#xff0c;浏览器请求将会被重定向到&#xff1a;login/?gw_address%s&gw_port%d&gw_id%s&u…

公共场所wifi认证解决方案wifidog+authpuppy

服务器&#xff1a;linux mint 17.3 authpuppy 路由器&#xff1a;DB120 wifidog 手机一部 一、在OpenWrt的路由器上安装Wifidog应用程序 安装Wifidog程序有两种方式&#xff0c;一种是在刷了OpenWrt的路由器上直接安装Wifidog&#xff1b;或者是把Wifidog直接编译进OpenW…

在padavan运行wifidog

wifidog 作为一款wifi认证插件&#xff0c;在网上资料对于源码的分析可以说数不胜数。 而编译方面的是&#xff0c;偏向于OpenWtr固件。对于我这种使用padavan固件来说&#xff0c;想要使用wifidog的话&#xff0c;就只能自己摸索动手丰衣足食&#xff0c;使用交叉编译来完成编…

wifidog 配置文件

下面回到路由器&#xff0c;编辑wifidog.conf&#xff0c;一般情况下&#xff0c;我们之后配置ExternalInterface&#xff0c;GatewayInterface和AuthServer这三项就可以&#xff0c;其他默认。下面是我的配置&#xff1a; opk安装包&#xff1a;luci-app-wifidog-all.ipk 链…