Linux 启动时启动restricted node.js应用程序
当我的raspberry pi启动时,我在运行node.js应用程序时遇到问题 这个脚本没有什么特别之处——只是一个hello world web服务器。但是,它在端口80上运行Linux 启动时启动restricted node.js应用程序,linux,node.js,bash,raspberry-pi,Linux,Node.js,Bash,Raspberry Pi,当我的raspberry 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'); }).
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”运行可以修复这一问题
但是,如何在raspberry pi启动时自动启动节点应用程序
我在/etc/init.d中创建了一个bash脚本
当我使用“sudo/etc/init.d/myscript”从命令行手动调用bash脚本时,它会毫无问题地启动nodejs web服务器。但当我让它在引导时通过init.d正常执行时,它失败了。在本文中,我尝试用两种方式调用node
第一:
/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,只要它运行,我就很高兴。我知道几种方法 您可以通过chkconfig将其设置为在启动时启动,但对于自制服务,我不太熟悉这种方法 另一种方法是将其设置为在crontab内启动时启动:
1.运行:sudo crontab-e
2.您的默认编辑器应该打开,如果没有为根用户设置任何cron作业,您将看到一个空文件,或者看到一些类似“0****echo'hello world'”的条目
3.将不带引号的“@reboot bash/etc/init.d/myscript”写入文件
4.保存并关闭并重新启动服务器,以查看其是否正常工作
这将基本上在重新启动/启动时运行命令对于系统管理员来说,更好的地方可能是serverfault.com或unix.stackexchange.com(这并不是脱离主题)。我担心仍然会出现权限错误,我甚至不确定它是bash还是nodejs。我最终设法找到了解决办法,但这意味着放弃直接在端口80上运行节点,它似乎不想工作。