如何设置多个 Tomcat 实例?

如何设置多个 Tomcat 实例?

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

我进行了一些搜索并发现了两个选项:

  1. 下载压缩的 tomcat 并手动部署。明显的缺点是它不会使用 进行升级apt-get
  2. 使用一些高级脚本,这对于生产服务器来说是很危险的。

还有其他想法可以干净地运行另一个实例吗?

提前致谢,

亚当

答案1

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

它通过提供标准的初始化脚本将 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

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

该软件包提供了可用于为附加 Tomcat 实例创建目录树的tomcat7-user实用程序,其中包括用于手动启动和停止实例的脚本的目录。tomcat7-instance-createbin/

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

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

我收集了一些Kodjo-Kuma Djomeda 的详细信息

答案2

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

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

  <Host name="host1.example.com" appBase="host1"
    unpackWARs="true" autoDeploy="true" 
    xmlValidation="false" xmlNamespaceAware="false" />

  <Host name="host2.example.com" appBase="host2"
    unpackWARs="true" autoDeploy="true" 
    xmlValidation="false" xmlNamespaceAware="false" />

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

答案3

我做了以下事情:

使用应该创建 tomcat 的目录运行以下命令:

tomcat8-instance-create staging

然后将端口改为唯一的端口(如果您正在运行其他 tomcat8:

nano conf/server.xml

我使用与原始 tomcat8 相同的用户,因此我确保所有文件都归 tomcat8 所有

chown -R tomcat8:tomcat8 * 

我将脚本 tomcat8 脚本复制到 /etc/init.d/

cp /etc/init.d/tomcat8 /etc/init.d/tomcat8_staging

并编辑脚本以使其与我的新暂存环境兼容:

nano /etc/init.d/tomcat8_staging

我必须将以下几行编辑为:

NAME=tomcat8_staging
DEFAULT=/etc/default/tomcat8
CATALINA_BASE=/app/tomcat8/staging
CATALINA_HOME=/usr/share/tomcat8

最后我像这样启用了服务器:

systemctl enable tomcat8_staging

当使用以下命令启动时:

service tomcat8_staging start

我收到有关缺少策略文件的错误,因此我在 conf 目录中为其创建了一个链接:

ln -s /etc/tomcat8/policy.d policy.d

相关内容