开发者

setting NODE_ENV for node.js + expressjs application as a daemon under ubuntu

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/you开发者_运维技巧rprogram.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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜