什么是启动node.js服务的正确方法?

我正在CentOS 6上运行node.js服务statsd )。守护程序和启动这样的服务的正确方法是什么?

潜在的守护进程 – 守护进程应该是特定于语言的还是一般的?

  • 永远 (特定于节点)
  • 守护进程
  • nohup (推测是错的)
  • 启动 – 停止守护进程 (debian-only?是为了守护进程还是启动/停止?什么是CentOS等效?)
  • 如果应用程序本身真的知道如何守护自己,然后有一个-d标志? (例如,通过节点守护进程2或永远监视器 ?)

服务起始者 – 这些应该来自系统/发行版,还是应该来自监控工具,例如monit ?:

  • service ? 在CentOS上真的是/etc/init.d吗?
  • service ? 在Ubuntu上真的是Upstart吗?
  • monit ?
  • 守护神工具 ?
  • runit ?

我不幸的是,这是新的 – 在哪里可以读到什么是最标准,最经典,最可靠的方式呢?

如果应用程序本身真的知道如何守护自己…

如果您的应用程序是作为守护程序运行的,那么应该充分意识到如何守护自身,编写适当的文件(记住日志和PID弹簧)以及处理信号。 大跆拳道如果不是这样的话。

如果你的应用程序不是真正意义上的守护进程,或者这不是它的唯一目的,那么这完全是你的决定。 如果你想让别人容易,你可能会添加它。 如果你想使自己的生活更轻松,你可能会离开它。 人们通常不会有任何“跆拳道”的反应。

服务起始者…

每个发行版的软件包/端口系统应该负责修改你的通用启动/停止脚本以满足他们的特殊需求。 这些东西通常不是火箭科学,但是如果有疑问,请联系您正在开发的发行版的维护人员。

监控工具

应该知道如何与Distro的正式启动/停止机制进行交互,并且不应该如何明确地与程序进行交互(除非程序通过报告机制“发布”数据,可能包括SNMP服务或类似的钩子;所有这真的取决于你的程序做什么)。