我是node.js开发人员。我使用Amazon ec2来部署我的node.js应用程序。
我希望我的node.js服务永久运行 - 如果因任何原因失败,则重新启动。
使用一个优于另一个有什么好处吗?
还有其他更好的工具吗?
答案 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
有了这个,我认为这是一个更引人注目的解决方案。