(6) tomcat多实例部署

Tomcat 的基本组成

tomcat的单实例部署见https://www.cnblogs.com/liliyang/p/9742284.html

安装好之后,看下目录结构:

[[email protected] tomcat]# ll
total 96
drwxr-xr-x  2 root root  4096 Aug 28 00:08 bin
drwxr-xr-x  3 root root   198 Oct  5 12:30 conf
drwxr-xr-x  2 root root  4096 Aug 27 22:32 lib
-rw-r--r--  1 root root 57011 Dec  1  2017 LICENSE
drwxr-xr-x  2 root root  4096 Oct  5 00:11 logs
-rw-r--r--  1 root root  1444 Dec  1  2017 NOTICE
-rw-r--r--  1 root root  6792 Dec  1  2017 RELEASE-NOTES
-rw-r--r--  1 root root 16242 Dec  1  2017 RUNNING.txt
drwxr-xr-x  3 root root    49 Oct  5 00:19 temp
drwxr-xr-x 10 root root   162 Oct  4 22:11 webapps
drwxr-xr-x  3 root root    22 Aug 27 22:35 work

再介绍一下各个目录及文件:

  • bin                 :主要存放脚本文件,例如比较常用的windows和linux系统中启动和关闭脚本
  • conf               :主要存放配置文件,其中最重要的两个配置文件是server.xml和web.xml
  • lib                  :主要存放tomcat运行所依赖的包
  • LICENSE       :版权许可证,软件版权信息及使用范围等信息
  • logs               :主要存放运行时产生的日志文件,例如catalina.out(曾经掉过一个大坑)、catalina.{date}.log等
  • NOTICE    :通知信息,一些软件的所属信息和地址什么的
  • RELEASE-NOTES:发布说明,包含一些版本升级功能点
  • RUNNING.txt  :运行说明,必需的运行环境等信息
  • temp               :存放tomcat运行时产生的临时文件,例如开启了hibernate缓存的应用程序,会在该目录下生成一些文件
  • webapps        :部署web应用程序的默认目录,也就是 war 包所在默认目录
  • work               :主要存放由JSP文件生成的servlet(java文件以及最终编译生成的class文件)

上面是Tomcat安装后的组成部分,进入bin目录执行startup.sh或catalina.sh  start 就可以了,接着就可以在浏览器输入http://localhost:8080/访问了。

那么问题来了:当你有了三个、五个以及十个应用服务需要同时部署到同一台服务器上时,你的 Tomcat 服务正确启动方式是什么?是把上面文件全部复制出 N 多个目录么?还是有其他处理方式呢?

Tomcat 常见的几种部署场景

通常,我们在同一台服务器上对Tomcat部署需求可以分为以下几种:单实例单应用,单实例多应用,多实例单应用,多实例多应用

实例的概念可以理解为上面说的一个Tomcat目录。

  • 单实例单应用:比较常用的一种方式,只需要把你打好的war包丢在webapps目录下,执行启动 Tomcat 的脚本就行了。
  • 单实例多应用:有两个不同的 Web 项目 war 包,还是只需要丢在webapps目录下,执行启动 Tomcat 的脚本,访问不同项目加上不同的虚拟目录。这种方式要慎用在生产环境,因为重启或挂掉 Tomcat 后会影响另外一个应用的访问。
  • 多实例单应用:多个 Tomcat 部署同一个项目,端口号不同,可以利用 Nginx 这么做负载均衡,当然意义不大。
  • 多实例多应用:多个 Tomcat 部署多个不同的项目。这种模式在服务器资源有限,或者对服务器要求并不是很高的情况下,可以实现多个不同项目部署在同一台服务器上的需求,来实现资源使用的最大化

本文要说的就是这种多实例多应用方式,但多个 Tomcat 就是简单的复制出一个新的 Tomcat 目录后改一下端口么?当然不是,其实真这么做也可以,当当同一台服务器部署了多个不同基于 Tomcat 的 Web 服务时,会遇到下面几个极其现实的问题。

  • 当你需要对数十台 Tomcat 版本进行升级的时候,你需要怎么做?
  • 当你需要针对每一个不同的 Web 服务分配不用的内存时,你需要怎么做?
  • 当你需要启动多台服务器时,你需要怎么做?

当然,好像上面的都不是很重要,注意,划重点,多实例部署最大作用就是最大化利用服务器资源

官方文档:

不建议复制一个又一份的全部 Tomcat 目录进行多实例的部署,说安照下图可以实现更优雅的 Tomcat 单机多实例部署:

CATALINA_HOME指Tomcat安装路径,CATALINA_BASE指实例所在位置。

CATALINA_HOME路径下只需要包含bin和lib目录,
CATALINA_BASE只存放conf、webapps、logs等这些文件

这样部署的好处在于升级方便,配置及安装文件间互不影响,在不影响Tomcat实例的前提下,替换掉CATALINA_HOME中的安装文件

主机地址:10.0.0.125

环境:CentOS 7.x

1、安装JDK,见https://www.cnblogs.com/liliyang/p/9742284.html

2、部署tomcat,按照单实例部署

mkdir -p /application/tomcat-8.5.31

cd /application/

下载或上传tomcat源码包

tar xvf apache-tomcat-8.5.31.tar.gz

mv apache-tomcat-8.5.31/*  /application/tomcat-8.5.31/

ln -s tomcat-8.5.31/  tomcat

echo  ‘export CATALINA_HOME="/application/tomcat"‘  >> /etc/profile
echo  ‘export PATH="${CATALINA_HOME}/bin:${PATH}"‘ >> /etc/profile

source /etc/profile

cd tomcat

mkdir tomcat-01

mv   conf/  LICENSE  logs/  NOTICE  RELEASE-NOTES  RUNNING.txt   temp/  webapps/  work/  tomcat-01

cp -a tomcat-01/  tomcat-02

[[email protected] tomcat]# ll
total 8
drwxr-x--- 2 root root 4096 Oct  5 03:55 bin
drwxr-x--- 2 root root 4096 Oct  5 03:55 lib
drwxr-xr-x 7 root root  138 Oct  5 03:59 tomcat-01
drwxr-xr-x 7 root root  138 Oct  5 03:59 tomcat-02
[[email protected] tomcat]# ll tomcat-01
total 84
drwx------ 2 root root   238 Apr 27 16:26 conf
-rw-r----- 1 root root 57092 Apr 27 16:26 LICENSE
drwxr-x--- 2 root root     6 Apr 27 16:24 logs
-rw-r----- 1 root root  1723 Apr 27 16:26 NOTICE
-rw-r----- 1 root root  7138 Apr 27 16:26 RELEASE-NOTES
-rw-r----- 1 root root 16246 Apr 27 16:26 RUNNING.txt
drwxr-x--- 2 root root    30 Oct  5 03:55 temp
drwxr-x--- 7 root root    81 Apr 27 16:24 webapps
drwxr-x--- 2 root root     6 Apr 27 16:24 work
[[email protected] tomcat]# ll tomcat-02
total 84
drwx------ 2 root root   238 Apr 27 16:26 conf
-rw-r----- 1 root root 57092 Apr 27 16:26 LICENSE
drwxr-x--- 2 root root     6 Apr 27 16:24 logs
-rw-r----- 1 root root  1723 Apr 27 16:26 NOTICE
-rw-r----- 1 root root  7138 Apr 27 16:26 RELEASE-NOTES
-rw-r----- 1 root root 16246 Apr 27 16:26 RUNNING.txt
drwxr-x--- 2 root root    30 Oct  5 03:55 temp
drwxr-x--- 7 root root    81 Apr 27 16:24 webapps
drwxr-x--- 2 root root     6 Apr 27 16:24 work

3、新建 Tomcat 启动、停止脚本

注意:多实例启停脚本中必须设定CATALINA_BASE变量

mkdir  -p  /application/tomcat/tomcat-shell/

cd    /application/tomcat/tomcat-shell/

cat  >>  start-tomcat01.sh <<end

#!/bin/bash
export  CATALINA_BASE="/application/tomcat/tomcat-01"
export  CATALINA_HOME="/application/tomcat"
/application/tomcat/bin/catalina.sh start

end

cat  >>  stop-tomcat01.sh <<end

#!/bin/bash
export  CATALINA_BASE="/application/tomcat/tomcat-01"
export  CATALINA_HOME="/application/tomcat"
/application/tomcat/bin/catalina.sh stop

end

cat  >>  start-tomcat02.sh <<end

#!/bin/bash
export  CATALINA_BASE="/application/tomcat/tomcat-02"
export  CATALINA_HOME="/application/tomcat"
/application/tomcat/bin/catalina.sh start

end

cat  >>  stop-tomcat02.sh <<end

#!/bin/bash
export  CATALINA_BASE="/application/tomcat/tomcat-02"
export  CATALINA_HOME="/application/tomcat"
/application/tomcat/bin/catalina.sh stop

end

[[email protected] tomcat-shell]# ll
total 16
-rw-r--r-- 1 root root 128 Oct  5 04:15 start-tomcat01.sh
-rw-r--r-- 1 root root 128 Oct  5 04:15 start-tomcat02.sh
-rw-r--r-- 1 root root 127 Oct  5 04:17 stop-tomcat01.sh
-rw-r--r-- 1 root root 127 Oct  5 04:17 stop-tomcat02.sh

修改实例2服务的启动端口

cd ../tomcat-02/conf/

修改server.xml文件,将其中的服务端口(默认8005)、2个连接器端口(默认8080和8009)及转发端口(默认8443)全部修改,避免和tomcat01实例冲突

cd ../webapps/ROOT/

cat >>index.html<<end

<html>
<title>Tomcat-02</title>
<body>
This is from tomcat-02.
</body>
</html>

end

cat >>/application/tomcat/tomcat-01/webapps/ROOT/index.html<<end

<html>
<title>Tomcat-01</title>
<body>
This is from tomcat-01.
</body>
</html>

end

chmod +x /application/tomcat/tomcat-shell/*

启动测试:

[[email protected] tomcat-shell]# /application/tomcat/tomcat-shell/start-tomcat01.sh
Using CATALINA_BASE:   /application/tomcat/tomcat-01
Using CATALINA_HOME:   /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/tomcat-01/temp
Using JRE_HOME:        /application/jdk/jre
Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
[[email protected] tomcat-shell]# /application/tomcat/tomcat-shell/start-tomcat02.sh
Using CATALINA_BASE:   /application/tomcat/tomcat-02
Using CATALINA_HOME:   /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/tomcat-02/temp
Using JRE_HOME:        /application/jdk/jre
Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
[[email protected] tomcat-shell]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      24892/python3
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      19441/sshd
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      24892/python3
tcp6       0      0 :::8080                 :::*                    LISTEN      96531/java
tcp6       0      0 :::8081                 :::*                    LISTEN      96583/java
tcp6       0      0 :::22                   :::*                    LISTEN      19441/sshd
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      96531/java
tcp6       0      0 127.0.0.1:8006          :::*                    LISTEN      96583/java
tcp6       0      0 :::8009                 :::*                    LISTEN      96531/java
tcp6       0      0 :::8010                 :::*                    LISTEN      96583/java       

停止:

[[email protected] tomcat-shell]# /application/tomcat/tomcat-shell/stop-tomcat01.sh
Using CATALINA_BASE:   /application/tomcat/tomcat-01
Using CATALINA_HOME:   /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/tomcat-01/temp
Using JRE_HOME:        /application/jdk/jre
Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
[[email protected] tomcat-shell]# /application/tomcat/tomcat-shell/stop-tomcat02.sh
Using CATALINA_BASE:   /application/tomcat/tomcat-02
Using CATALINA_HOME:   /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/tomcat-02/temp
Using JRE_HOME:        /application/jdk/jre
Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
[[email protected] tomcat-shell]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      24892/python3
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      19441/sshd
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      24892/python3
tcp6       0      0 :::22                   :::*                    LISTEN      19441/sshd   

原文地址:https://www.cnblogs.com/liliyang/p/9745282.html

时间: 2024-08-03 00:58:30

(6) tomcat多实例部署的相关文章

tomcat 多实例部署

tomcat 配置多个实例 参考文档 聊聊 Tomcat 的单机多实例 https://www.cnblogs.com/mafly/p/tomcat.html 极客学院 Tomcat 8 权威指南 http://wiki.jikexueyuan.com/project/tomcat/ 名词 CATALINA_HOME CATALINA_BASE catalina.bat startup.bat CATALINA_HOME 指 Tomcat 安装目录,CATALINA_BASE 指实例目录,默认值

tomcat 多实例部署脚本

#!/bin/bash PA=ABC.com JA=/JavaWeb TT=/usr/local/tomcat #Add an instance, and make the appropriate settings AIAS () { echo -e "\n" [ ! -d $JA ] && echo "Warning:Not found $JA,Please check " && exit 1 [ ! -d $TT ] &&

Linux下Tomcat多实例部署配置

1.在/export/Domains下创建站点目录a.b.c,在站点目录下创建server1 2.将Tomcat除了Bin之外的配置文件拷贝到a.b.c下 3.创建启动脚本start.sh,停止脚本stop.sh,代码如下: #!/bin/bash export CATALINA_HOME=/export/servers/apache-tomcat-7 export CATALINA_BASE=/export/Domains/brand.jd.com/server1 export CATALIN

Tomcat安装以及多实例部署

1.简介 Tomcat 是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,  由 Apache.Sun 和其他一些公司及个人共同开发而成.Tomcat 技术先进.性能稳定,而且免费,因而深受 Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器. 端口8080 2.安装 先安装环境变量jdk和apache-tomcat(jdk-8u144-linux-x64.rpm .apache-

CentOS6.6从头到尾部署nginx与tomcat多实例 转

前提条件: 1.需要一个全新的centos系统(本文中用到是centos6.6) 2.vmware虚拟机 3.vmware下安装centos系统,以NAT方式与宿主机相连 4.在centos系统中ping www.baidu.com能ping通,接下来需要联网安装软件 两个tomcat实例部署: 1.从本地上传tomcat到服务器中,如下图所示: 2.在安装软件之前需要先部署一些依赖的包(非常重要呢~嘿嘿),分别列出如下: 安装make:yum -y install gcc automake a

Tomcat单机多实例部署-多项目部署

博文说明[前言]: 本文将通过个人口吻介绍Tomcat单机多实例部署,在目前时间点[2017年8月13号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 本文参考文献及引用文章链接: 1.http://wiki.jikexueyuan.com/project/tomcat/ [Tomcat 8 权威指南-极客学院出品] 2.<Tomcat 权威指南> 2.http://www.cn

Tomcat 单(多)实例部署使用

一.前言 (一).概述 Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台.安全域管理和Tomcat阀等.由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器.但是,不能将 Tomcat 和Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP

tengine反向代理tomcat多实例实现负载均衡

目录 1.引语 2.jdk与tomcat的安装 3.tomcat多实例配置与测试 4.tengine安装与负载均衡配置 5.整体测试 6.思考和优化tomcat配置流程 7.总结 1.引语 有没有这样一种情况,你在一台服务器跑了一个tomcat实例,当有一天你发现不管你怎么优化tomcat,它的并发能力处理能力始终上不去了,而你服务器的硬件资源还有一部份剩余时,这时你就得采用tomcat启用多实例的方式,让剩下的硬件资源也一起利用起来,让用户的请求分摊到多个实例上来处理,这样只要硬件资源允许能大

老大有需求--tomcat多实例运行

原因: 开发之前用的是tomcat7环境,部署的有项目.后来老大让弄一个新项目,需要tomcat1.6.由于两个环境要求部署在一台服务器,而之前环境还要运行,于是tomcat多实例终于派上用场了. 注意事项: 1.软链接要不一样,否则会混淆. 2.环境变量要分开,单独配置. 3.启动文件要指明所需要的jdk和tomcat目录 操作: 略...很简单.