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

gee*_*ter 9 upstart node.js

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

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

我遇到了两个工具.永远新贵

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

还有其他更好的工具吗?

小智 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
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用最小的upstart配置而不是最小的bash脚本:`#!upstart respawn start on runlevel [2345] exec/usr/bin/node/path/to/myScript.js`,它会更安全,也可以开始系统重启. (2认同)

Ste*_*ell 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

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

  • 刚注意到这一点.RedHat正在放弃SystemD的Upstart,所以我认为我的观点是正确的. (3认同)