在运行node.js脚本的上下文中使用upstart脚本或forever脚本有哪些优点和缺点?

时间:2012-03-20 18:43:34

标签: node.js upstart

我是node.js开发人员。我使用Amazon ec2来部署我的node.js应用程序。

我希望我的node.js服务永久运行 - 如果因任何原因失败,则重新启动。

我遇到了两个工具。 ForeverUpstart

使用一个优于另一个有什么好处吗?

还有其他更好的工具吗?

2 个答案:

答案 0 :(得分:8)

Upstart是一个系统服务控制器,类似于SysV Init,它将启动/停止/重启为其注册的任何服务,基于Node.js还是不启用,它也会自动启动服务在系统启动你。但Upstart本质上是针对Ubuntu的,而Upstart特定的服务不会在其他Linux发行版上运行。

Upstart有一个SysV Init兼容层,您可以将其作为目标,以保持尽可能广泛的兼容性层。

Forever是一个Node.js应用程序,它根据需要监视并重新启动其他Node.js应用程序,并根据其配置JSON进行定义。对您的服务进行了大量选项和细粒度控制,而无需在自定义SysV Init脚本中复制它所需的工作量。但是,Forever 不是系统服务,因此如果重新启动服务器,则必须再次手动启动永久脚本。

除此之外,如果您需要的只是在崩溃时重启脚本,并且您不关心它在系统启动时自动启动,那么您只需要一个简单的bash脚本:

#!/bin/bash
while true
do
    node ./myScript.js
done

答案 1 :(得分:5)

只是为了在接受的答案中纠正一个误导性陈述......新贵是一种仅限Ubuntu的技术。参见:

https://serverfault.com/questions/291546/centos-6-and-upstart http://searchenterpriselinux.techtarget.com/tip/RHEL-6-ditches-System-V-init-for-Upstart-What-Linux-admins-need-to-know http://en.wikipedia.org/wiki/Upstart#Adoption

有了这个,我认为这是一个更引人注目的解决方案。