如何设置多个Tomcat实例?

有没有一种在Ubuntu服务器上运行多个tomcat实例的正确方法?

我做了一些搜索,发现了两个选项:

  1. 下载压缩的tomcat并手动部署它。 显而易见的是,它不会使用apt-get进行升级。
  2. 使用一些高级脚本 ,这在生产服务器中很危险。

干净地运行另一个实例的任何其他想法?

提前致谢,

亚当

我在Ubuntu 14.04.3 LTS上进行设置。 我正在使用tomcat7包提供的Tomcat 7。

它通过提供标准的init脚本将Tomcat安装为系统服务:

 /etc/init.d/tomcat7 

和配置文件:

 /etc/default/tomcat7 

Tomcat支持使用相同的服务器软件运行多个实例。 服务器软件位于$CATALINA_HOME ,实例的文件位于$CATALINA_BASE 。 它们在/etc/init.d/tomcat7中定义如下:

 NAME=tomcat7 CATALINA_HOME=/usr/share/$NAME CATALINA_BASE=/var/lib/$NAME 

(警告:在编辑后者的文件时,请注意它在前者中有一些符号链接。)

tomcat7-user软件包提供了实用程序tomcat7-instance-create ,可用于为其他Tomcat实例创建目录树,包括带有用于手动启动和停止实例的脚本的bin/目录。

我没有找到支持将这样的附加实例转换为系统服务。 因此,必须手动完成,例如:

  1. 选择服务名称的值; 它将是新的init脚本中的$NAME
  2. 创建一个具有该名称的新用户,该用户将拥有Tomcat实例的文件以及Tomcat将运行的文件。 它可以是系统用户,其属性应与tomcat7用户相同。
  3. 以该用户身份运行tomcat7-instance-create以创建Tomcat实例。
  4. 配置它并安装要与其一起运行的Web应用程序。 使用bin/startup.shbin/shutdown.sh脚本测试它们。
  5. 将日志移动到/var/log/$NAME并将它们符号链接回新的Tomcat实例的logs/
  6. /etc/init.d/$NAME ,例如通过复制和修改/etc/init.d/tomcat7并将赋值修改为$NAME 。 (如果你不需要复制整个脚本但是只需要创建一个链接就可以了。)
  7. /etc/default/$NAME指向您的Tomcat实例和用户。
  8. 使用upstart-rc.d安装新服务。

我收集了Kodjo-Kuma Djomeda的一些细节 。

您是否考虑过配置多个webapps目录而不是运行多个tomcat实例?

当然,在某些情况下您确实需要多个实例,但是如果为多个主机分别提供相同的应用程序,您可以通过在server.xml中添加多个声明来实现:

    

现在您可以创建“/ var / lib / tomcat6 / host1”和“/ var / lib / tomcat6 / host2”目录并将WAR文件部署到它们。