我是一个 node.js 开发人员。我使用 Amazon ec2 部署我的 node.js 应用程序。
我想让我的 node.js 服务永久运行 - 如果由于任何原因失败,则重新启动。
使用其中一个有什么优势吗?
还有其他更好的工具吗?
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
只是为了纠正已接受答案中的误导性陈述......暴发户是一种仅限 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
有了这个,我认为这是一个更有说服力的解决方案。