【问题标题】:Upstart / init script not working新贵/初始化脚本不起作用
【发布时间】:2014-03-30 23:12:38
【问题描述】:

我正在尝试创建一个服务/脚本来自动启动和控制我的 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 没有结果。

我能做什么?我怎样才能让它工作?不会那么难吧?

【问题讨论】:

  • 你确定你在 /usr/local/bin/nodejs 有一个文件?
  • @MattPileggi 该死的,你是对的......它不见了。嗯,奇怪,我记得是这样使用 nodejs 的——让我试试别的。结果:没有变化 - 我将命令直接更改为 nodejs,甚至删除了 sudo -u 部分以以 root 身份执行 - 没有任何变化。我试图直接通过控制台调用该命令 - 这有效。
  • 抱歉,不知道还能看什么。我将所有的初始化脚本都设置为永远使用——它负责保持它的运行。你有调查过吗?
  • /var/log/messages 或 boot.log 中关于作业失败消息的任何内容??
  • 任何更新,我也收到了!

标签: init upstart


【解决方案1】:

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

【讨论】:

  • 我不知道为什么这被否决了。它为我解决了这个问题。上面的另一个答案适用于被取代的系统,任何设置新系统的人都需要知道这不再适用。
【解决方案2】:

这就是我们典型的启动脚本的样子。如您所见,我们正在以用户 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

【讨论】:

    猜你喜欢
    • 2016-05-27
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 2015-04-27
    相关资源
    最近更新 更多