Tomcat -- 06 -- Linux上Tomcat多实例部署

原文链接:Tomcat – 06 – Linux上Tomcat多实例部署


相关文章:


当我们在一台服务器上想要部署多个 Tomcat 实例时,在不了解 Tomcat 的相关参数时,我们通常会下载多份 Tomcat 来安装使用,而实际情况下,多个 Tomcat 实例可以共用同一个安装目录,现在就让我们来看看 Tomcat 多实例部署的流程

官方文档:introduction


一、CATALINA_HOME 和 CATALINA_BASE 的区别

  • 在了解流程之前,我们先来了解下 CATALINA_HOME 和 CATALINA_BASE 的区别

    • CATALINA_HOME

      • 表示 Tomcat 安装的根目录

      • 例如: /home/tomcat/apache-tomcat-9.0.10 或 C:\Program Files\apache-tomcat-9.0.10

    • CATALINA_BASE

      • 表示特定 Tomcat 实例运行时配置的根目录 (工作目录)

      • 如果要在一台服务器上部署多个 Tomcat 实例,应该使用该属性

  • 也就是说,如果我们想要运行多个 Tomcat 实例,但是又不想安装多个 Tomcat,那么我们就可以配置多个工作目录,每个运行实例独占一个工作目录,但是共享同一个安装目录


二、使用 CATALINA_BASE 的好处

  • 便于 Tomcat 的升级管理,这是因为所有 Tomcat 实例共享安装目录中的二进制文件和相关 jar 包,升级的时候只需要更新安装目录 (CATALINA_HOME),即可对所有 Tomcat 实例生效

三、多实例部署流程

1、下载 Tomcat
  • 首先我们上官网下载最新的 Tomcat,这里我下载的是 apache-tomcat-9.0.36.tar.gz,将其部署到服务器上并解压

    • mkdir /usr/local/tomcat

    • cd /usr/local/tomcat

    • wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/tomcat/tomcat-9/v9.0.36/bin/apache-tomcat-9.0.36.tar.gz

    • tar -zxvf apache-tomcat-9.0.36.tar.gz

    • rm -rf apache-tomcat-9.0.36.tar.gz

2、创建赋值文件夹
  • 根据官方文档可知,Tomcat 的安装目录仅需 bin 和 lib 两个文件夹,工作目录则需要 logs、webapps、work、temp 四个文件夹 (如果某个实例需要额外的类库,则还需要 lib 文件夹)
    在这里插入图片描述

  • 因此,在 apache-tomcat-9.0.36 的同级目录下,我们再创建两个文件夹,分别是 apache-tomcat-9.0.19-001 和 apache-tomcat-9.0.19-002,并将 apache-tomcat-9.0.36 中的相关文件夹下复制到新建的两个文件夹中,并在 apache-tomcat-9.0.36 中删除无关文件,此时,三个文件夹的示意图如下
    在这里插入图片描述

3、修改默认欢迎页面
  • apache-tomcat-9.0.36-001

    • cd /usr/local/tomcat/apache-tomcat-9.0.36-001/webapps/ROOT

    • vim index.jsp
      在这里插入图片描述

    • :wq

  • apache-tomcat-9.0.36-002

    • cd /usr/local/tomcat/apache-tomcat-9.0.36-002/webapps/ROOT

    • vim index.jsp
      在这里插入图片描述

    • :wq

4、修改端口
  • apache-tomcat-9.0.36-001

    • cd /usr/local/tomcat/apache-tomcat-9.0.36-001/conf

    • vim server.xml

      <Server port="7020" shutdown="SHUTDOWN">
      
      <Connector port="7021" protocol="HTTP/1.1"
                 connectionTimeout="20000"
                 redirectPort="8443" />
      
      <Connector port="7022" protocol="AJP/1.3" redirectPort="8443" />
      
    • :wq

  • apache-tomcat-9.0.36-002

    • cd /usr/local/tomcat/apache-tomcat-9.0.36-002/conf

    • vim server.xml

      <Server port="7023" shutdown="SHUTDOWN">
      
      <Connector port="7024" protocol="HTTP/1.1"
                 connectionTimeout="20000"
                 redirectPort="8443" />
      
      <Connector port="7025" protocol="AJP/1.3" redirectPort="8443" />
      
    • :wq

5、设置环境变量
  • vim /etc/profile

    #tomcat
    export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.36
    export CATALINA_BASE1=/usr/local/tomcat/apache-tomcat-9.0.36-001
    export CATALINA_BASE2=/usr/local/tomcat/apache-tomcat-9.0.36-002
    
  • :wq

  • source /etc/profile

6、编写控制脚本
  • 我们先来编写 apache-tomcat-9.0.36-001 的控制脚本

    • cd /usr/local/tomcat/apache-tomcat-9.0.36-001

    • vim run.sh

      #!/bin/bash
      
      export CATALINA_BASE=$CATALINA_BASE1
      echo $CATALINA_BASE
      
      #使用说明,用来提示输入参数
      usage() {
      	echo "Usage: startup.sh {start|stop|restart|status}"
      	exit 1
      }
      
      #检查程序是否正在运行
      is_running() {
      	pid=`ps -ef|grep Dcatalina.base=${CATALINA_BASE}|grep -v grep|awk '{print $2}'`
      	#如果不存在则返回1,存在则返回0
      	if [ -z "${pid}" ]
      	then
      		return 1
      	else
      		return 0
      	fi
      }
      
      #启动
      start() {
      	is_running
      	if [ $? -eq 0 ]
      	then
      		echo "${CATALINA_BASE} is already running, pid=${pid}"
      	else
      		exec $CATALINA_HOME/bin/catalina.sh start
      	fi
      }
      
      #停止
      stop() {
      	is_running
      	if [ $? -eq 0 ]
      	then
      		kill -9 $pid
      	else
      		echo "${CATALINA_BASE} is not running"
      	fi
      }
      
      #查看运行状态
      status() {
      	is_running
      	if [ $? -eq 0 ]
      	then
      		echo "${CATALINA_BASE} is running, pid is ${pid}"
      	else
      		echo "${CATALINA_BASE} is not running"
      	fi
      }
      
      #重启
      restart() {
      	stop
      	sleep 5
      	start
      }
      
      #根据输入的参数,选择对应的执行方法,不输入则执行使用说明
      case "$1" in
      	start)
      		start
      		;;
      	stop)
      		stop
      		;;
      	status)
      		status
      		;;
      	restart)
      		restart
      		;;
      	*)
      		usage
      		;;
      esac
      
    • :wq

    • chmod +x run.sh

  • 将 apache-tomcat-9.0.36-001 的控制脚本复制到 apache-tomcat-9.0.36-002 中,将脚本中的 $CATALINA_BASE1 改为 $CATALINA_BASE2 即为 apache-tomcat-9.0.36-002 的控制脚本

  • 此时,三个文件夹的示意图如下
    在这里插入图片描述


四、查看效果

  • 分别启动 apache-tomcat-9.0.36-001 和 apache-tomcat-9.0.36-002 中的 run.sh 脚本 (./run.sh start)

  • 打开浏览器,输入地址后,如下所示
    在这里插入图片描述
    在这里插入图片描述

  • 结果符合预期,至此 Tomcat 多实例部署就完成了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值