Tomcat 部署与优化

目录

  • 前言
  • 一、Tomcat介绍
    • 1.1 Tomcat 组件
    • 1.2 Tomcat 顶层架构
    • 1.3 Container
    • 1.4 Tomcat 请求过程
    • 1.5 Tomcat 重要目录
  • 二、Tomcat 服务部署
    • 2.1 关闭防火墙,准备 Tomcat 所需软件包
    • 2.2 安装 JDK
    • 2.3 配置JDK环境变量
    • 2.4 安装启动 Tomcat
    • 2.5 优化tomcat启动速度
    • 2.6 Tomcat 目录说明
  • 三、Tomcat 虚拟主机配置
    • 3.1 创建 kgc和 benet 项目目录和文件
    • 3.2 修改 Tomcat 主配置文件 server. xml
  • 四、Tomcat 优化
    • 优化参数
  • 五、Tomcat 多实例部署

前言

一、Tomcat介绍

  • 由 java 语言开发的,免费的、开放源代码的 Web应用服务器,属于 轻量级应用服务器
  • 是 Apache软件基金会的 Jakarta 项目中的一个核心项目;由 Apache、Sun 和一些公司及个人共同开发而成;
  • 是目前比较流行的 Web应用服务器;
  • 在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选;
  • Tomcat对比于Apache或者Nginx这些Web服务器,都具有处理HTML页面的功能;然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以 Tomcat 通常是作为一个 Servlet 和 JSP 容器,单独运行在后端,适用于动态处理,并发量不大的情况。

1.1 Tomcat 组件

Tomcat由一系列的组件构成,其中核心的组件有三个:
(1)Web 容器:     完成Web服务器的功能。
(2)Servlet 容器: 名字为catalina, 用于处理 Servlet 代码。
(3)JSP 容器:     用于将JSP动态网页翻译成 Servlet 代码。

Tomcat 部署与优化_第1张图片
Java Servlet 是运行在 Web服务器 或 应用服务器上的程序,它是作为来自Web浏览器 或 其他HTTP 客户端的请求 和 HTTP服务器上的数据库或应用程序之间的中间层。使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。 与CGI (公共网 关接口)功能相类似。

JSP 全称 JavaServerPages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以 <%开头,以%> 结束。<% java代码 %>

JSP是一种Java servlet, 主要用于实现Java web应用程序的用户界面部分。

JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

1.2 Tomcat 顶层架构

Tomcat 部署与优化_第2张图片

1、Tomcat 中最顶层的容器是 Server,代表着整个服务器,一个 Server 可以包含至少一个 Service,用于具体提供服务。

2、Service 主要包含两个部分: Connector 和 Container。 Tomcat的心脏就是这两个组件,这两个组件的作用:

  • Connector用 于处理连接相关的事情,并提供 Socket 与 Request 和Response 相关的转化;
  • Container用于封装和管理 Servlet,以及具体处理 Request 请求。

3、一个Tomcat中只有一个Server, 一个Server可以包含多个Service,一个Service只有一个Container, 但是可以有多个Connectors, 因为一个服务可以有多个连接,如同时提供 Http 和 Https 链接,也可以提供向相同协议不同端口的连接。

4、多个 Connector 和 一个Container 就形成了一个Service, 有了Service 就可以对外提供服务了,但是 Service还要一个生存的环境,必须要有人能够给她生命、掌握其生死大权,那就非Server莫属了!所以整个 Tomcat的生命周期由Server控制。另外,上述的包含关系或者说是父子关系,都可以在 tomcat 的 conf 目录下的 server.xml配置文件中看出。

5、server.xml 中定义 这会让Tomcat6启动一个server实例(即一个JVM),它监听在 8005端口 以接收 “SHUTDOWN" 命令,如果接收到了就会关闭Tomcat。

各Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例,必须配置它们使用不同的端口。(一个Server 就是一个 Tomcat)

1.3 Container

Container用于封装和管理 Servlet,以及具体处理Request请求,在Connector内 部包含了4个子容器。

4个子容器 作用
Engine 引擎,用来管理多个站点,一个Service最多只能有一个Engine
Host 代表一个站点,一个Java 项目,也可以叫虚拟主机,通过配置Host就可以添加站点
Context 代表一个应用程序,对应着平时开发的一套程序, 或者一个WEB-INF目录以及下面的web . xml文件
Wrapper 每一Wrapper封装着一个Servlet

Tomcat 部署与优化_第3张图片
Tomcat 部署与优化_第4张图片

1.4 Tomcat 请求过程

请求过程
1.用户在浏览器中输入该网址,请求被发送到本机端口8080,被在那里监听CoyoteHTTP/1.1Connector获得
2. Connector把该请求交给它所在的Service的Engine (Container) 来处理,并等待Engine的回应
3. Engine获得请求localhost/test/index.jsp, 匹配所有的虚拟主机Host
4. Engine匹配到名为localhost的Host (即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/ index. jsp,匹配它所拥有的所有Context。Host匹配到路径为/test的Context (如果匹配不到就把该请求交给路径名为“”的Context去处理)
5. path="/test"的Context获得请求/ index. jsp, 在它的mapping table中寻找出对应的Servlet。 Context匹配到URLPattern为* .jsp的Servlet,对应于JspServlet类
6.构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet ()或doPost() ,执行业务逻辑、数据存储等
7. Context把执行完之后的HttpServletResponse对象返回给Host
8. Host把HttpServletResponse对象返回给Engine
9. Engine把HttpServletResponse对象返回Connector
10. Connector把HttpServletResponse对象返回给客户Browser

 首先客户端访问一个页面,先由连接器进行连接,然后再交给容器里的子容器引擎,再由引擎去找是哪一个虚拟主机,再去哪一个站点内容,最后由Servlet 代码去处理,处理完后再一步一步返回给客户端。

1.5 Tomcat 重要目录

  • bin:存放启动和关闭 Tomcat 脚本
  • conf:存放 Tomcat 不同的配置文件
  • doc:存放 Tomcat 文档
  • lib:存放 Tomcat 运行需要的库文件
  • logs:存放 Tomcat执行时的 LOG 文件
  • src:存放 Tomcat 的源代码
  • webapps:Tomcat 的主要 Web 发布目录,将java项目打包成 jar包或war包,放到这里,Tomcat运行时,会自动解压包。
  • work:存放 jsp 编译后产生的 class 文件

二、Tomcat 服务部署

在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat运行的必要环境。最好配置Java的环境变量。

2.1 关闭防火墙,准备 Tomcat 所需软件包

jdk-8u201-l inux-x64.rpm      #.rpm 的软件包要用 rpm命令来解压
apache-tomcat-9.0.16.tar.gz 

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

Tomcat 部署与优化_第5张图片

2.2 安装 JDK

rpm -qpl jdk-8u201-linux-x64.rpm  #查询指定软件包的【文件列表】
可看到jdk 安装目录基本都在 /usr/java/jdk版本名 下。

rpm -ivh jdk-8u201-linux-x64.rpm     #安装jdk
java -version   #没配环境变量是Linux系统自带的,不是我们安装的

Tomcat 部署与优化_第6张图片
此时安装好并没结束,在全局识别不了java 的命令,需要配置环境变量。

2.3 配置JDK环境变量

专门写一个脚本文件,用来管理 java 的环境变量

vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64               #jdk的安装目录
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

修改完配置文件后,重新执行 java -version , 查到的就是我们安装的了
Tomcat 部署与优化_第7张图片
1、PATH 环境变量。

作用是指定命令搜索路径,在i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。
需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经可执行文件javac/java/javadoc等待,设置PATH变量后,就可以在任何目录下执行javac/java等工具了。

2、CLASSPATH 环境变量。

CLASSPATH:编译、运行Java程序时,JRE会去该变量指定的路径中搜索所需的类(.class) 文件。

作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。
需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“. 也必须加入到该变量中。

dt.jar:是关于运行环境的类库,主要是可视化的swing的包。
tools.jar:主要是一 些jdk.工具的类库,包括javac、java、javap (jdk自带的一个反编译工具)、javadoc等。

3、JAVA_HOME 环境变量。

它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。
JDK : java development kit (java开发工具)
JRE : java runtime environment ( java运行时环境)
JVM : java virtuak machine(java虚拟机),使java程序可以在多种平台上运行class文件。

首先使用文本工具编写java源代码,比如Hello.java
在命令行中,输入命令: javac Hello. java, 对源代码进行编译,生成class 字节码文件:
编译完成后,如果没有报错信息,输入命令: java Hello, 运行class 字节码文件,由JVM对字节码进行解释和运行。

vim Hello.java
Tomcat 部署与优化_第8张图片
Tomcat 部署与优化_第9张图片

2.4 安装启动 Tomcat

cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat

启动tomcat

#后台启动,不会占用当前控制台
/usr/local/tomcat/bin/startup.sh

/usr/local/tomcat/bin/catalina.sh start

#前台启动
/usr/local/tomcat/bin/catalina.sh run

#查询Tomcat服务 是否开启
netstat -natp | grep 8080

浏览器访问Tomcat的默认主页http://192.168.100.10:8080
会显示一个Tom猫的网页

Tomcat 部署与优化_第10张图片
Tomcat 部署与优化_第11张图片

2.5 优化tomcat启动速度

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

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security 

--117行--修改
securerandom.source=file:/dev/urandom

/dev/urandom是/dev/random的非阻塞版本,
即当熵池中没有可取的随机数时,读取/dev/urandom设备仍然会返回一个随机数,只是该随机数的安全性理论上不高。
如果应用对安全性要求很高,那么应该使用/dev/random。

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

在这里插入图片描述

2.6 Tomcat 目录说明

ll /usr/local/tomcat1

Tomcat 部署与优化_第12张图片

主要目录 用途
bin 存放 启动和关闭Tomcat 的脚本文件,比较常用的是catalina. sh、startup.sh、 shutdown.sh 三个文件
conf 存放 Tomcat 服务器的各种 配置文件,比较常用的是server.xml、context. xml、tomcat-users.xml、 web.xml 四个文件
lib 存放 Tomcat 服务器的 jar 包,一 般不作任何改动,除非连接第三方服务,比如redis, 那就需要添加相对应的jar包
logs 存放 Tomcat 日志
temp 存放 Tomcat 运行时产生的文件
webapps 存放 项目资源的目录,将java项目打包成 jar包或war包,放到这里,Tomcat运行时,会自动解压包。
work Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到
src 存放 Tomcat 的源代码
doc 存放 Tomcat 文档
  • server.xml:Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息
  • context.xml:所有host的默认配置信息
  • tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息; Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加 / 删除用户,为用户指定角色等将通过编辑此文件实现
  • web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息

三、Tomcat 虚拟主机配置

就是基于域名实现多态虚拟主机。

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

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

3.1 创建 kgc和 benet 项目目录和文件

在 项目资源的目录 webapps 中添加两个项目的站点目录 /webapps/kgc//webapps/benet/ ,分别创建主页 index.jsp 文件。

Tomcat 的主页是 .JSP 文件。

ln -s /usr/local/tomcat1/bin/* /usr/local/bin/   #创建软连接 能够全局执行 shutdown.sh shutup.sh

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

echo "192.168.31.106 www.kgc.com www.benet.com" >> /etc/hosts

Tomcat 部署与优化_第13张图片

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

既然是虚拟主机,就是新增 属性

cp /usr/local/tomcat/conf/
cp server.xml server.xml.bak  #备份配置文件

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>

保存并退出

#重启服务;命令路径优化后可以直接使用shutdown.sh和startup.sh
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

Tomcat 部署与优化_第14张图片
浏览器访问 http://www.kgc.com:8080/ http://www.benet.com:8080/
Tomcat 部署与优化_第15张图片


#---------- Tomcat 主配置文件参数解释 ----------
Host name :主机名

appBase:Tomcat程序 工作目录,即存放非归档的web应用程序的目录或归档后的WAR文件的目录路径:相对路径为webapps,绝对路径为/usr/local/tomcat/webapps

unpackWARs:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true

autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true

xmlValidation:是否验证xml文件执行有效性检验的标志

xmlNamespaceAware:是否启用xml命名空间,设置该值与xmlValidation为true,表示对web . xml文件执行有效性检验

docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;
切记!docBase的路径名不能与相应的Host中appBase中定义的路径名有包含关系,比如,如果appBase为deploy,而docBase绝不能为deploy-bbs类的名字(就是名字不能有包含关系)

path:相对于Web服务器根路径而言的URI;如果为空"”, 则表示为此webapp的根路径;如果context定义在一个单独的xml文件中,此属性不需要定义,有可能是别名

reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false

在这里插入图片描述

四、Tomcat 优化

 Tomcat 默认安装下的 缺省配置 并不适合生产环境,它可能会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。

优化主要包括三方面,分别为:

  • 操作系统优化(内核参数优化)
  • Tomcat 配置文件参数优化
  • Java 虚拟机 (JVM) 调优。

优化参数

常用的优化相关参数如下
redirectPort】如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口。
maxThreads】Tomcat使用线程来处理接收的每个请求,这个值表示 Tomcat 可创建的最大的线程数,即支持的最大并发连接数,默认值是 200。
minSpareThreads】最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是10。
maxSpareThreads】最大备用线程数,一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的socket线程。默认值是-1 ( 无限制)。一般不需要指定。
URIEncoding】指定Tomcat 容器的URL编码格式,语言编码格式这块倒不如其它Web服务器软件配置方便,需要分别指定。
connnectionTimeout网络连接超时,单位:毫秒,设置为0 表示永不超时,这样设置有隐患的。通常默认20000 亳秒就可以。
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”】对于以下的浏览器,不启用压缩。

以上是一些常用的配置参数,还有好多其它的参数设置,还可以继续深入的优化,HTTP Connector 与 AJP Connector的参数属性值,可以参考官方文档的详细说明进行学习。

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

     <Connector port="8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
         redirectPort="8443"
         #72行插入
         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" 
         />
                

#优化就直接用 shutdown.sh  startup.sh

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

修改验证,maxThreads=“500”
Tomcat 部署与优化_第16张图片
在这里插入图片描述

五、Tomcat 多实例部署

  • Tomcat 多实例部署 就是在一台服务器上,安装并且运行多个 Tomcat 服务,通过不同的端口号进行连接。

  • 需要创建一个 Tomcat 全局的服务脚本,用来设置不同的tomcat全局变量。

  • 有几个Tomcat 就需要几个 Tomcat 目录。

---------------------Tomcat多实例部署---------------------

1.安装好 jdk

2.安装 tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mkdir /usr/local/tomcat
mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1

#复制一份 tomcat 目录
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2

3.配置 tomcat 环境变量
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


source /etc/profile.d/tomcat.sh0.

在这里插入图片描述
vim /etc/profile.d/tomcat.sh
添加两个 tomcat 的全局变量
Tomcat 部署与优化_第17张图片. /etc/profile,d/tomcat.sh
执行是全局变量生效
Tomcat 部署与优化_第18张图片


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

修改 tomcat2 配置文件中的服务、连接端口号和 tomcat1 的不一样。
Tomcat 部署与优化_第19张图片


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

vim /usr/local/tomcat/tomcat1/bin/startup.sh
Tomcat 部署与优化_第20张图片
再依次编辑
vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
vim /usr/local/tomcat/tomcat2/bin/startup.sh
vim /usr/local/tomcat/tomcat2/bin/shutdown.sh


6.启动各 tomcat 中的 /bin/startup.sh 
/usr/local/tomcat/tomcat1/bin/startup.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

netstat -natp | grep java

7.浏览器访问测试,可以通过不同的端口访问不同的Tomcat服务
http://192.168.31.106:8080
http://192.168.31.106:8081

这时候就直接可以在全局执行 不同tomcat 下的启动、关闭脚本来启动关闭 tomcat 服务了。
Tomcat 部署与优化_第21张图片
Tomcat 部署与优化_第22张图片
访问验证,现在服务器中有两台 Tomcat 在提供服务了。
Tomcat 部署与优化_第23张图片
就是基于端口号实现多态虚拟主机。

你可能感兴趣的:(Linux)