【发布时间】:2015-06-12 20:11:06
【问题描述】:
当我的树莓派启动时,我无法运行 node.js 应用程序。
脚本没有什么特别之处——只是一个 hello world 网络服务器。但是,它在 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”运行修复了该问题。
但是,当我的树莓派启动时,如何自动启动我的节点应用程序?
我在 /etc/init.d 中创建了一个 bash 脚本
当我使用“sudo /etc/init.d/myscript”从命令行手动调用我的 bash 脚本时,它会毫无问题地启动 nodejs 网络服务器。但是当我让它在启动时通过 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,只要它运行,我就很高兴。
【问题讨论】:
-
对于系统管理员来说,更好的地方可能是 serverfault.com 或 unix.stackexchange.com(并不是说这是题外话)。
标签: linux node.js bash raspberry-pi