我正在尝试为我的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
答案 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
希望这有帮助。