如何configuration,运行,监视和pipe理多个不同的节点服务?
我正在开发一个大型系统(MEAN Stack + ElasticSearch + RabbitMQ),有许多不同的nodejs项目和队列一起工作。 我有几个问题。
-
当我想运行和testing整个系统时,我必须打开很多terminal窗口来运行每个项目。 我怎样一次运行它们,方便监控。
-
当我想在多台机器上运行同一个项目时,我怎样才能轻松configuration所有这些项目,因为有时需要花费太多时间来移动并configuration它们。
-
如何轻松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" }]
- 你可以写一个Node项目,使用
child_process
来启动所有其他的参数。 - 你可以考虑像木偶或厨师的工具。
- 和#2一样。