Sending the app over to the remote host was done using the 'git clone' command.
But now that the app is in place I need to monitor it.
Oh and I forgot to tell you that this app (a very lightweight and efficient app obviously ;) is ment to be deployed many times on the same server in order to serve the clients of some of my customers in an independent manner. Hence, I have to create multiple monit configuration files for each of the node apps to be monitored but they will all look the same.
So what I needed was a monitrc template file that I could render with different settings. First I remembered that I already did this kind of stuff when I was a Unix admin ... in perl ... it was a long time ago now. But wouldn't it be wonderful to use node for this also?
Yes, let's! :D
#!/usr/bin/env node /* Output the monitrc of this app Usage: OPTIONS='{Notice that dir is the dirname of the script because the script is installed in ./bin of the app directory. As you can see I use 'EJS' to manage the template part because EJS is a global module used in the apps. The apprc.sh script is a standard start/stop/status rc script which starts node.js."port":<port-number>, ... }' ./monitrc.sh */ var options = JSON.parse(process.env.OPTIONS || "null") || {}; options.port = options.port || 3000; options.dir = options.dir || __dirname; console.log(require('ejs').compile([ 'check process node with pidfile "<%- dir %>/../tmp/app.pid"', ' start program = "/usr/bin/env PORT=<%- port %> <%- dir %>/apprc.sh start"', ' stop program = "<%- dir %>/apprc.sh stop"', ' if failed port <%- port %> protocol HTTP', ' request /', ' with timeout 10 seconds', ' then restart' ].join("\n"))(options));
How wonderful! I now not only use javascript on the client side, on the server side but also on the admin side...
One javascript to rule them all :)
Cheers.
No comments:
Post a Comment