一台机器上的多个Tomcat实例

在本文中,我们将看到如何在一台机器上和一个用户帐户下运行多个tomcat实例。

我们首先看到tomcat目录结构,其中每个文件夹都有以下用途:

bin –包含用于运行tomcat的所有二进制文件和脚本文件。
lib –包含用于tomcat的所有共享库
conf –包含配置信息,例如tomcat可以绑定哪个端口,等等。
日志 –包含所有日志文件
temp – Tomcat使用此文件夹存储临时文件
webapps –该文件夹非常重要,我们将所有应用程序war文件放在此处
工作 –如果应用程序包含JSP,则每个JSP都会转换并转换为servlet并存储在此处
当我们运行Tomcat时,它使用5个环境变量。 他们是:
  • CATALINA_HOME
  • CATALINA_BASE
  • CATALINA_TMPDIR
  • JRE_HOME / JAVA_HOME
  • 类路径
在上面的列表中,CATALINA_HOME和JAVA_HOME是必需的环境变量。 所有其他都是可选的,可以使用CATALINA_HOME进行计算。
CATALINA_HOME –此环境变量应指向tomcat基本文件夹,在该文件夹中安装/提取了tomcat二进制文件。 因此,根据CATALINA_HOME,我们可以获取binlib文件夹
CATALINA_BASE –如果未指定,则设置CATALINA_HOME值。 此变量指向配置和webapps文件夹。 基于此变量的服务器使用conf,日志,temp,webapps,工作文件夹。

运行Tomcat的通常方法是仅设置CATALINA_HOME环境变量并运行startup.sh脚本文件。 startup.sh文件会自动计算并分配我们尚未设置的其他变量的值。

startup.sh文件设置环境变量,然后调用catalina.sh 。 该文件读取CATALINA_BASE值,附加conf(即$ CATALINA_BASE / conf文件夹)并获取server.xml。 该文件是Tomcat配置的核心。 它包含所有配置信息,例如关闭端口,连接器发布,主机名,应用程序文件夹等。例如,Tomcat通常使用8080作为连接器端口,因此我们可以在http:// localhost:8080 /进行访问

如果我们显式设置$ CATALINA_BASE,则Tomcat将使用我们的变量从目标位置(即我们在CATALINA_BASE中指定的位置)搜索并获取server.xml文件。
此技巧可用于在一台计算机上运行多个Tomcat实例。 我们不需要更改CATALINA_HOME值。 我们只需要在启动/关闭Tomcat之前更改CATALINA_BASE值。

创建一个名为“ tomcat-instance1 ”的文件夹,并从CATALINA_HOME文件夹复制conf,日志,temp,webapps,work文件夹,并更改tomcat-instance1中的 conf / server.xml文件。 我们需要更改以下端口:关机端口,连接器端口,ajp端口和重定向端口。

Shutdown端口 -此端口用于关闭Tomcat。 当我们调用shutdown.sh脚本时,它将向关闭端口发送信号。 该端口是Tomcat Java进程监听的地方。 如果接收到此类信号,则该过程将清除并自行退出。
连接器端口 -此端口是将应用程序暴露给外部客户端的实际端口。
ajp端口 – Web服务器(例如Apache httpd服务器)可以使用此端口与Tomcat通信。 当我们设置负载平衡服务器时,也会使用此端口。
重定向端口 –如果连接器支持非SSL请求,并且收到安全限制要求SSL的请求,则Catalina将自动将请求重定向到该端口。

让我们看一下示例server.xml文件:

<server port="8005" shutdown="SHUTDOWN">
	.....
	<connector
		connectiontimeout="20000"port="8080"
		protocol="org.apache.coyote.http11.Http11NioProtocol"
		redirectport="8443" />
	<connector port="8009" protocol="AJP/1.3" redirectport="8443" />
</server>

因此,我们将这些端口更改为不同的数字,因为一旦绑定了端口,其他进程便无法再次绑定它。 在tomcat-instance1 / conf / server.xml文件中,我配置了服务器端口= 8105,连接器端口= 8181,ajp端口= 8109。

<server port="8105" shutdown="SHUTDOWN">
	.....
	<connector
		connectiontimeout="20000" port="8181"
		protocol="org.apache.coyote.http11.Http11NioProtocol"
		redirectport="81443" />
	<connector port="8109" protocol="AJP/1.3" redirectport="81443" />
</server>

现在,我们可以创建两个脚本文件来启动和关闭tomcat-instance1。

startup-instance1.sh

export CATALINA_BASE= /home/ramki/tomcat-instance1
cd $CATALINA_HOME/bin
./startup.sh

关闭实例1.sh

export CATALINA_BASE= /home/ramki/tomcat-instance1
cd $CATALINA_HOME/bin
./shutdown.sh

在这里,我们显式设置了 CATALINA_BASE变量并将其指向新的tomcat-instance1。 然后,我们转到CATALINA_HOME / bin文件夹,因为所有用于运行tomcat的二进制文件仍然存在。 然后,我们使用启动/关闭脚本。

基于上述技术,我们可以创建许多实例文件夹并更改conf / server.xml文件的端口值,并使用其自己新创建的脚本文件运行该实例。

参考: Ramkitech博客上的 JCG合作伙伴 Rama在单台计算机上运行多个Tomcat实例 (出于可读性原因,对原始文本进行了修改)。

相关文章 :

翻译自: https://www.javacodegeeks.com/2011/08/multiple-tomcat-instances-on-single.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值