我得到的守护进程工作正常与这些指示: 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
),用户/组( 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
如果您在生产中使用node.js,我建议您使用forever.js来守护程序https://github.com/nodejitsu/forever
使用npm安装: [sudo] npm install forever -g
export NODE_ENV=production
并forever 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
我花了一段时间才弄明白,所以我想我会分享。