UPSTART脚本非root无法正常工作

时间:2014-09-02 23:36:37

标签: linux node.js deployment upstart

我正在尝试使用upstart作为非root用户运行nodejs应用程序 但不知何故,脚本的某些部分将无法运行:例如:

  1. 如果我像root用户一样运行它(以下示例)NODE_ENV永远不会被调用/设置
  2. 唯一的调用方法是使用"sudo initctl stop pdcapp"
  3. sudo nameofApp start|stop不起作用
  4. 调用sudo initctl stop nameofApp时,预停止脚本将不会回显到日志文件
  5. 如果我尝试像非root用户一样运行它甚至不会启动
  6. 这不是一个更简洁的方法(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

1 个答案:

答案 0 :(得分:1)

Red Hat有一个超级旧版本的Upstart,它可能充满了bug,因为它们从未为Upstart做过贡献,尽管使用它(Fedora在RHEL 6发布之后立即切换到systemd,之后他们才真正尝试了它)。