自动启动tomcat实例的最佳方法可能是什么?我有许多虚拟主机配置为在各种端口上使用 tomcat。我敢肯定有人遇到过这个具有挑战性的管理任务。你认为 rc.local 会做吗?我不想用这么多命令对该文件进行云化,如果适用的话,我想要一个一次性脚本。
自动启动tomcat实例的最佳方法可能是什么?我有许多虚拟主机配置为在各种端口上使用 tomcat。我敢肯定有人遇到过这个具有挑战性的管理任务。你认为 rc.local 会做吗?我不想用这么多命令对该文件进行云化,如果适用的话,我想要一个一次性脚本。
linux 下最好的方法是使用标准的 SysV Init 脚本。这就是守护进程应该在 linux 下启动的方式,因此这是大多数系统管理员首先会看到的地方。
标准就是这样。;)
许多发行版附带了一个骨架启动脚本,您可以对其进行修改以适应,有些附带一个 shell 函数库,您可以获取这些函数库来帮助您编写启动脚本,例如在 redhat 上有
/etc/init.d/functions
.您可能只是使用它来调用 Tomcat 附带的标准启动脚本。Tomcat 甚至可能附带一个 SysV 初始化脚本,我不记得了,自从我安装 vanilla tomcat 以来已经有很多年了。
让你的启动脚本也支持 chkconfig!
我通常使用Condor来管理我的“工作”——如果您愿意,它允许您动态或静态地分发您的应用程序。然后,您应该能够使用您喜欢的任何自动启动机制,而无需让您的配置四处飘荡,让所有人都看到。
为什么不在同一个 tomcat 实例中运行它们呢?Tomcat 可以监听多个端口,并为来自不同 webapp 目录的不同 webapp 集提供服务。调查 tomcat 的 server.xml 文档中的 <engine> 元素。
我会推荐daemontools或monit 之类的东西。SysV 或 Debian initscripts 可以很好地在启动时启动进程,但如果它应该停止,它们不会自动重新启动您的实例。
因为
daemontools
您需要创建一个run
脚本来设置用户和正确的环境变量,然后运行$TOMCAT/bin/catalina.sh run
。因为
monit
您需要知道 tomcat pid 文件的位置,然后使用类似于以下的配置:我编写了一个自定义初始化脚本,它假定目录 /var/tomcat 包含子目录,每个子目录都是 Tomcat 实例的配置。它遍历每个子目录,检查 conf/server.xml 是否存在,如果存在,则将 CATALINA_BASE 设置为该子目录,并使用适当的参数 (stop|start) 运行其 bin/catalina.sh 脚本。