当我的覆盆子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开始后如何运行我的脚本?对于_2807038必须使用init.d,只要它运行,我很高兴 .
1 回答
我知道有几种方法 .
您可以将其设置为在启动时通过chkconfig启动,但我不太熟悉这种自制服务的方法
另一种方法是将其设置为在crontab中启动时启动:
1.运行:sudo crontab -e
2.您的默认编辑器应该打开,如果没有为root用户设置任何cron作业,或者一些看起来像"0 * * * * echo 'hello world'"的条目,您将看到一个空文件 .
3.在没有引号的"@reboot bash /etc/init.d/myscript"中写入文件
4.保存并关闭并重新启动服务器以查看其是否有效 .
这基本上会在reboot / startup上运行命令