当我的覆盆子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,只要它运行,我很高兴。
答案 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
运行命令