如何设置多个Tomcat实例?
有没有一种在Ubuntu服务器上运行多个tomcat实例的正确方法?
我做了一些搜索,发现了两个选项:
- 下载压缩的tomcat并手动部署它。 显而易见的是,它不会使用
apt-get
进行升级。 - 使用一些高级脚本 ,这在生产服务器中很危险。
干净地运行另一个实例的任何其他想法?
提前致谢,
亚当
我在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/
目录。
我没有找到支持将这样的附加实例转换为系统服务。 因此,必须手动完成,例如:
- 选择服务名称的值; 它将是新的init脚本中的
$NAME
。 - 创建一个具有该名称的新用户,该用户将拥有Tomcat实例的文件以及Tomcat将运行的文件。 它可以是系统用户,其属性应与
tomcat7
用户相同。 - 以该用户身份运行
tomcat7-instance-create
以创建Tomcat实例。 - 配置它并安装要与其一起运行的Web应用程序。 使用
bin/startup.sh
和bin/shutdown.sh
脚本测试它们。 - 将日志移动到
/var/log/$NAME
并将它们符号链接回新的Tomcat实例的logs/
。 - 写
/etc/init.d/$NAME
,例如通过复制和修改/etc/init.d/tomcat7
并将赋值修改为$NAME
。 (如果你不需要复制整个脚本但是只需要创建一个链接就可以了。) - 写
/etc/default/$NAME
指向您的Tomcat实例和用户。 - 使用
upstart-rc.d
安装新服务。
我收集了Kodjo-Kuma Djomeda的一些细节 。
您是否考虑过配置多个webapps目录而不是运行多个tomcat实例?
当然,在某些情况下您确实需要多个实例,但是如果为多个主机分别提供相同的应用程序,您可以通过在server.xml中添加多个声明来实现:
现在您可以创建“/ var / lib / tomcat6 / host1”和“/ var / lib / tomcat6 / host2”目录并将WAR文件部署到它们。