【发布时间】:2014-10-27 08:15:42
【问题描述】:
我正在尝试使用 upstart 作为非 root 用户运行 nodejs 应用程序。
但不知何故,脚本的某些部分将无法运行:例如:
- 如果我像 root 用户一样运行它(下例)NODE_ENV 永远不会被调用/设置
- 调用的唯一方法是使用
"sudo initctl stop pdcapp" -
sudo nameofApp start|stop不起作用 - 调用
sudo initctl stop nameofApp时,停止前脚本不会回显到日志文件 - 如果我尝试像非 root 用户一样运行它,它甚至都不会启动
这不是一种更简洁更简单的方法(systemd)我查看了各种教程,显然这就是他们的做法。那么我在这里错过了什么?
这是/etc/init/下的.conf文件
env FULL_PATH="/srv/pd/sept011100/dev"
env NODE_PATH="/usr/local/nodeJS/bin/node"
env NODE_ENV=production
start on filesystem or runlevel [2345]
stop on [!2345]
script
export NODE_ENV #this variable is never set
echo $$ > /var/run/PD.pid
cd $FULL_PATH
# the command below will not work
#exec sudo -u nginx "$NODE_PATH server.js >> /var/log/PD/pdapp.log 2>&1"
exec $NODE_PATH server.js >> /var/log/PD/pdapp.log 2>&1
end script
pre-start script
echo "[`date`] (sys) Starting" >> /var/log/PD/pdapp.log
end script
pre-stop script
rm /var/run/pdapp.pid
echo "[`date`] (sys) Stopping" >> /var/log/PDC/pdapp.log
end script
在 /var/log/messages 中,当我停止应用程序时我会得到这个,否则我在日志文件中什么也得不到
Sep 2 18:23:14 547610-redhat-dev2 init: pdcapp pre-stop process (6903) terminated with status 1
Sep 2 18:23:14 547610-redhat-dev2 init: pdcapp main process (6899) terminated with status 143
任何想法为什么这不起作用我正在运行 redhat 6.5
【问题讨论】:
标签: linux node.js deployment upstart