capistrano 启动的 tomcat 立即死机,使用 ssh 执行完全相同的命令会成功

capistrano 启动的 tomcat 立即死机,使用 ssh 执行完全相同的命令会成功

所以我在 vbox 中试用了 capistrano 和本地虚拟 raring vm。一切正常,我的注意力转移到了真实机器上的部署。几天后,我想再次部署到我的 vm,脚本成功了,但之后没有 tomcat 在运行。

从 capistrano 向我回放的所有消息来看,一切(包括 tomcat 启动)似乎都很顺利。甚至 PID 文件也已写入,但当您查看 ps aux 时,该进程不存在。catalina.out 中没有任何内容,但它的时间戳已更新,这是唯一证据,连同 PID 文件,表明虚拟机上确实发生了一些事情。

接下来我做的是获取 capistrano 记录的整个 tomcat 启动命令,并使用 ssh“手动”执行它。这给了我完全相同的日志消息,但这一次,tomcat 实例实际上已启动并正在运行。

因此,capistrano 在通过 ssh 发送该命令之前对该命令执行的操作必定会搞乱它,但理解运行命令的 capistrano 源代码让我很难,因此任何指点都将不胜感激。

答案1

您是否有来自 capistrano 下的 tomcat 的日志(catalina.out)

需要快速检查的是您是否设置了显示(DISPLAY)变量。

以下链接解释了有关 DISPLAY 的内容:

http://mail-archives.apache.org/mod_mbox/tomcat-users/200808.mbox/%3CF58E0AE5D219DE4DB2646B2199A4F5DD02B74EE3@exsgmb16.apac.nsroot.net%3E

解决方法是:

-Djava.awt.headless=true

更新:看到有关 catalina.out 为空的部分。

答案2

原来是重构时丢失了一个 nohup,有多种因素导致我没有将其视为根本原因。但最终只是一个错误...

相关内容