windows/linux 同时运行两个以上tomcat
1.情景展示
在服务器上部署javaWeb项目,通常使用tomcat或者jdk来确保项目的正常运行,常常出现的实际应用场景是:一台电脑上往往会运行多个项目,如果把项目都部署到同一tomcat上,虽然可行,但是却不不建议这样做,一方面是日志记录,控制台的监控凌乱,另一方面是tomcat的运行压力,也不利于后期的维护更新。
所以,我们能想到的办法就是:为了确保每个项目的运行相互独立,通常会选择一个项目占用一个tomcat(一个tomcat只部署一个项目),同时运行多个tomcat。
如何实现?
2.具体分析
运行tomcat的前提:
第一,tomcat的运行需要依赖的是JRE,没有java运行环境就无法使用tomcat。
第二,tomcat的版本和JRE版本有对应关系,即:tomcat的运行对JRE版本有要求。
tomcat官网(http://tomcat.apache.org/whichversion.html)给出了tomcat和JDK版本的匹配情况
另外,Tomcat的RUNNING.txt也有当前版本所需JDK说明:
tomcat和jdk都有32位和64位。
3.解决方案
第一步:确定JDK/JRE(可能需要);
首先,说明一点:多个tomcat可以共用同一个jdk。
但这里通常可能会存在这样的情况:
之前的老项目使用的是jdk1.7,此时,我们配置的JAVA_HOME自然是jdk1.7,但是,将要部署的新项目使用的是jdk1.8,这个时候,如何在确保原有jdk的基础上,添加新的jdk,并确保新旧项目同时独立运行,互不干扰?
这个时候,就需要我们给tomcat指定jdk的访问路径啦,具体操作见下文。
第二步:修改tomcat端口号(肯定需要);
第一步也许你用不到,但是,这一步是确保多个tomcat能够同时运行的基础,具体操作见下文。
第三步:确保tomcat没有跑串(可能需要)。
在实际部署项目时,我通常的做法是:一个大的版本tomcat只运行一个,即:tomcat6有且只有一个,tomcat7有且只有一个,tomcat8有且只有一个。。。
这样做的好处在于:在确保端口号修改正确的前提下,各个版本的tomcat不会跑串(比方说:tomcat6现在处于运行状态,此时启动tomcat7,运行的不会是tomcat6的内容和项目);
但往往存在的是这样的场景:
现在服务器上已经有一个tomcat了,无法或者懒得从tomcat官网下载,好,我直接把这个tomcat复制一份,重命名后供另一个项目使用。
先来说一个如何正确复制一个tomcat?
复制整个tomcat目录后,对其进行重命名;
删掉或清空logs目录;
删掉或清空work目录;
删除webapps下的项目,保留原有的项目:
剩下的步骤就是回归到第一步和第二步啦。
这个时候,我们启动当前tomcat的startup.bat会发现:启动的还是原来的tomcat,过一会儿就会闪退,当我们运行shutdown.bat时,会发现关闭的也是原来的tomcat,这就是所谓的tomcat跑串的情况发生了,如何纠正?
需要修改startup.bat和shutdown.bat文件。
在bin目录下找到startup.bat,右键,编辑打开该文件,在setlocat下面配置tomcat的根路径:
set "CATALINA_HOME=D:\apache-tomcat-10.0.2-x64"
按照上述步骤修改shutdown.bat即可。
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/14807564.html