我是一个node.js开发人员。我使用Amazon ec2部署我的node.js应用程序。
我想让我的node.js服务永久运行-如果由于任何原因失败,则重新启动。
使用一个相对于另一个有任何优势吗?
还有其他更好的工具吗?
Upstart是一个系统服务控制器,类似于SysV Init,它将本质上启动/停止/重新启动为其注册的any服务,无论是否基于Node.js,它还将在系统启动时自动启动以下服务:您。但是Upstart本质上是特定于Ubuntu的,并且Upstart特定的服务不会在其他Linux发行版上运行。
Upstart具有一个SysV Init兼容性层,您可以以此为目标,以保持尽可能广泛的兼容性层。
Forever是一个Node.js应用程序,它根据需要并根据其配置JSON的定义,监视并重新启动其他Node.js应用程序。对您的服务有很多选项和细粒度的控制,而无需在自定义SysV Init脚本中进行复制来进行工作。但是,Forever 不是系统服务,因此,如果服务器重新启动,则必须再次手动启动永远的脚本。
除此之外,如果您需要的是在崩溃时会重新启动脚本的东西,而且您不关心它在系统启动时自动启动,那么您所需要的就是一个简单的bash脚本:
#!/bin/bash
while true
do
node ./myScript.js
done
只是为了纠正已接受的答案中的误导性陈述……这不是真的,暴发户是仅适用于Ubuntu的技术。参见:
https://serverfault.com/questions/291546/centos-6-and-upstarthttp://searchenterpriselinux.techtarget.com/tip/RHEL-6-ditches-System-V-init-for-Upstart-What-Linux-admins-need-to-knowhttp://en.wikipedia.org/wiki/Upstart#Adoption
因此,我认为这是一个更具吸引力的解决方案。