环境:centos7
介绍三种情况的配置
一、本次配置不使用全局环境变量,不同的tomcat配置不同或相同的jdk
网上最多的配置就是在 /etc/profile 中配置多个jdk和tomcat的环境变量,然后在 catalina.sh 和 setclasspath.sh 中配置jdk和tomcat,我们知道jdk的编译环境jre是运行环境,所以在服务器运行时不必安装jdk只安装jre就行了。
在启动tomcat可以通过运行bin下的 startup.sh,startup.sh 会调用 catalina.sh 文件,而 catalina.sh 会调用 setclasspath.sh,我们只需要配置其中一个sh文件就行,通常配置 catalina.sh。
下面是tomcat启动时的打印输出
可以看到 CATALINA_BASE、CATALINA_HOME、CATALINA_TMPDIR、CLASSPATH 这些都是配置tomcat,JRE_HOME是配置jre,如果全局环境变量没有配置,文件是会自动配置本地目录。
综上
只需要在catalina.sh 配置 jre 路径即可
tomcat和jre的解压包
分别配置tomcat7和tomcat8.5的 catalina.sh
修改tomcat7的 server.xml 更改端口号
修改完毕分别启动两个tomcat
地址访问
总结:对于全局环境变量没有配置 jdk 和 tomcat 时,只需要配置 catalina.sh 文件,在其中添加 JRE_HOME 即可。就可以给不同的 tomcat 指定不同的 jdk 。
二、全部使用环境变量,所有的tomcat都用环境变量的jdk
vi /etc/profile 中配置 jdk
export JAVA_HOME=/usr/work/jdk1.7.0_40
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
执行 source /etc/profile 重载环境变量
检查是否配置成功 java -version
检查tomcat 的 catalina.sh 文件,这里的配置文件不需要更改,不需要指定 jre。
启动两个tomcat(注意更改tomcat的端口)
总结:当全局环境变量配置了 jdk或者 jre时,多个 tomcat 使用同版本 jdk 不需要做任何配置。 catalina.sh 等配置文件不需要多余配置,因为配置文件会自动的去匹配环境变量的 jdk 和 jre。
三、环境变量中配置了 jdk,一个 tomcat 使用默认的 jdk(环境变量中jdk),一个 tomcat 使用非环境变量 jdk(其他版本jdk)
环境变量配置了jdk,其中一个tomcat可以配置或者不需要配置(不配置会默认找环境变量),如果配置既:
另外一个tomcat 配置指定版本的 jdk ,catalina.sh 的配置为:
启动两个 tomcat
可以看到启动后,两个tomcat指向了不同的 jdk,一个为环境变量的 jdk,一个为配置的 jre。
总结:配置文件会优先读取文件中的配置,如果配置文件内没有指定变量,就会去读环境变量。 遵循 就近原则。
网上有很多的配置,配置的很繁琐,有的会配置tomcat的环境变量,其实这是没有必要的。
只要明白 就近原则和环境变量就是服务器启动时在内存中添加的多个变量为了后续引用。