同一台机安装多个tomcat

一台机器可以跑多个tomcat实例。无论是tomcat7、tomcat8一起跑,还是多个tomcat8一起跑,都可以。

为什么会有这种需求?有些是因为不同的应用,需要对应不同的WEB容器,如以前做的程序,用JDK1.7,跑在tomcat7下;现在一般都JDK1.8,跑在tomcat8或以上。多个tomcat8的话,是不想应用之间互相影响,多个应用都挤在一个tomcat下,一损俱损。

一、同时跑多个tomcat实例

很简单,tomcat是免安装的,需要什么版本的tomcat,需要多少个tomcat,就复制粘贴多少个tomcat程序文件夹,然后再将<tomcat>/conf/server.xml里的端口改改,避免冲突就可以了。
修改3个端口:

<Server port="8005" shutdown="SHUTDOWN">
...
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
...
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

即修改 8005、8080、8009这3个端口。比如,我放了2个tomcat8,那么第一个不改,就用默认的这3个;然后第二个tomcat的端口,统统改成9开头:

<Server port="9005" shutdown="SHUTDOWN">
...
    <Connector port="9080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
...
    <Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />

改了以后,就用 localhost:9080 进行访问。以此类推。

网上有文章发现了真理,说tomcat实际上分为CATALINA_BASE和CATALINA_HOME两部分,只需保留一个BASE,然后多多复制粘贴HOME。我想说的是,这样究竟节省了啥?除了节省硬盘空间外,应用之间互不影响这个初衷是否得到照顾?另外,如果真有这种机制,tomcat应该早就支持了吧,何必要我们另辟蹊径,大费周折搞这么多。所以我就没有深入下去看这些教程:

南山居:Tomcat多实例部署

Tomcat多实例部署

二、创建windows服务

本来直接运行<tomcat>/bin/startup.bat就好,但有两个不好处:要手动运行;不小心会被关掉。创建windows服务最实际。

怎么建?运行<tomcat>/bin/service.bat

可有两种方式:
1、不指定名称,系统创建默认的服务名称

service.bat install 

这样创建出来后,tomcat8的服务名称就类似:Apache Tomcat 8.5 Tomcat8 这样。可用在单个或第一个tomcat8实例。

2、指定服务名称

service.bat install name tomcat8-2

这样就可以创建第2个tomcat8实例的实例。否则会因为名称重复而失败。
在这里插入图片描述
注意不要在操作系统定义环境变量:CATALINA_HOME、CATALINA_BASE。这两个变量没什么用,根本没必要创建,而且会妨碍创建多个tomcat服务。

发布了1105 篇原创文章 · 获赞 337 · 访问量 338万+

猜你喜欢

转载自blog.csdn.net/leftfist/article/details/103988314