Windows環境同時啟動多個Tomcat

大唐冠军侯發表於2024-09-05

背景
現在有好幾個 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 目錄下,便於管理和分析。

相關文章