# Windows 上用 CATALINA_BASE 跑多个 Tomcat 实例

> 共享一份 Tomcat 安装，创建隔离的 CATALINA_BASE，改端口，并给每个实例注册独立服务。

**测试环境**

- 版本号: 26100.33650
- 版本: Standard / Datacenter
- 架构: x64
- 证据: E1
- 核验日期: 2026-10-29

## 一句话结论

`CATALINA_HOME` 是 Tomcat 二进制；`CATALINA_BASE` 是一个实例的配置、日志、webapps、work。

一份安装跑两个实例：

```text
C:\tomcat\            CATALINA_HOME
C:\tomcat\instances\a CATALINA_BASE
C:\tomcat\instances\b CATALINA_BASE
```

每个 base 自己的 `conf/server.xml`，端口不同。

## 创建实例

```powershell
$home = 'C:\tomcat'
$base = 'C:\tomcat\instances\a'
New-Item -ItemType Directory -Force $base\conf,$base\logs,$base\temp,$base\webapps,$base\work | Out-Null
Copy-Item "$home\conf\*" "$base\conf" -Recurse -Force
```

不要复制 `logs`/`work` 内容；建空目录。`conf` 复制后改。

## 端口

`C:\tomcat\instances\a\conf\server.xml`：

```xml
<Server port="8005" shutdown="SHUTDOWN">
  <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" />
  <Connector port="8009" protocol="AJP/1.3" secretRequired="true" />
</Server>
```

实例 B 用 `8006`、`8081`、`8010`（不用 AJP 就禁用）。所有端口都要唯一：shutdown、HTTP、AJP、redirect。

## 启动实例

```bat
set "CATALINA_HOME=C:\tomcat"
set "CATALINA_BASE=C:\tomcat\instances\a"
C:\tomcat\bin\catalina.bat run
```

服务方式每个 base 单独注册；用不同服务名，别把同一服务注册两次。验证：

```powershell
Get-CimInstance Win32_Process -Filter "Name='java.exe'" |
  Select-Object ProcessId, CommandLine
Invoke-WebRequest http://localhost:8080/ -UseBasicParsing | Select-Object StatusCode
Invoke-WebRequest http://localhost:8081/ -UseBasicParsing | Select-Object StatusCode
```

命令行里的 `-Dcatalina.base=...` 证明每个 JVM 用哪个 base。

## 部署与隔离

- 每个应用放自己的 `webapps`，或用 context XML 指向外部路径。
- `logs`、`temp`、`work` 每 base 独立。
- 除非有意，不共享 JDK；每实例固定 `JAVA_HOME`（见 Java 多版本）。
- 一个实例崩不该占另一个的端口/日志。

> **警告: 复制整个 Tomcat 目录不是多实例**
>
> 两个完整副本能用但浪费磁盘、升级会漂移。一个 `CATALINA_HOME` + 独立 `CATALINA_BASE` 才是受支持的多实例模型。

## 实验室边界

E1。实验室没有安装 Tomcat；布局和命令是 Server 2025 上待验证的多实例流程。

## 来源

- [Apache Tomcat — RUNNING](https://tomcat.apache.org/tomcat-10.1-doc/RUNNING.txt)
- [Apache Tomcat — Windows 服务](https://tomcat.apache.org/tomcat-10.1-doc/windows-service-howto.html)
- [Apache Tomcat — 配置](https://tomcat.apache.org/tomcat-10.1-doc/config/)

---

来源页面: https://winbook.fyi/zh/server/runtimes/tomcat-instances/
