温馨提示×

debian tomcat如何多实例

小樊
45
2026-10-15 06:47:53
栏目: 智能运维

在 Debian 上实现 Tomcat 多实例(multi-instance),核心思想是:

一套 Tomcat 程序(CATALINA_HOME) + 多套实例配置(CATALINA_BASE)

下面以 Debian + Tomcat 9 为例说明(Tomcat 8/10 同理)。


一、安装 Tomcat(只装一次)

sudo apt update
sudo apt install tomcat9 tomcat9-admin

安装完成后:

  • CATALINA_HOME:/usr/share/tomcat9
  • 默认实例:/var/lib/tomcat9

二、理解两个重要目录

目录 作用
CATALINA_HOME Tomcat 程序本体(bin、lib)
CATALINA_BASE 实例配置(conf、webapps、logs、work)

多实例就是:

  • CATALINA_HOME 共用
  • CATALINA_BASE 分开

三、创建多实例目录(示例 2 个)

sudo mkdir -p /opt/tomcat/instance1
sudo mkdir -p /opt/tomcat/instance2

为每个实例创建目录结构:

for i in 1 2; do
  sudo mkdir -p /opt/tomcat/instance$i/{conf,logs,webapps,work,temp}
done

四、复制基础配置文件

for i in 1 2; do
  sudo cp -r /etc/tomcat9/* /opt/tomcat/instance$i/conf/
done

五、修改端口(关键)

编辑每个实例的 server.xml:

sudo nano /opt/tomcat/instance1/conf/server.xml
sudo nano /opt/tomcat/instance2/conf/server.xml

至少修改以下端口(不能冲突):

instance1

<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" .../>
<Connector port="8009" .../>

instance2

<Server port="8006" shutdown="SHUTDOWN">
<Connector port="8081" .../>
<Connector port="8010" .../>

六、创建启动脚本(推荐)

instance1 启动脚本

sudo nano /opt/tomcat/instance1/start.sh
#!/bin/bash
export CATALINA_HOME=/usr/share/tomcat9
export CATALINA_BASE=/opt/tomcat/instance1
$CATALINA_HOME/bin/catalina.sh start
sudo chmod +x /opt/tomcat/instance1/start.sh

instance2 同理

sudo nano /opt/tomcat/instance2/start.sh
#!/bin/bash
export CATALINA_HOME=/usr/share/tomcat9
export CATALINA_BASE=/opt/tomcat/instance2
$CATALINA_HOME/bin/catalina.sh start

七、权限问题(重要)

Tomcat 默认用户是 tomcat:

sudo chown -R tomcat:tomcat /opt/tomcat

八、启动测试

sudo -u tomcat /opt/tomcat/instance1/start.sh
sudo -u tomcat /opt/tomcat/instance2/start.sh

访问:

  • http://localhost:8080
  • http://localhost:8081

九、(可选)做成 systemd 服务

示例:/etc/systemd/system/tomcat-instance1.service

[Unit]
Description=Tomcat Instance 1
After=network.target

[Service]
Type=forking
User=tomcat
Environment="CATALINA_HOME=/usr/share/tomcat9"
Environment="CATALINA_BASE=/opt/tomcat/instance1"
ExecStart=/usr/share/tomcat9/bin/catalina.sh start
ExecStop=/usr/share/tomcat9/bin/catalina.sh stop

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now tomcat-instance1

十、常见用途

  • 不同项目隔离
  • 不同 JDK / 参数
  • 灰度 / 多环境
  • 反向代理(Nginx + 多 Tomcat)

如果你愿意,我可以:

  • 给你 Nginx + 多 Tomcat 反向代理配置
  • 帮你 用 systemd 完整管理
  • 或按 Docker / 多用户 方式设计

直接说你的使用场景即可。

0 踩