如何使用通用规范或元configuration生成新创和监控configuration文件?

我正在部署一个节点Web应用程序作为使用grunt的暴发户服务,并使用monit监视它。 然而:

  1. 我的新贵和monitconfiguration相互复制一点点
  2. Upstart不会在env节中进行可变扩展
  3. 我无法finddynamicconfiguration.override的方法(ala upstart .override文件)

我的问题

这意味着我正在寻找一个可以用来生成uptstart .conf和monit conf.d /文件的grunt插件或其他工具。 你能帮我find一个(或build议一个更好的方式来健壮地运行我的节点的Web应用程序)?

一个相当简单的解决

说实话,一个暴发户和monit文件的下划线模板可能就足够了,这就是如果没有现成的解决scheme,我会包装成一个咕噜的插件,但这是一个问题,其他人必须也遇到了,所以我想有一个解决scheme,我只是找不到它。

详情

更详细地说明这三个问题。 我的新贵conf文件看起来像这样:

 setuid node setgid node # ... script mkdir -p /home/node/.my-app echo $$ > /home/node/.my-app/upstart.pid /usr/local/bin/node /var/node/my-app/server.js >> /var/node/my-app/logs/console.log 2>&1 end script # ... 

而我的monitconfiguration如下所示:

 check process node with pidfile /home/node/.my-app/upstart.pid start program = "/sbin/start my-app" with timeout 60 seconds stop program = "/sbin/stop my-app" if failed host localhost port 17394 protocol http and request "/monit.html" then restart if 3 restarts within 5 cycles then timeout 

正如你所看到的,PID文件path和configuration目录是重复的两个(问题1),我很想参数化主机,端口和请求的URL在监控文件(问题3)。

对于问题2(在这里没有variables的扩展,在这里是bug报告),有一些解决方法适用于在*脚本块中使用的variables,这些variables被解释为bash脚本,但是它们似乎在conf文件本身。 我认为这使得不可能指定应用程序应运行在configuration文件中的用户ID?

我刚刚提到的那些技术:

  • 方法1 :不要使用env – 将预处理脚本中的variables回显到文件中,然后再进行处理
  • 方法2 :在所需的所有脚本主体中复制variables扩展
  • 方法3 :将variables存储在一个文件中,并使用命令replace来捕获它们

…或者build议一个更好的方式来健壮地运行我的节点networking应用程序

改用Unitech的PM2 。

我使用PM2运行所有节点应用程序。 它完美的工作,很容易configuration。 它具有自动生成启动脚本的内置function。 它为您提供日志logging,监控和易于维护。

这里是一个很好的文章,展示了亮点。

安装

 npm install -g pm2 

启动应用程序

 pm2 start app.js 

显示运行中的应用

 pm2 list 

创build一个启动脚本

 pm2 startup [ubuntu|centos|systemd] 

在他们的github页面的自述文件中有更多的细节