Tomcat部署及多实例

一、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多实例与虚拟主机不同,虚拟主机的本质是在一个服务下有多个相对独立的目录,但是多实例却存在了多个服务。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值