在Windows上使用多个CATALINA_BASE设置Tomcat 6实例

17

附带在Tomcat分发包中的RUNNING.txt文件指示使用CATALINA_BASE变量来启用多个Tomcat实例。但是,我该如何为每个Tomcat实例目录设置CATALINA_BASE环境变量?

3个回答

41

在你的开发机器上拥有多个Tomcat实例非常好。以下是我通常在Windows上进行设置的步骤(设置的重点在第2、3、4和5步):

  1. 将Tomcat 6的副本安装到一个目录中(例如C:\ apache-tomcat-6.0.20 )。
  2. conf目录复制到另一个目录中(例如C:\ tomcat-1
  3. C:\ tomcat-1 下,创建一个bin目录
  4. C:\ tomcat-1 \ bin 目录中,创建一个名为startup.bat的文件,内容如下:

    set CATALINA_BASE=C:\ tomcat-1

    set CATALINA_HOME=C:\ apache-tomcat-6.0.20

    C:\ apache-tomcat-6.0.20 \ bin \ startup.bat

  5. C:\ tomcat-1 \ bin 目录中,创建一个名为shutdown.bat的文件,内容如下:

    set CATALINA_BASE=C:\ tomcat-1

    set CATALINA_HOME=C:\ apache-tomcat-6.0.20

    C:\ apache-tomcat-6.0.20 \ bin \ shutdown.bat

  6. 可选的:在C:\ tomcat-1 \ bin 目录下创建一个名为setenv.bat的文件,以设置在C:\ apache-tomcat-6.0.20 \ bin \ catalina.bat 中提到的任何环境变量。这是设置系统属性、JPDA地址等的地方。

  • C:\tomcat-1目录下创建logstempwebappswork目录。
  • C:\tomcat-1目录运行bin\startup.bat文件。
  • 对于所需的所有Tomcat实例,请重复第2步中的操作。
  • 尽量不要在名称中带有空格的目录中安装Tomcat。这样安装也可以,但这样做会减少出现问题的可能性。如果您正在使用Windows的“作为服务”选项,则我不知道该怎么做。

    从这里开始,您应该能够隔离Tomcat实例。只需确保编辑conf\server.xml文件,以使关闭端口和HTTP连接器端口不干扰可能正在运行的其他Tomcat实例。我通常将8005、8006、8007等值分配给关闭端口,并将8080、8081、8082等值分配给HTTP连接器端口。


    1
    非常好的回答,但您能否修复一下拼写错误和诸如:需要conf目录,在第5步中使用shutdown.bat而不是startup.bat,CATALINA_HOME必须设置并指向实际的Tomcat安装路径。 - kosoant
    1
    非常好的回答 :-),我成功地创建了一个怪物 :-) 非常感谢。 - Jeril Kuruvila
    非常感谢 'Andy Gherna'。您提供的出色且简单的答案对我帮助很大。如果可能的话,我想了解如何将独立的JVM分配给Tomcat。再次感谢! - RamBen
    嗨,安迪,我们能否在一个Tomcat实例上为每个Web应用程序维护单独的Catalina属性?这意味着我已经在一个Tomcat下创建了多个Web应用程序,并将相同的代码库复制到这些Web应用程序中。现在我想为它们提供单独的Catalina属性。我们可以这样做吗?或者我们需要按照你建议的方式去做。 - yatinbc
    @yatinbc,我认为是的。只要您按照上面的第2步操作,就可以配置每个单独的Tomcat实例的catalina.properties,使其成为您想要的任何内容。 - Andy Gherna
    显示剩余2条评论

    5
    有一种更简单的方法。只需不在您的计算机上定义CATALINA_HOME作为环境变量即可。startup.bat和shutdown.bat已经带有以下代码:
    if not "%CATALINA_HOME%" == "" goto gotHome
    set "CATALINA_HOME=%CURRENT_DIR%"
    

    您应该已经准备好了。 PS:记得编辑server.xml并放置一个新的端口号。 :)

    还有四个端口需要更改! - Paul
    一般来说,它是有效的,但%CURRENT_DIR%实际上是%cd%。因此,如果您从另一个目录(使用其绝对路径)运行脚本,则%CATALINA_HOME%将具有错误的值。 - ROMANIA_engineer

    0

    这个链接有一个对我很有效的答案。其他一些答案似乎忽略了server.xml文件中必须修改的多个位置。在找到这个答案之前,我的几个Tomcat服务器之间存在端口冲突。我已经将HTTP/1.1连接器端口改为8081,但是忽视了对于我的Tomcat(版本7)来说显然很重要的一些其他端口的修改。顺便说一句,我有一个Tomcat服务版本和一个非服务版本。

    First server.xml file
    
    <connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    <server port="8005" shutdown="SHUTDOWN"/>
    <connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <connector port="8100" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    
    Second server.xml file
    
    <connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    <server port="8006" shutdown="SHUTDOWN"/>
    <connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
    <connector port="8101" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    

    http://www.ansoncheunghk.info/article/5-steps-install-multiple-apache-tomcat-instance-windows


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接