我已经写了一个 Node.js 应用程序,我希望它能在我们的一台生产机器上运行。这似乎是一个相当普遍的要求,但我无法找到一个适当的解决方案。是否有既定的解决方案来部署产品 Node.js 应用程序?
该应用程序是简单的(< 100 LOC) ,但需要非常有效,可靠,可以连续运行多年不重新启动。它将在一个大型网站上运行,每秒有几十个连接。(该应用程序不作为一个网络服务器使用,它只有一个 JSON API)
以下是我考虑过的方法,但我仍不确定:
使用框架(例如 Express)
因为这个应用程序需要高性能并且非常简单,所以我希望避免以框架的形式添加膨胀。
用 nohup
启动服务器
这里的主要问题是异常处理,我们(显然)不希望整个服务器因为异常而崩溃。据我所知,将整个应用程序包装在 try {} catch {}
循环中是没有用的,因为在发生异常之后,Javascript 解释器会处于一种不可预测的状态。是这样吗?
使用“永远”这样的东西
我已经在我们的 FreeBSD 机器上安装了 Forever,它非常漏洞百出。它最终产生了无穷无尽的进程,而这些进程是永远也杀不死的。我必须运行 kill -9
才能拿回我的机器,而且我对在 Forever 上运行一个生产应用程序不是很有信心。Upstart (类似的工具,但更通用)似乎也不能在 FreeBSD 上运行。
托管解决方案(如 Heroku、 Rackspace、 AmazonEC2等)
这可能是最简单的解决方案,但是我们已经为其余的 Web 服务器提供了一个严肃的硬件。从经济角度考虑,这说不通。
肯定有什么既定的解决方案吧? 我是不是漏掉了什么?