如何基于RHEL RPM包创建多Tomcat9实例(RHEL8.7环境)
在RHEL8.7上创建Tomcat9多实例的两种方法
你不需要必须复制完整的Tomcat目录(比如/usr/share/tomcat1),有两种更灵活的实现方式,具体如下:
方法一:复制完整独立实例(适合快速部署)
这种方式让每个实例完全独立,配置和运行互不干扰:
- 复制原Tomcat目录到新路径:
cp -r /usr/share/tomcat /usr/share/tomcat2 - 修改新实例的端口配置:编辑
/usr/share/tomcat2/conf/server.xml,修改三个关键端口避免冲突:- 将HTTP Connector的
port="8080"改为port="8081" - 将AJP Connector的
port="8009"改为port="8010" - 将Shutdown端口的
port="8005"改为port="8006"
- 将HTTP Connector的
- 配置systemd服务:创建
/etc/systemd/system/tomcat2.service,参考原tomcat.service调整路径:[Unit] Description=Apache Tomcat Instance 2 After=syslog.target network.target [Service] Type=forking ExecStart=/usr/share/tomcat2/bin/startup.sh ExecStop=/usr/share/tomcat2/bin/shutdown.sh User=tomcat Group=tomcat Restart=on-failure PIDFile=/usr/share/tomcat2/temp/tomcat2.pid [Install] WantedBy=multi-user.target - 启动并启用服务:
systemctl daemon-reload systemctl enable --now tomcat2
方法二:共享核心文件,分离实例目录(推荐,节省空间)
RPM安装的Tomcat核心文件(bin、lib等)存放在/usr/share/tomcat(即CATALINA_HOME),可以让多个实例共享这个核心目录,每个实例只保留自己的配置、应用、日志等专属目录:
- 创建实例专属目录结构:
mkdir -p /opt/tomcat-instances/tomcat2/{conf,webapps,work,temp,logs} chown -R tomcat:tomcat /opt/tomcat-instances/tomcat2 - 复制原配置文件到实例目录:
cp -r /usr/share/tomcat/conf/* /opt/tomcat-instances/tomcat2/conf/ - 修改实例的端口配置:编辑
/opt/tomcat-instances/tomcat2/conf/server.xml,调整端口避免冲突(同方法一)。 - 设置实例环境变量:创建实例的
setenv.sh文件,指定共享的核心目录和实例目录:mkdir /opt/tomcat-instances/tomcat2/bin cat > /opt/tomcat-instances/tomcat2/bin/setenv.sh << EOF export CATALINA_HOME=/usr/share/tomcat export CATALINA_BASE=/opt/tomcat-instances/tomcat2 EOF chmod +x /opt/tomcat-instances/tomcat2/bin/setenv.sh chown tomcat:tomcat /opt/tomcat-instances/tomcat2/bin/setenv.sh - 配置systemd服务:创建
/etc/systemd/system/tomcat2.service:[Unit] Description=Apache Tomcat Instance 2 After=syslog.target network.target [Service] Type=forking Environment="CATALINA_HOME=/usr/share/tomcat" Environment="CATALINA_BASE=/opt/tomcat-instances/tomcat2" ExecStart=/usr/share/tomcat/bin/startup.sh ExecStop=/usr/share/tomcat/bin/shutdown.sh User=tomcat Group=tomcat Restart=on-failure PIDFile=/opt/tomcat-instances/tomcat2/temp/tomcat2.pid [Install] WantedBy=multi-user.target - 启动服务:
systemctl daemon-reload systemctl enable --now tomcat2
注意事项
- 权限:确保
tomcat用户对实例目录拥有读写权限,避免启动失败。 - 日志:每个实例的日志会保存在自己的
logs目录,方便单独排查问题。 - 升级:使用方法二时,通过RPM升级Tomcat核心后,所有实例会自动使用新版本,无需逐个更新。
内容的提问来源于stack exchange,提问作者user21742699
相关产品推荐
相关产品推荐

