Forever Node JS启动或停止/启动

时间:2013-12-11 21:46:57

标签: node.js upstart forever

我对所有这些都很新,所以我道歉。我的搜索还没有给我一个答案,我还在测试。

我在Ubuntu 12.04 LTS上有一个由Forever启动的Node JS应用程序。我想弄清楚的几个要求:

  1. 启动时自动启动
  2. 能够手动重启应用
  3. 我配置了一个Upstart脚本,它工作正常,但我无法正确停止该过程。我认为问题是因为Upstart正在寻找PID并且Forever创建了一个PID,但是没有告诉Upstart?因此,当我试图停止时,它不知道如何杀死正确的过程。

    以下是我正在尝试做的一个示例:

    #start on startup
    #stop on shutdown
    
    expect daemon
    
    env NODE_BIN_DIR=""
    env NODE_PATH=""
    env APPLICATION_DIRECTORY=""
    env APPLICATION_START=""
    env NODE_ENV=""
    
    #pre-start script
    #sleep 15
    #end script
    
    script
        PATH=$NODE_BIN_DIR:$PATH
        cd /vol01/web/iin
        exec sudo -u ubuntu forever -a -l $LOG -e $eLog  start $APPLICATION_START
    end script
    
    pre-stop script
        PATH=$NODE_BIN_DIR:$PATH
        exec forever stop $APPLICATION_START
    end script
    

    我开始认为对我来说最好的方法是在启动时运行一个cron作业,运行脚本来运行forever节点。此脚本将包括停止应用程序并启动,我可以手动调用脚本。想法?

1 个答案:

答案 0 :(得分:1)

我使用类似的东西:

#!upstart

description "your fancy description"
author "Your Name <youremail@fqdn>"

# start on every run level, 2 is the one on Ubuntu
start on runlevel [2345]

# stop on halt, maintenance or reboot
stop on runlevel [016]

# start our application with the user `user`
exec sudo -u user -i NODE_ENV=production /path/to/bin/for/forever start /home/user/path/to/server >> /home/user/path/to/server/syslog 2>&1

# starting log
pre-start script
  echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /home/user/path/to/server/syslog 2>&1
end script

如果要拆分日志,定义客户PID等,可以使用forever的argv选项来完成此操作。

如果您希望脚本可以使用stop | start | restart,那么您可以按照以下文章进行操作: https://www.exratione.com/2013/02/nodejs-and-forever-as-a-service-simple-upstart-and-init-scripts-for-ubuntu/