在 Debian 上实现 Tomcat 多实例(multi-instance),核心思想是:
一套 Tomcat 程序(CATALINA_HOME) + 多套实例配置(CATALINA_BASE)
下面以 Debian + Tomcat 9 为例说明(Tomcat 8/10 同理)。
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) |
多实例就是:
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
至少修改以下端口(不能冲突):
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" .../>
<Connector port="8009" .../>
<Server port="8006" shutdown="SHUTDOWN">
<Connector port="8081" .../>
<Connector port="8010" .../>
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
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
访问:
示例:/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
如果你愿意,我可以:
直接说你的使用场景即可。