先mark一篇文章,写的很详细:https://blog.csdn.net/qq_39654841/article/details/82048857
在windos和linux上装两个tomcat大同小异,都需要修改环境变量和端口。下面是在windows上安装。
原装tomcat为免安装版,直接复制原装tomcat到当前文件夹:
启动tomcat2后闪退,查看log,报错内容很多,有一条是address is already in use:
严重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8443"]
java.net.BindException: Address already in use: JVM_Bind <null>:8443
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:413)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:728)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:452)
at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:560)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:840)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:654)
at org.apache.catalina.startup.Catalina.load(Catalina.java:679)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)
Caused by: java.net.BindException: Address already in use: JVM_Bind
修改/conf/server.xml中的tomcat端口,8005、8080、8009三个端口都要修改:
(图片来自于https://blog.csdn.net/qq_39654841/article/details/82048857)
修改完成之后启动tomcat2,发现不再闪退,并且可以访问到tomcat页面。
过程中我并没有配置CATALINA_HOME变量,我也不知道自己为啥就不用再配CATALINA_HOME了?
为了确认自己访问到的的确是tomcat2,打开tomcat2下的webapps/ROOT/index.jsp,在页面中显示tomcat2使用的端口8081:
这说明我访问到的的确是tomcat2,并且同时打开tomcat,tomcat2可以明显看出来是两个tomcat服务。
关于CATALINA_HOME变量:
我个人感觉CATALINA_HOME就是用来指向tomcat位置的,使用两个tomcat服务的时候,如果不另外配置一个CATALINA_HOME2,那么访问tomcat2的时候其实还是访问的第一个tomcat。
之前在centos7中装两个tomcat,是必须要在环境变量中再配置一个CATALINA_HOME的,配置完之后,还要修改server.xml中引用的CATALINA_HOME,将CATALINA_HOME换成你自己自定义的CATALINA_HOME名。