Tomcat部署及多实例

news2024/9/23 13:27:41

Tomcat部署及多实例

    • 一、Tomcat简介
      • 1、Tomcat核心组件
      • 2、什么是JSP
    • 二、Tomcat数据流向
      • 1、Tomcat数据流向
      • 2、Tomcat-Nginx数据流向
    • 三、Tomcat服务部署安装
      • 1、安装jdk包
      • 2、解压Tomcat所需的安装包
      • 3、在/etc/profile添加环境变量
      • 4、启动服务并查看
      • 5、在浏览器网页验证
      • 6、创建用户,修改属主属组
    • 四、Tomcat虚拟主机配置
      • 1、创建创建zhantai和zzt项目目录和文件
      • 2、修改主配置文件
      • 3、浏览器访问验证
    • 五、Tomcat优化
      • 1、配置文件参数优化
      • 2、Tomcat主配置文件
    • 六、Tomcat多实例
      • 1、实验介绍
      • 2、实例配置
        • (1)关闭防火墙、核心防护
        • (2)安装Tomcat所需软件包到/opt、及其jdk
        • (3)配置Tomcat环境变量
        • (4)修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号
        • (5)修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
        • (6)启动Tomcat中的/bin/startup.sh
      • 3、浏览器访问测试
    • 总结

一、Tomcat简介

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

1、Tomcat核心组件

通常意义上的 web 服务器接受请求后,只是单纯地响应静态资源,如HTMI文件,图片文件等,不能在后端进行一定的处理操作。Tomcat是 Apache 下的一个子项目,它具备 web服务器的所有功能(WEB容器嵌入Servlet-动态请求),不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的Java代码servlet,同时将执行的结果以HTML代码的形式写回客户端。

2、什么是JSP

JSP 全称 Java Server Pages,是一种动态网页开发技术。它使用 JSP 标签在HTML网页中插入 Java代码。标签通常以 <% 开头,以 %> 结束。
JSP 是一种 Java servlet,主要用于实现 Java web 应用程序的用户界面部分。
JSP 通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

二、Tomcat数据流向

1、Tomcat数据流向

在这里插入图片描述

用户请求(访问80端口)——》

发送请求发送给tomcat——》

tomcat有一个端口在监听8080端口)

从8080端口进入流量的会被在此端口的线程监听到

给与我们的web容器进行处理(有index.html页面显示出来  从8080端口来时会有交互界面  会读取到index.jsp这种java代码)

但是java代码无法直接使用——》

需要利用到jsp容器

将index.jsp中的java的servlet代码进行翻译

servlet容器处理 通过catalina程序/脚本来处理从JSP容器这过来的servlet代码

并不是直接对接mysql数据库

而是直接对接用户的请求例如app中的某个功能模块

比方说看个人信息  servlet容器与app接是api进行对接(具体的URL)

数据流向最终会通过用户请求内容  去mysql数据库寻找相应的内容

最后返回给用户

2、Tomcat-Nginx数据流向

在这里插入图片描述

首先,客户请求nginx页面,就是访问80端口
nginx进行反向代理,去请求连接Tomcat的8080端口
Tomcat里面有一个负责接收和反馈外部请求的连接器 Connector
Connector中有前端页面和协议会监听8080端口,从8080端口进入的请求会被监听到
Tomcat接收到请求之后,然后把这个请求交给负责处理请求的容器Container中的Engine来处理
Engine接收到请求之后,会匹配所有的虚拟主机Host
Host相当于站点,就相当于我们正常去访问一个域名一样
不同的需求会有不同的路径,这时候就让Context来确定访问路径
找到访问路径之后,里面有一个index.jsp文件,它会把这个文件的Java代码提取出来
然后交给sercvet来翻译这个代码,用Catalina来处理这个代码
最后将执行结果一层一层原路返回

三、Tomcat服务部署安装

1、安装jdk包

[root@localhost opt]# setenforce 0                      ##关闭核心防护
setenforce: SELinux is disabled
[root@localhost opt]# systemctl stop firewalld          ##关闭防火墙
[root@localhost opt]# rpm -ivh jdk-8u201-linux-x64.rpm  ##安装jdk包

在这里插入图片描述

2、解压Tomcat所需的安装包

[root@localhost opt]# tar zxf apache-tomcat-9.0.16.tar.gz

3、在/etc/profile添加环境变量

[root@localhost opt]# vim /etc/profile
[root@localhost opt]# source /etc/profile   #刷新

在这里插入图片描述

4、启动服务并查看

[root@localhost opt]# cp -r apache-tomcat-9.0.16 /usr/local/tomcat
[root@localhost opt]# cd /usr/local/tomcat/bin/
[root@localhost bin]# /usr/local/tomcat/bin/startup.sh   #用绝对路径启动服务

在这里插入图片描述

5、在浏览器网页验证

在这里插入图片描述

6、创建用户,修改属主属组

[root@localhost bin]#/usr/local/tomcat/bin/shutdown.sh   #关闭服务
[root@localhost bin]# useradd -s /sbin/nologin tomcat    #新建用户
[root@localhost ~]# cd /usr/local/
[root@localhost local]# chown tomcat:tomcat -R tomcat/   #修改属主属组
#####编写tomcat.service文件######
[root@localhost local]# vim /etc/systemd/system/tomcat.service

[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target

[root@localhost local]# systemctl daemon-reload  
[root@localhost local]# systemctl start tomcat.service
[root@localhost local]# ss -natp |grep 8080

在这里插入图片描述

四、Tomcat虚拟主机配置

很多时候公司会有多个项目需要运行,那么肯定不可能是一台服务器上运行多个Tomcat服务,这样会消耗太多的系统资源。此时,就需要使用到 Tomcat 虚拟主机。例如现在新增两个域名 www.zhantai.com和 www.zzt.com希望通过这两个域名访问到不同的项目内容。

1、创建创建zhantai和zzt项目目录和文件

[root@localhost]cd /usr/local/tomcat/webapps/
[root@localhost webapps]# mkdir zhantai zzt
[root@localhost webapps]# echo "this is zhantai" > zhantai/index.jsp
[root@localhost webapps]# echo "this is zzt" > zzt/index.jsp
[root@localhost webapps]#

在这里插入图片描述

2、修改主配置文件

[root@localhost webapps]# vim /usr/local/tomcat/conf/server.xml

 <Host name="www.zhantai.com"  appBase="webapps" unpackWARs="true" autoDeploy="true">
         <Context docBase="/usr/local/tomcat/webapps/zhantai" path="" reloadable="true" />
    </Host>

         <Host name="www.zzt.com"  appBase="webapps" unpackWARs="true" autoDeploy="true">
         <Context docBase="/usr/local/tomcat/webapps/zzt" path="" reloadable="true" />
    </Host>
[root@localhost webapps]# systemctl restart tomcat.service
[root@localhost webapps]# ss -natp |grep 8080

在这里插入图片描述
在这里插入图片描述

3、浏览器访问验证

更改hosts文件在Windows,C:\Windows\System32\drivers\etc 改hosts文件在Linux中是/etc/hosts文件修改
在这里插入图片描述

五、Tomcat优化

1、配置文件参数优化

选项名称参数
maxThreadsTomcat 使用线程来处理接收的每个请求,这个值表示 Tomcat 可创建的最大的线程数,默认值是 200。
minSpareThreads最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是 10。
maxSpareThreads最大备用线程数,一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的 socket 线程。默认值是-1(无限制)。一般不需要指定
URIEncoding指定 Tomcat 容器的 URL 编码格式,语言编码格式这块倒不如其它 Web服务器软件配置方便,需要分别指定utf-8
connnectionTimeout网络连接超时,单位:毫秒,设置为 0 表示永不超时,这样设置有隐患的。通常默认 20000 毫秒(20秒)就可以。
enableLookups是否反查域名,以返回远程主机的主机名,取值为:true 或 false,如果设置为 false,则直接返回 IP 地址,为了提高处理能力,应设置为 false。
disableUploadTimeout上传时是否使用超时机制。应设置为 true。
connectionUploadTimeout上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个根据你自己的业务需要自己调,以使 Servlet 有较长的时间来完成它的执行,需要与上一个参数一起配合使用才会生效
acceptCount指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为 100 个。
compression是否对响应的数据进行 GZIP 压缩,off:表示禁止压缩;on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为 off,压缩数据后可以有效的减少页面的大小,一般可以减小 1/3 左右,节省带宽。
compressionMinSize表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是 2048。
compressableMimeType压缩类型,指定对哪些类型的文件进行数据压缩。
noCompressionUserAgents=“gozilla, traviata”对于以下的浏览器,不启用压缩

2、Tomcat主配置文件

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

<Connector port="8080" protocol="HTTP/11.1" 
connectionTimeout="20000" 
redirectPort="8443" 
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的数据流向,以及Tomcat主机如何部署安装,如何优化。在安装 Tomcat 之前必须先安装JDK。server.xml为Tomcat 的主要配置文件,通过配置该文件,可以修改 Tomcat 的启动端口、网站目录、虚拟主机、开启https等重要功能。

六、Tomcat多实例

1、实验介绍

Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,互不影响。多实例与虚拟主机不同,虚拟主机的本质是在一个服务下有多个相对独立的目录,但是多实例却存在了多个服务。今天,我们就来实现以下Tomcat的多实例配置。

实验环境

  • 云服务器192.168.10.132

  • Tomcat实例1开放端口:8080、8005、8009

  • Tomcat实例2开放端口:8081、8006、8010

    注意:由于我们此次使用的Tomcat版本较新,因此,在默认情况下,8009(8010)端口不会开启

2、实例配置

(1)关闭防火墙、核心防护

[root@localhost opt]# systemctl stop firewalld
[root@localhost opt]# setenforce 0

在这里插入图片描述

(2)安装Tomcat所需软件包到/opt、及其jdk

[root@localhost opt]# rpm -ivh jdk-8u201-linux-x64.rpm   #安装jdk
[root@localhost opt]# java -version             #查看版本信息

在这里插入图片描述

[root@localhost opt]# mkdir /usr/local/tomcat
[root@localhost opt]#mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
[root@localhost opt]#cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2

在这里插入图片描述

(3)配置Tomcat环境变量

[root@localhost opt]#vim /etc/profile.d/tomcat.sh
#tomcat1
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1

#tomcat2
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2

在这里插入图片描述
在这里插入图片描述

(4)修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号

vim /usr/local/tomcat/tomcat2/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN">	#22行,修改Server prot,默认为8005 ->修改为8006
<Connector port="8081" protocol="HTTP/1.1"	#69行,修改Connector port,HTTP/1.1 默认为8080 -> 修改为8081
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />	#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量

vim /usr/local/tomcat/tomcat1/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
##添加以下内容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1

vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1

vim /usr/local/tomcat/tomcat2/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2

vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(6)启动Tomcat中的/bin/startup.sh

[root@localhost opt]# /usr/local/tomcat/tomcat1/bin/startup.sh
[root@localhost opt]# /usr/local/tomcat/tomcat2/bin/startup.sh
[root@localhost opt]# netstat -natp | grep java

在这里插入图片描述

3、浏览器访问测试

http://192.168.80.101:8080
http://192.168.80.101:8081

在这里插入图片描述

总结

Tomcat多实例与虚拟主机不同,虚拟主机的本质是在一个服务下有多个相对独立的目录,但是多实例却存在了多个服务。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

flink常用算子介绍

flink任务中【Transformation 数据转换】是对数据进行操作&#xff0c;有 Map、FlatMap、Filter、KeyBy 、Reduce 、Fold 、Aggregations、Window 、WindowAll 、Union 、Window join 、Split 、Select 、Project 等&#xff0c;通过对数据的操作&#xff0c;转换成想要的数据&…

【设计模式】4.建造者模式

概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于&#xff1a;某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不…

【沐风老师】3DMAX一键玻璃门生成器使用教程

3DMAX一键玻璃门生成器使用方法详解 3dMax一键玻璃门生成器是在3dMax中自动创建三维玻璃门模型的高效脚本。有6种风格的玻璃门&#xff0c;它可以在Archviz项目中灵活应用&#xff0c;同时为3D艺术家节省大量时间。 【适用版本】 3dMax 2018.2及更高版本 【安装方法】…

day37|完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ 复健运动

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同…

什么是MES系统?本文解释得很清楚了

MES&#xff08;英文Manufacturing Execution System的缩写&#xff09;&#xff0c;即生产执行系统&#xff0c;是近几年发展起来的企业信息化系统&#xff0c;目前在发达国家已经普遍推广。 MES软件是介于ERP&#xff08;企业资源计划系统&#xff09;和自控系统&#xff08…

百度前端训练营

视频&#xff1a;前端训练营开营仪式20220627_哔哩哔哩_bilibili http://bit.baidu.com/productsBuy?id248 一、Git安装与使用【因为重装系统&#xff0c;所以重新装一次环境】 查看电脑32位还是64&#xff0c;安装git TortoiseGit 及TortoiseGit 汉化包 下载64位对应的版本…

Java集合概述(Collection集合)

目录集合一、集合与数组二、集合类体系结构三、泛型(约定集合存储数据类型)四、Collection集合常用API五、Collection集合的遍历方式5.1 迭代器遍历5.2 增强for循环(for each):5.3 lambda表达式六、Collection集合存储自定义类型的对象七、常见数据结构集合 一、集合与数组 数…

【设计模式】9.桥接模式

概述 现在有一个需求&#xff0c;需要创建不同的图形&#xff0c;并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系&#xff1a; 我们可以发现有很多的类&#xff0c;假如我们再增加一个形状或再增加一种颜色&#xff0c;就需要创建更多的类。 试…

redis 05 篇——主从复制

redis 05 篇——主从复制1. 前言1.1 什么是复制&#xff1f;1.1.1 复制概述1.1.2 主从复制的架构1.2 为什么要使用主从复制&#xff1f;1.3 主从复制主要的命令配置2. 准备工作3. 核心配置3.1 主服务器3.2 从服务器4. 实例演示4.1 简单实例——两台服务器4.1.1 同一服务多个red…

小程序:使用分包异步化解决一个分包引入另一个分包的组件/函数的问题

背景 我们一般使用小程序插件的时候&#xff0c;喜欢将其放在分包中&#xff0c;因为插件体积会打包进主包内&#xff0c;很容易造成主包体积超过 2M 从而无法发布&#xff0c;我们暂且叫这个有插件的分包叫分包P&#xff0c;这时候另外两个业务分包XY&#xff0c;想引入这个分…

从Java培训班出来好找工作吗?

个人觉得这个问题要从两方面来看&#xff0c;首先是培训班的Java课程质量如何&#xff0c;是否贴合用人单位实际需求&#xff0c;学出来的技术能对口&#xff1b;其次是培训班是否保障就业&#xff0c;有就业机会渠道推荐&#xff0c;比如老学员内推、合作企业人才输送以及企业…

【Spring Cloud Alibaba】008-Sentinel

【Spring Cloud Alibaba】008-Sentinel 文章目录【Spring Cloud Alibaba】008-Sentinel一、服务雪崩1、概述2、解决方案常见的容错机制二、Sentinel&#xff1a;分布式系统的流量防卫兵1、**Sentinel** 概述简介特性Sentinel 的开源生态Sentinel 的历史2、Sentinel 基本概念资源…

低代码系统能够解决哪些痛点?

低代码系统能够解决哪些痛点&#xff1f;如果用4句话去归纳&#xff0c;低代码开发可以解决以下问题—— 为企业提供更高的灵活性&#xff0c;用户可以突破代码的限制自主开发业务应用&#xff1b;通过减少对专业软件开发人员的依赖&#xff0c;公司可以快速响应市场上的新业务…

cartographer中分支定界法理解——为什么能保证上界

定界原理 储存的不同分辨率栅格图&#xff0c;为保证上边界正确性&#xff0c;即高层中的评分一定高于其底层节点的评分&#xff0c;压缩的地图并非直接从原图固定间隔采样&#xff0c;而是将固定间隔中所有坐标概率值最大值作为低分辨率地图。 理解&#xff1a; 1、其在计算…

ESP32中MQTT通讯

MQTT文档介绍 一、在PC上可以使用 MQTT X 工具&#xff1a;&#xff08;参考地址&#xff09; 1、客户端下载&#xff1a;MQTT X 工具下载地址 2、EMQX服务器下载地址 3.打开命令行工具&#xff0c;进入目录运行EMQX服务。 电脑左下角&#xff0c;右键开始->运行->输…

“双碳”目标下二氧化碳地质封存技术应用前景及模型构建

我国二氧化碳地质封存技术起步较晚&#xff0c;目前仍没有一套相对完整的行业规范&#xff1b;且就该技术而言&#xff0c;涉及环节众多&#xff0c;理论相对复杂&#xff0c;对于行业的新入局者不太友好。因此&#xff0c;结合时代背景&#xff0c;我们首次尝试对二氧化碳地质…

升级多语言,应用国际化_三叠云

国际化配置 路径 表单设计 >> 字段属性 功能简介 【字段】新增 「国际化配置」 这是一个和国际化配合的功能&#xff0c;可以在用户通过切换不同的语言环境时&#xff0c;表单的标题、提示语等将会根据相应的语言环境切换到相应的表单字段标题、提示语&#xff0c;使…

Eureka注册中心-Ribbon负载均衡

1、Eureka注册中心服务注册与发现提供了一个服务注册中心、服务发现的客户端&#xff0c;还有一个方便查看所有注册的服务的界面。所有的服务使用Eureka的服务发现客户端来将自己注册到Eureka的服务器上。1.1 、Eureka的结构和作用1.1.1、Eureka的作用1.1.2、获取地址信息的流程…

【C++进阶】三、二叉搜索树

目录 一、二叉搜索树 1.1 概念 1.2 二叉搜索树操作 二、二叉搜索树实现 2.1 框架总览 2.2 实现接口总览 2.2.1 构造函数 2.2.2 拷贝构造 2.2.3 赋值重载 2.2.4 析构函数 2.2.5 二叉搜索树的遍历 2.2.6 插入函数 2.2.7 查找函数 2.2.8 删除函数 2.3 二叉搜索数完整…

MotionLayout动画效果实现的几种方式

前言MotionLayout 的使用大家应该都会了&#xff0c;如果不会看这里。本文就不科普如何使用&#xff0c;什么属性是什么意思&#xff0c;怎么使用之类的了&#xff0c;这里只是探讨一下 MotionLayout 效果实现的几种方式。一、ConstraintLayout 的方式定义我们知道 MotionLayou…