如何configuration,运行,监视和pipe理多个不同的节点服务?

我正在开发一个大型系统(MEAN Stack + ElasticSearch + RabbitMQ),有许多不同的nodejs项目和队列一起工作。 我有几个问题。

  1. 当我想运行和testing整个系统时,我必须打开很多terminal窗口来运行每个项目。 我怎样一次运行它们,方便监控。

  2. 当我想在多台机器上运行同一个项目时,我怎样才能轻松configuration所有这些项目,因为有时需要花费太多时间来移动并configuration它们。

  3. 如何轻松configuration,运行,监控和pipe理整个系统。 例如,我想知道有多less台机器正在运行一个项目。 或者有时候我想要一次更改消息队列名称或IP地址,我不想去两个项目中的每台机器上都改变它们

对不起,我的坏语法,感觉自由的编辑。 提前致谢。

看看PM2
我用它来开发和生产

有了这个工具,你可以定义一个简单的JSON文件来定义你的环境。

pm2_services.json

 [{ "name" : "WORKER", "script" : "worker.js", "instances" : "3", "port" : 3002, "node-args" : "A_CONFIG_KEY" }, { "name" : "BACKEND", "script" : "backend.js", "instances" : "3", "port" : 3000, "node-args" : "A_CONFIG_KEY" }, { "name" : "FRONTEND", "script" : "frontend.js", "instances" : "3", "port" : 3001, "node-args" : "A_CONFIG_KEY" }] 

然后运行pm2 start pm2_services.json

相关命令:

  • pm2 logs
  • pm2 ls显示正在运行
  • pm2 monit显示当前的cpu和内存状态
  • pm2 start FRONTEND开始一项服务
  • pm2 stop FRONTEND停止服务

注意:

小心PM2的手表function。
在我的情况下,我的CPU跳转到永久100%。

要观看许多文件的更改我使用node-dev
这里的解决scheme与PM2一起使用

 [{ "name" : "WORKER", "script" : "worker.js", "instances" : 1, "watch" : false, "exec_interpreter" : "node-dev", "exec_mode" : "fork_mode" }] 
  1. 你可以写一个Node项目,使用child_process来启动所有其他的参数。
  2. 你可以考虑像木偶或厨师的工具。
  3. 和#2一样。