相关文章:
当我们在一台服务器上想要部署多个 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 多实例部署就完成了
637

被折叠的 条评论
为什么被折叠?



