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

pky*_*eck 28 linux daemon node.js express

我按照这些说明让守护进程正常工作:http: //kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/

但是因为这会在开发模式下启动应用程序,所以日志文件会被socket.io调试日志发送垃圾邮件.

我尝试在upstart-conf文件中将NODE_ENV设置为production,但没有成功.

script
    export HOME="/root"
    export NODE_ENV=production

    exec /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1
end script
Run Code Online (Sandbox Code Playgroud)

没用.

Yuv*_*val 27

尝试

exec NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1
Run Code Online (Sandbox Code Playgroud)

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

exec sudo -u some-user NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1
Run Code Online (Sandbox Code Playgroud)

而且由于它产生了另一个用户,它可能还有另一个环境.我是新手,但它对我有用.

  • 这对我来说最终有用'脚本导出NODE_ENV =生产exec/usr/bin/node /someapp/server.js >> /var/log/someapp.log 2>&1结束脚本 (3认同)

Pet*_*ons 18

这是一个可以使用的更简单的upstart脚本.Upstart现在支持您在没有脚本部分或太多嵌入式shell语法的情况下直接执行的所有操作.这包括环境变量(env),工作目录(chdir),用户/组(setuid,setgid),日志处理(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
Run Code Online (Sandbox Code Playgroud)


Tia*_*HUo 15

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

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

export NODE_ENV=production并运行forever start app.js您还可以指定放置错误和stdout日志的位置.