i got the daemon working alright with these instructions:
but because this starts the application in DEVELOPMENT mode, the log file gets spammed with socket.io debug logs.
i tried setting the NODE_ENV to production in the upstart-conf-file but had no success.
script export HOME="/root" export NODE_ENV=production exec /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1 end script
exec NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1
In my setup I’m sudoing as a lesser user, so it’s
exec sudo -u some-user NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1
and since it’s spawning off another user it probably has another environment. I’m a newbie here, but it works for me.
Here’s a simpler upstart script you can use. Upstart now supports everything you need to do directly without script sections or too much embedded shell syntax. This includes environment variables (
env), working directory (
chdir), user/group (
setgid), log handling (
console log), etc. Your log files will be handled and rotated into
description "start and stop the example express.js/node.js server" author "John Doe <[email protected]>" start on filesystem and started networking respawn console log chdir /opt/your_app setuid your_app_user setgid your_app_user env PATH=./node_modules/.bin:./node/bin:/usr/bin env NODE_ENV=production exec app/server.js
If you are using node.js in production, I recommend you use forever.js to daemonize your program
Install using npm:
[sudo] npm install forever -g
export NODE_ENV=production and run
forever start app.js You can also specify where to put error and stdout logs.
to set NODE_ENV in heroku use:
heroku config:set NODE_ENV="production"
Ubuntu/Upstart are listed in the question, but I got here while looking for answers for a FreeBSD/system shell daemon.
The line below started the app in “development” environment:
exec node path/to/start/script.js
The line below started the app in “production” environment:
NODE_ENV=production exec node path/to/start/script.js
It took me a while to figure this out, so I thought I’d share.