当前位置: 首页 > news >正文

同时部署两个不同版本的tomcat要如何配置环境变量

tomcat9 和 tomcat11 会完全独立使用各自的 JDK 和路径

可以参考本人博客先把两个tomcat安装好

保姆级tomcat的页面部署(静态)-CSDN博客

注意:

我的两个tomcat除了版本,关闭端口,访问端口还有提示语不一样,其他都不需要修改

tomcat11   

关闭端口:8005  访问端口:8080  提示语:Tomcat -1

tomcat9

关闭端口:8006  访问端口:8888  提示语:Tomcat -2

下面是我的tomcat存放的目录

/opt/tomcat11

/opt/module/tomcat9

配置环境变量

1. 清理旧环境变量

(1) 检查并移除全局变量

# 检查是否有残留配置

grep -r "CATALINA_HOME" /etc/ ~/

grep -r "JAVA_HOME" /etc/ ~/

# 如果有,编辑对应文件(如 /etc/profile、~/.bashrc)

注释掉以下行: # export JAVA_HOME=... # export CATALINA_HOME=...

例如我的已修改如下(当然如果完全不配置也是可以的):

只需保留 基础 PATH 配置

# 只设置 PATH(不推荐设置全局 JAVA_HOME/CATALINA_HOME)
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin# 如果需要默认 JDK(非必须),可选择其中一个版本
# export PATH=/opt/jdk17/bin:$PATH  # 或 /opt/module/jdk11/bin

为什么可以完全移除?

  1. setenv.sh 已接管环境变量

    • 每个 Tomcat 的 bin/setenv.sh 已独立配置 JAVA_HOME 和 CATALINA_HOME,优先级更高。

    • 全局变量反而可能导致冲突(如你的最初问题)。

  2. JDK 版本通过 setenv.sh 绑定到 Tomcat

    • Tomcat9 → 强制使用 JDK11

    • Tomcat11 → 强制使用 JDK17

    • 无需依赖全局 JAVA_HOME

  3. 保持系统干净

    • 避免其他用户或服务误用全局变量。

(2) 立即生效
unset JAVA_HOME CATALINA_HOME CATALINA_BASE  # 当前终端清理
source /etc/profile                          # 重新加载配置


2. 为每个 Tomcat 配置独立环境

(1) Tomcat9(使用 JDK11)

① 创建 setenv.sh

vi /opt/module/tomcat9/bin/setenv.sh

内容:

#!/bin/sh
# 强制覆盖全局变量
unset CATALINA_HOME CATALINA_BASE JAVA_HOME JRE_HOME# 设置 Tomcat9 专用变量
export CATALINA_HOME=/opt/module/tomcat9
export CATALINA_BASE=/opt/module/tomcat9
export JAVA_HOME=/opt/module/jdk11
export JRE_HOME=/opt/module/jdk11
② 赋予执行权限

chmod +x /opt/module/tomcat9/bin/setenv.sh


(2) Tomcat11(使用 JDK17)

① 创建 setenv.sh

vi /opt/tomcat11/bin/setenv.sh

内容:

bash

#!/bin/sh
# 强制覆盖全局变量
unset CATALINA_HOME CATALINA_BASE JAVA_HOME JRE_HOME# 设置 Tomcat11 专用变量
export CATALINA_HOME=/opt/tomcat11
export CATALINA_BASE=/opt/tomcat11
export JAVA_HOME=/opt/jdk17
export JRE_HOME=/opt/jdk17
② 赋予执行权限

chmod +x /opt/tomcat11/bin/setenv.sh


3. 修改 Tomcat 端口(避免冲突)

(1) 编辑 Tomcat9 的关闭和访问端口配置

vi /opt/module/tomcat9/conf/server.xml

修改以下端口(确保不与 Tomcat11 冲突):

xml

<Server port="8005" shutdown="SHUTDOWN">  <!-- 默认 8005 → 改为 8006 -->

<Connector port="8080" protocol="HTTP/1.1" ... />  <!-- 默认 8080 → 改为 8888 -->

下面这个如果被注释了那就不用改了,没被注释就改一下
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" ... />  <!-- 默认 8443 → 改为 8444 -->

(2)如需修改提示语可参考我的示例

区分两个tomcat,下面的 Tomcat -1 是指tomcat11版本

cd /opt/tomcat11/webapps/ROOT/

vim index.jsp

下面的 Tomcat -2 是指tomcat9版本

cd /opt/module/tomcat9/webapps/ROOT/

vim index.jsp

(3) 重启 Tomcat9

/opt/module/tomcat9/bin/shutdown.sh
/opt/module/tomcat9/bin/startup.sh


4. 验证配置

(1) 检查 Tomcat9 环境

/opt/module/tomcat9/bin/startup.sh | grep -E "CATALINA_HOME|JRE_HOME"

输出应显示:

text

Using CATALINA_HOME:   /opt/module/tomcat9
Using JRE_HOME:        /opt/module/jdk11
(2) 检查 Tomcat11 环境

/opt/tomcat11/bin/startup.sh | grep -E "CATALINA_HOME|JRE_HOME"

输出应显示:

text

Using CATALINA_HOME:   /opt/tomcat11
Using JRE_HOME:        /opt/jdk17


5. 最终效果

实例安装路径使用的 JDK默认端口启动命令
Tomcat9/opt/module/tomcat9JDK11 (/opt/module/jdk11)8888/opt/module/tomcat9/bin/startup.sh
Tomcat11/opt/tomcat11JDK17 (/opt/jdk17)8080/opt/tomcat11/bin/startup.sh

关键点总结

  1. 隔离环境变量:通过 setenv.sh 为每个 Tomcat 实例单独配置,避免全局污染。

  2. 端口分离:修改 server.xml 防止端口冲突。

  3. 强制覆盖:在 setenv.sh 中使用 unset 清除可能残留的全局变量。

按此配置后,两个 Tomcat 实例将 完全独立运行,互不干扰! 🚀

6.网页测试

可以看到我使用不同端口进入tomcat,出现的提示语不一样

 

http://www.dtcms.com/a/272138.html

相关文章:

  • Xavier上安装RTSP服务端教程
  • 电商 AI 客服中的 NLP 技术:如何实现更自然的人机对话交互?
  • linux-MySQL的安装
  • 从品牌附庸到自我表达:定制开发开源AI智能名片S2B2C商城小程序赋能下的营销变革
  • SQLite3 中列(变量)的特殊属性
  • Linux下LCD驱动-IMX6ULL
  • 一款集驱动TFT屏幕/语音控制/蓝牙为一体的芯片介绍WT2606B
  • Linux驱动学习day21(GPIO子系统)
  • 【保姆级喂饭教程】GitLab创建用户规范,分支开发规范,提交日志规范
  • 标题:2025游戏反外挂终极指南:从DMA对抗到生态治理的全面防御体系
  • 【博文汇项目全维度测试报告:功能与自动化双轨验证】
  • 在指定conda 环境里安装 jupyter 和 python kernel的方法
  • 【LeetCode 热题 100】2. 两数相加——(解法二)迭代法
  • MyBatis-Plus 中使用 Wrapper 自定义 SQL
  • 专题:2025供应链数智化与效率提升报告|附100+份报告PDF、原数据表汇总下载
  • 【2025/07/10】GitHub 今日热门项目
  • JavaEE——线程池
  • 嵌入式开发:云端仿真赋能WS2812创意灯光教学
  • PyTorch随机擦除:提升模型抗遮挡能力
  • 【会员专享数据】2013-2024年我国省市县三级逐日SO₂数值数据(Shp/Excel格式)
  • Houdini 分布式解算效率瓶颈突破:渲染 101 云集群实战指南
  • Transformer江湖录 第一章:江湖前传 - 神经网络门派纷争
  • 微服务架构下某汽车APP电商模块订单服务自动化测试方案(Python蹭个场)
  • YOLO11 目标检测从安装到实战
  • [论文阅读]LLMZip: Lossless Text Compression using Large Language Models
  • qemu vcpu的创建过程
  • 智慧气象新范式:人工智能如何重构城市级气象服务生态?
  • AI技术通过智能缺陷检测正在深度重构多个行业的生产模式、质量管理体系和人才结构,其影响已超越单纯的技术升级,正在引发系统性变革。
  • Windows 11 安装过程中跳过微软账户创建本地账户
  • 大模型 Agent(智能体)技术简介