Windows环境同时启动多个Tomcat

背景
现在有好几个 war 包需要部署到 Tomcat 上,而且都要求直接放在 ROOT 目录下,即不能产生多余的上下文。

1 环境准备

可以参考我的这篇博文的第3章。安装好 Tomcat 并明白如何部署 war 包。

2 实现多开

2.1 基本原理

CATALINATomcatservlet 容器,我们可以指定不同的 CATALINA_HOME 来同时启动多个 Tomcat

2.2 实现

在合适的地方创建一个文件夹用来存放后续创建的多开 Tomcat 的文件夹,这里我就放在 Tomcat 的根目录下,命名为 /moreCats
/moreCats 下创建 /cat1/cat2 2个目录,复制原 Tomcat 根目录下的这几个文件夹到 /cat1/cat2 中。

/conf
/logs
/temp
/webapps
/work

以下以 /cat1 举例, /cat2 同理。
/cat1 目录下创建 start.bat 启动脚本。

@echo off
REM 启动第1个Tomcat实例
REM 将这里设置为你自己的真实目录
set "CATALINA_BASE=D:\coding_work\apache-tomcat-9.0.64\moreCats\cat1"
call "%CATALINA_HOME%\bin\startup.bat"

修改 /cat1/conf/server.xml 中的端口配置,多个 Tomcat 示例端口不能重复。

<!--需要修改HTTP、AJP和Shutdown-->
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

把上面的3个端口设置不重复就行了。
然后使用启动脚本启动即可。
最后展示下改造后的目录结构。

apache-tomcat-9.0.64/
├── bin/
├── conf/
├── lib/
├── logs/
├── temp/
├── webapps/
├── work/
├── moreCats/
│   ├── cat1/
│   │   ├── conf/
│   │   │   └── server.xml
│   │   ├── lib/
│   │   ├── logs/
│   │   ├── webapps/
│   │   ├── work/
│   │   └── start.bat
│   ├── cat2/
│   │   ├── conf/
│   │   │   └── server.xml
│   │   ├── lib/
│   │   ├── logs/
│   │   ├── webapps/
│   │   ├── work/
│   │   └── start.bat

注意事项:

  • 环境变量:确保批处理脚本中每次启动不同实例时使用的是正确的 CATALINA_BASE
  • 端口号冲突:不同的实例需要在 server.xml 中设置不同的 HTTPAJPShutdown 端口,避免冲突。
  • 日志管理:每个实例的日志将存储在各自的 logs 目录下,便于管理和分析。
posted @ 2024-09-05 16:42  大唐冠军侯  阅读(72)  评论(0编辑  收藏  举报