将node.js + expressjs应用程序的NODE_ENV设置为ubuntu下的守护程序

我得到的守护进程工作正常与这些指示: http : //kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/

但是因为这会以开发模式启动应用程序,所以日志文件被socket.iodebugging日志获取垃圾邮件。

我尝试在upstart-conf-file中将NODE_ENV设置为生产,但没有成功。

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 

在我的设置中,我是作为一个较小的用户sudoing,所以它

 exec sudo -u some-user NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1 

并且由于它从另一个用户产生,所以它可能具有另一个环境。 我在这里是一个新手,但它适用于我。

这是一个你可以使用的更简单的新贵脚本。 Upstart现在支持你需要做的所有事情,不需要脚本部分或者太多的嵌入式shell语法。 这包括环境变量( env ),工作目录( chdir ),用户/组( setuidsetgid ),日志处理( console log )等。您的日志文件将被处理并旋转到/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 

如果您在生产中使用node.js,我建议您使用forever.js来守护程序https://github.com/nodejitsu/forever

使用npm安装: [sudo] npm install forever -g

export NODE_ENV=productionforever start app.js运行forever start app.js您还可以指定将错误和stdout日志放在哪里。

在heroku中设置NODE_ENV使用:

 heroku config:set NODE_ENV="production" 

在这个问题中列出了Ubuntu / Upstart,但是我在这里找到FreeBSD / system shell守护进程的答案。

下面的行在“开发”环境中启动了应用程序:

 exec node path/to/start/script.js 

下面的行开始在“生产”环境中的应用程序:

 NODE_ENV=production exec node path/to/start/script.js 

我花了一段时间才弄明白,所以我想我会分享。