在单台服务器上运行和pipe理nodejs应用程序

在单个服务器上运行和pipe理多个nodejs应用程序是否有好的方法?

我一直在寻找haibu和nodester ,但是对于我正在尝试做的事情他们看起来有点复杂。

我也一直在看,我认为这可能与configuration文件和web gui,但我不知道我将如何处理通过ENV或parameter passing端口信息。

我使用Supervisord & Monit ,更多细节和configuration示例在这里: Bringr的stream程pipe理 。

此外,您可以直接从supervisordconfiguration文件中指定环境variables(请参阅子stream程环境 )。 但是我个人更喜欢直接在每台机器的〜/ .bashrc中添加这些variables。

如果每个应用程序的端口号不会改变(但在生产和开发环境之间改变)。 我build议在config.json中(或者直接在package.json中)指定它们。 config.json将为每个应用程序包含一个不同的端口号,具体取决于环境:

{ myapp:{ production:{port:8080}, development:{port:3000} } } 

myapp.js里面:

  var config = require('./config'); app.listen(config.myapp[process.env.NODE_ENV].port) 

在〜/ .bashrc中声明了process.env.NODE_ENV

我写了一个应用程序nodegod ,我可以使用less量的应用程序,每个应用程序可能有10个应用程序。

  • nodegod从json读取应用程序列表。 它有一个每个应用程序的内部状态机,以安全的方式处理应用程序生命周期,包括重新启动,网页function停止/启动/debugging。

  • Web界面使用Web套接字,以便您可以通过sshpipe理远程服务器。

  • 当您通过rsync进行部署时,应用程序会自动重启。

  • 由于nodegod监视其他应用程序的标准输出,因此可以捕获应用程序的最后一次呼吸,如segfault和malloc错误。

  • 我在一些快速实例前面使用了一个http代理的分支,所以任何数量的应用程序都可以为每个dns共享一个服务器端口,用于http和web套接字。

我编写了一个haraldops模块来从源码树之外读取应用程序configuration。 有了这个,你可以监视和获取电子邮件,只要有一个应用程序的东西了。

应用程序configuration我保存在文件系统中的git仓库中。

这不是火箭科学,它们都很合适。 只有nodejson :SIMPLE才能完成。

如果你的服务器有暴发户,就使用它。 我没有永远的运气和相似的。 如果你想继续新贵, roco将会是很好的部署解决scheme:

 roco deploy:setup:upstart roco deploy 

我们一直在努力在Nodejitsu foreverhaibu改善。 看起来像你在这里寻找的方法是一个.foreverconfiguration文件的复杂选项。 这个function已经在我们的积压了一段时间了

https://github.com/nodejitsu/forever/issues/124

回头看看。 在下一轮绩效改进之后,我认为这是非常重要的。

这些日子里,我已经采取使用dokku这是一个OSS的英雄克隆克隆 。 部署就像确保你的package.json包含一个启动脚本一样简单。 例如:

 "scripts": { "start": "node index.js" } 

示例应用程序