在启动

时间:2015-06-12 20:11:06

标签: linux node.js bash raspberry-pi

当我的覆盆子pi启动时,我无法运行node.js应用程序。

脚本不是什么特别的 - 只是一个hello world web服务器。但是,它运行在端口80上。

var http = require('http');
http.createServer(function (req, res) {
   res.writeHead(200, {'Content-Type': 'text/plain'});
   res.end('Hello Apadfdche!\n');
}).listen(80, '192.168.0.1');

如果我运行这只是“node script.js”我收到权限错误,因为低端口范围内的所有内容都需要特殊权限 - 运行“sudo”修复了这一点。

但是,当我的覆盆子pi启动时,如何自动启动我的节点应用程序?

我在/etc/init.d

中创建了一个bash脚本

当我使用“sudo /etc/init.d/myscript”从命令行手动调用我的bash脚本时,它会启动nodejs webserver而不会出现问题。但是当我让它在启动时通过init.d正常执行时,它会失败。在其中我尝试以两种方式调用节点

第一:

/usr/local/bin/node /var/www/server.js

第二:

su -l "pi" -c "/usr/local/bin/node /var/www/server.js"

在这两种情况下,我的节点应用程序抛出的异常与我尝试从没有“sudo”的命令行运行它时一样,所以我假设它仍然没有获得运行所需的权限。尝试使用“root”而不是“pi”并没有帮助。

我的pi启动时如何运行脚本?对于它的价值,我不 使用init.d,只要它运行,我很高兴。

1 个答案:

答案 0 :(得分:0)

我知道有几种方法。

您可以将其设置为在启动时通过chkconfig启动,但我对自制服务的此方法不太熟悉

另一种方法是将其设置为在crontab中启动时启动:
1. run:sudo crontab -e
2.您的默认编辑器应该打开,如果没有为root用户设置任何cron作业,或者一些看起来像" 0 * * * * echo&的条目,您将看到一个空文件。 #39;你好世界'"
3.写入" @reboot bash /etc/init.d/myscript"没有引号进入文件
4.保存并关闭并重新启动服务器,看它是否有效。

这实际上将在reboot / startup

运行命令
相关问题