Tomcat部署及多实例

news/2024/4/26 13:29:18/文章来源:https://blog.csdn.net/m0_73865971/article/details/129250616

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_HOME1vim /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_HOME1vim /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_HOME2vim /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.luyixian.cn/news_show_75066.aspx

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

相关文章

为什么硬件性能监控很重要

当今的混合网络环境平衡了分布式网络和现代技术的实施。但它们并不缺少一个核心组件&#xff1a;服务器。保持网络正常运行时间归结为监控和管理导致网络停机的因素。极有可能导致性能异常的此类因素之一是硬件。使用硬件监控器监控网络硬件已成为一项关键需求。 硬件监视器是…

优化知识管理方法丨整理零碎信息,提高数据价值

信息流时代&#xff0c;知识成集合倍数增长&#xff0c;看似我们学习了很多知识&#xff0c;但知识零碎无系统&#xff0c;知识之间缺乏联系&#xff0c;没有深度&#xff0c;所以虽然你很努力&#xff0c;但你发现自己的能力增长特别缓慢&#xff0c;你需要整理知识将零散的知…

蓝桥杯:染色时间

蓝桥杯&#xff1a;染色时间https://www.lanqiao.cn/problems/2386/learning/?contest_id80 问题描述 输入格式 输出格式 样例输入输出 样例输入 样例输出 评测用例规模与约定 解题思路&#xff1a;优先队列 AC代码(Java)&#xff1a; 问题描述 小蓝有一个 n 行 m 列…

std::chrono笔记

文章目录1. radio原型作用示例2. duration原型&#xff1a;作用示例3. time_point原型作用示例4. clockssystem_clock示例steady_clock示例high_resolution_clock先说感觉&#xff0c;这个库真恶心&#xff0c;刚接触感觉跟shi一样&#xff0c;特别是那个命名空间&#xff0c;太…

vue2 diff算法

diff是什么 diff 算法是一种通过同层的树节点进行比较的高效算法 其有两个特点&#xff1a; ♥比较只会在同层级进行, 不会跨层级比较 ♥在diff比较的过程中&#xff0c;循环从两边向中间比较 diff 算法的在很多场景下都有应用&#xff0c;在 vue 中&#xff0c;作用于虚拟 dom…

预备2-CMD常用命令

CMD常用命令 先学简单常用的, 其余的要用在学 打开Cmd窗口 Win键R> 输入Cmd回车鼠标点击开始 > 附件>Cmd打开一个窗口,在地址栏输入cmd 操作目录 1.dir 查询当前目录有哪些文件 2.cd.. 上一级目录 3.cd e: 切换到E盘 4.d: 直接去d盘 5.cd /d e:abc 直接去E盘的abc目…

2023年房地产行业研究报告

第一章 行业发展概况 房地产业是指以土地和建筑物为经营对象&#xff0c;从事房地产开发、建设、经营、管理以及维修、装饰和服务的集多种经济活动为一体的综合性产业&#xff0c;是具有先导性、基础性、带动性和风险性的产业。主要包括&#xff1a;土地开发&#xff0c;房屋的…

解决AAC音频编码时间戳的计算问题

1.主题音频是流式数据&#xff0c;并不像视频一样有P帧和B帧的概念。就像砌墙一样&#xff0c;咔咔往上摞就行了。一般来说&#xff0c;AAC编码中生成文件这一步&#xff0c;如果使用的是OutputStream流写入文件的话&#xff0c;就完全不需要计算时间。但在音视频同步或者使用A…

debian 部署nginx https

我是flask 处理请求单进程&#xff0c; 差点意思 &#xff0c; 考虑先flask 在往下走 一&#xff1a;安装nginx 因为我是debian 系统&#xff0c;所以我的建议是直接 sudo apt-get install nginx 你也可以选择在官网下载&#xff0c; 但是我搭建ssl 的时候安装openssl非常的麻…

【无标题】(2019)NOC编程猫创新编程复赛小学组真题含参考

&#xff08;2019&#xff09;NOC编程猫创新编程复赛小学组最后6道大题。前10道是选择填空题 略。 这道题是绘图题&#xff0c;没什么难度&#xff0c;大家绘制这2个正十边形要注意&#xff1a;一是不要超出舞台&#xff1b;二是这2个正十边形不要相交。 这里就不给出具体程序了…

数睿通2.0数据服务功能模块发布

文章目录引言API 目录API 权限API 日志结语引言 数睿通 2.0 之前基本完成了数据集成和数据开发两大模块&#xff0c;也因此得到了一些朋友的帮助和支持&#xff0c;在此由衷的表示感谢&#xff0c;你们的支持便是我们更新的最大动力&#xff01; 目前&#xff0c;数据服务模块…

色环电阻的阻值如何识别

这种是色环电阻&#xff0c;其外表有一圈圈不同颜色的色环&#xff0c;现在在一些电器和电源电路中还有使用。下面的两种色环电阻它颜色还不一样&#xff0c;一个蓝色&#xff0c;一个土黄色&#xff0c;其实这个蓝色的属于金属膜色环电阻&#xff0c;外表涂的是一层金属膜&…

狂神说:面向对象(三)——多态

多态// 对象能执行什么方法&#xff0c;主要看对象左边的类型&#xff0c;和右边的没有关系多态&#xff1a;同一方法可以根据发送对象的不同而采用不同的行为方式父类&#xff1a;public class Person {public void run(){System.out.println("Person > run");}}…

【并发编程学习篇】深入理解CountDownLatch

一、CountDownLatch介绍 CountDownLatch&#xff08;闭锁&#xff09;是一个同步协助类&#xff0c;允许一个或多个线程等待&#xff0c;直到其他线程完成操作集。CountDownLatch使用给定的计数值&#xff08;count&#xff09;初始化。await方法会阻塞直到当前的计数值被coun…

只需四步,手把手教你打造专属数字人

伴随ChatGPT的问世&#xff0c;在技术与商业运作上都日渐发展成熟的数字人产业正持续升温。去年9月&#xff0c;北京市发布了国内首个数字人产业专项支持政策&#xff0c;提出将依托国家文化专网将数字人纳入文化数据服务平台。以数字人、ChatGPT为代表的互联网3.0创新应用产业…

kali下安装Volatility

一、About Volatility Volatility是一款开源内存取证框架&#xff0c;能够对导出的内存镜像进行分析&#xff0c;通过获取内核数据结构&#xff0c;使用插件获取内存的详细情况以及系统的运行状态。 Volatility是一款非常强大的内存取证工具,它是由来自全世界的数百位知名安全…

FAST‘23《λ-IO: A Unified IO Stack for Computational Storage》论文解读

FAST’23《λ-IO: A Unified IO Stack for Computational Storage》论文解读 Data:2023-2-27 Ref: Z. Yang et al., “λ-IO: A Unified IO Stack for Computational Storage,” in 21st USENIX Conference on File and Storage Technologies (FAST 23), Santa Clara, CA, Feb.…

数据可视化第二版-03部分-06章-比较与排序

文章目录数据可视化第二版-03部分-06章-比较与排序总结可视化视角-比较与排序代码实现创建虚拟环境1. python版本管理2.切换到指定版本后安装虚拟环境切换路径到文件当前路径柱形图环形柱状图子弹图哑铃图雷达图词云图教材截图数据可视化第二版-03部分-06章-比较与排序 总结 …

Java 多线程 --- 多线程的相关概念

Java 多线程 --- 多线程的相关概念Race Condition 问题并发编程的性质 --- 原子性, 可见性, 有序性上下文切换 (Context Switch)线程的一些故障 --- 死锁, 活锁, 饥饿死锁 (Deadlock)活锁(Livelock)死锁和活锁的区别饥饿(Starvation)背景: 操作系统 — 线程/进程 同步 Race Co…

【unity学习记录】Canvas Group组件

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的学习笔记 &#x1f236;本篇是unity的Canvas Group组件 Canvas Group画布组介绍详解1. Alpha2. Interactable3. Blocks Raycasts4. Ignore Parent Groups介绍 画布组…