i got the daemon working alright with these instructions: http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/
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
didn't work.
Try
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 ( setuid
, setgid
), log handling ( console log
), etc. Your log files will be handled and rotated into /var/log/upstart/your_app.log
description "start and stop the example express.js/node.js server"
author "John Doe <jd@example.com>"
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 https://github.com/nodejitsu/forever
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.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.