Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 启动时启动restricted node.js应用程序_Linux_Node.js_Bash_Raspberry Pi - Fatal编程技术网

Linux 启动时启动restricted node.js应用程序

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'); }).

当我的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');
}).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上运行节点,它似乎不想工作。