我让守护进程按照这些说明正常工作: 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
没用。
答案 0 :(得分:27)
尝试
exec NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1
在我的设置中,我是一个较小的用户,所以它是
exec sudo -u some-user NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1
由于它正在产生另一个用户,它可能还有另一个环境。我在这里是新手,但它对我有用。
答案 1 :(得分: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
答案 2 :(得分:15)
如果您在生产中使用node.js,我建议您使用forever.js来守护您的程序 https://github.com/nodejitsu/forever
使用npm安装:[sudo] npm install forever -g
export NODE_ENV=production
并运行forever start app.js
您还可以指定放置错误和标准日志的位置。
答案 3 :(得分:4)
在heroku使用中设置NODE_ENV:
heroku config:set NODE_ENV="production"
答案 4 :(得分:2)
Ubuntu / Upstart列在问题中,但我在寻找FreeBSD /系统shell守护进程的答案时到了这里。
以下一行在&#34;开发&#34;环境:
exec node path/to/start/script.js
以下一行在&#34;生产&#34;环境:
NODE_ENV=production exec node path/to/start/script.js
我花了一段时间来弄清楚这一点,所以我想我会分享。