Upstart / init脚本无法正常工作

时间:2014-02-27 13:26:15

标签: init upstart

我正在尝试创建一个服务/脚本来自动启动和控制我的nodejs服务器,但它似乎根本不起作用。

首先,我使用此来源作为主要参考http://kvz.io/blog/2009/12/15/run-nodejs-as-a-service-on-ubuntu-karmic/

经过测试后,我最小化了实际文件的内容以避免任何类型的错误,导致这种情况(最低限度,但它不起作用)

description "server"
author      "blah"

start on started mountall
stop  on shutdown

respawn
respawn limit 99 5

script
  export HOME="/var/www"

  exec nodejs /var/www/server/server.js >> /var/log/node.log 2>&1
end script

该文件保存在/etc/init/server.conf

当尝试启动脚本时(以root或普通用户身份),我得到:

root@iof304:/etc/init# start server
start: Job failed to start

然后,我尝试使用init-checkconf检查我的语法,结果是:

$ init-checkconf /etc/init/server.conf 
File /etc/init/server.conf: syntax ok

我尝试了不同的其他内容,例如initctl reload-configuration但没有结果。

我该怎么办?我怎样才能让它发挥作用?这不可能那么难,对吧?

2 个答案:

答案 0 :(得分:0)

这是我们典型的启动脚本的样子。如您所见,我们将节点进程作为用户nodejs运行。我们还使用预启动脚本来确保使用正确的权限创建所有日志文件目录和.tmp目录。

#!upstart
description "grabagadget node.js server"
author      "Jeffrey Van Alstine"

start on started mysql
stop on shutdown
respawn

script
    export HOME="/home/nodejs"
    exec start-stop-daemon --start --chuid nodejs --make-pidfile --pidfile /var/run/nodejs/grabagadget.pid --startas /usr/bin/node -- /var/nodejs/grabagadget/app.js --environment production >> /var/log/nodejs/grabagadget.log 2>&1
end script

pre-start script
    mkdir -p /var/log/nodejs
    chown nodejs:root /var/log/nodejs
    mkdir -p /var/run/nodejs
    mkdir -p /var/nodejs/grabagadget/.tmp

    # Git likes to reset permissions on this file, but it really needs to be writable on server start 
    chown nodejs:root /var/nodejs/grabagadget/views/layout.ejs
    chown -R nodejs:root /var/nodejs/grabagadget/.tmp

    # Date format same as (new Date()).toISOString() for consistency
    sudo -u nodejs echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/nodejs/grabagadget.log
end script

pre-stop script
    rm /var/run/nodejs/grabagadget.pid
    sudo -u nodejs echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/nodejs/grabgadget.log
end script

答案 1 :(得分:-1)

从Ubuntu 15开始,不再使用upstart,请参阅systemd。