【发布时间】:2012-02-12 17:49:33
【问题描述】:
我的服务器有一个 Upstart 脚本,如下所示:
description "myapp node.js server"
start on runlevel [2345]
stop on shutdown
env NODE_ENV=production
env CUSTOM=somevalue
exec sudo -u nodejs /usr/local/bin/node /opt/myapp/app.js >> /var/log/nodejs/myapp.log 2>&1
post-start script
NODE_PID=`status myapp | egrep -oi '([0-9]+)$' | head -n1`
echo $NODE_PID > /var/run/nodejs/myapp.pid
end script
但是,该应用没有看到 NODE_ENV 设置为生产。事实上,如果我在应用程序中使用 console.log(process.env),我看不到 NODE_ENV 或 CUSTOM。有什么想法吗?
顺便说一句,NODE_ENV=production node app.js 工作正常。
【问题讨论】:
-
彼得莱昂斯的回答深入探讨并提供了一些最佳实践建议,但如果我切换到使用“www-data”用户与我自己的“nodejs”用户。后者还不起作用,但这与这个问题有些无关。
-
我还要提一下,sudo -E(保留环境)可以尝试,虽然我自己没有测试过。
标签: node.js ubuntu environment-variables upstart