Ubuntu 8.04 Hardy和node.js upstart脚本

时间:2011-09-25 02:11:22

标签: javascript ubuntu node.js upstart

我正在尝试为我的ubuntu机器编写一个upstart脚本,它是版本8.04“Hardy”。我已按照本网站上的说明进行操作:upstart for node.js但似乎这些说明适用于当前版本的ubuntu。

我注意到我的机器上不存在/ etc / init目录,首先我尝试将脚本放在/etc/init.d目录中,然后我创建了/ etc / init目录并将其放在那里。

我将在下面发布我的upstart脚本(这与上面的网站基本相同,但有一些路径更改),但是当我运行start jobname时,我只是收到错误“start:Unknown job:jobname”。所以我把脚本改成了一个精简版,贴在下面,但仍然得到了相同的结果。

目前,我正在使用'nohup'命令来运行我的节点服务器,但我想要一个更永久的解决方案。

请帮忙吗?

脚本1:

description "node.js chat server"
author      "iandev ith3"

# used to be: start on startup
# until we found some mounts weren't ready yet while booting:
start on started mountall
stop on shutdown

# Automatically Respawn:
respawn
respawn limit 99 5

script
    # Not sure why $HOME is needed, but we found that it is:
    export HOME="/root"

    exec /root/local/node/bin/node /home/ian/chat.js >> /var/log/node.log 2>&1
end script

post-start script
   # optionally put a script here that will notifiy you node has (re)started
   # /root/bin/hoptoad.sh "node.js has started!"
end script

脚本2:

description "node.js chat server"
author      "iandev ith3"

script
    exec /root/local/node/bin/node /home/ian/chat.js >> /var/log/node.log 2>&1
end script

3 个答案:

答案 0 :(得分:3)

只需使用Forever。 https://github.com/indexzero/forever

答案 1 :(得分:1)

通过查看您提供的网站,我会说/ etc / init只是一个错字,它应该是/etc/init.d/。您可能想要检查的一些事项:

  • 脚本上的可执行标志。从命令行运行'ls'时,大多数版本的Ubuntu可执行文件显示为绿色。如果要检查文件是否可执行,请从命令行运行'ls -l /etc/init.d/YOUR_SCRIPT'。你会看到这样的事情: -rwxr-xr-x 1 root root 1342 2010-09-16 10:13 YOUR_SCRIPT x表示它是可执行的。 要设置可执行标志(如果未设置),请运行chmod u + x YOUR_SCRIPT

  • 我非常确定旧版本的ubuntu需要在/etc/rc.d/rc3.d或/etc/rc3.d中使用该脚本。 linux所做的是通过rc0.d运行到rc5.d并执行其中的每个脚本。从它的外观来看,ubuntu正在逐渐变得更简单,所以如果你有rc目录,你可能需要稍微编辑你的脚本。

无论如何,我认为我在这里变得有些复杂。检查你的可执行标志,如果你有rc目录,我们将从那里开始。

答案 2 :(得分:1)

使用sudo启动进程可能不是最好的选择,但这是我在本地PC上设置的内容:

#!upstart
description "node.js server"
author      "alessio"

start on startup
stop on shutdown

script
    export HOME="/ubuntu"

    exec sudo -u ubuntu /usr/bin/node /home/ubuntu/www/test.js 2>&1 >> /var/log/node.log
end script

希望这有帮助。