最近项目集成调试,有多个系统要部署在同一个Tomcat上,但要求不能使用同一个端口号,这该如何实现呢?
刚好我之前有在《Tomcat权威指南》这本书上有看到这个需求的说明,所以,我就又回头翻了一下那书,把步骤整理了一下,发上来供大家参考 。
本次试验基于以下环境:
- 操作系统: CentOS7
- Tomcat版本:8.0.30
- Tomcat安装路径:/opt/apache-tomcat-8.0.30
本次将基于这份Tomca,为两个应用(demo1 和 demo2)分别创建一个可独立启动的Tomcat实例,称为 instance1 和 instance2。
建立实例目录
# 创建测试目录
mkdir -p /home/user1/study/tomcat
cd /home/user1/study/tomcat
# 创建 instance1 的根目录
mkdir instance1
# 创建 instance2 的根目录
mkdir instance2
创建相关目录
为 instance1 和 instance2 创建以下目录:
# 以 instance1 为例进行说明
cd /home/user1/study/tomcat/instance1
mkdir conf
mkdir logs
mkdir temp
mkdir webapps
mkdir work
拷贝配置文件
将服务器上Tomcat目录下的conf目录中的文件拷贝至 instance1 和 instance2 的 conf 目录下
# 以 instance1 为例进行说明
cd /opt/apache-tomcat-8.0.30
cp bin/* /home/user1/study/tomcat/instance1/conf
文件应该是以下几个:
- catalina.policy
- catalina.properties
- context.xml
- logging.properties
- server.xml
- tomcat-users.xml
- web.xml
如果有其他文件夹,比如 Catalina,则可以无视,不需要拷贝过来。
修改端口号
为 instance1 和 instance2 的 conf 目录下的 server.xml 文件修改相关的端口号,具体需要修改的端口号请参见下图(port.png):
我将 instance1 和 instance2 的端口号分别改为了:
- instance1: ① 12000, ② 12001, ③ 12002, ④ 12003
- instance2: ① 13000, ② 13001, ③ 13002, ④ 13003
作成启动和停止脚本
为了方便启动和停止实例,下面分别作成 启动 和 停止脚本。(以 instance1 为例进行说明)
cd /home/user1/study/tomcat/instance1
# 创建 bin 目录用于存放 脚本
mkdir bin
# 创建 启动 脚本(内容在下面给出)
vim start.sh
# 创建 停止 脚本(内容在下面给出)
vim stop.sh
- start.sh 内容
#!/bin/sh
export CATALINA_HOME="/opt/apache-tomcat-8.0.30"
export CATALINA_BASE="/home/user1/study/tomcat/instance1"
${CATALINA_HOME}/bin/startup.sh
- stop.sh 内容
#!/bin/sh
export CATALINA_HOME="/opt/apache-tomcat-8.0.30"
export CATALINA_BASE="/home/user1/study/tomcat/instance1"
${CATALINA_HOME}/bin/shutdown.sh
其中:
- CATALINA_HOME 必须是服务器上Tomcat的根目录。
- CATALINA_BASE 是每个实例的根目录。
部署应用
将 demo1 和 demo2 的 war 包分别放至 instance1 和 instance2 的 webapps目录下,然后执行 bin 目录下的 start.sh 脚本
访问应用
在浏览器分别打开以下两个链接:
停止应用
分别执行 instance1 和 instance2 的 bin 目录下的 stop.sh 脚本即可。