首页 文章

在启动时启动受限制的node.js应用程序

提问于
浏览
0

当我的覆盆子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 回答

  • 0

    我知道有几种方法 .

    您可以将其设置为在启动时通过chkconfig启动,但我不太熟悉这种自制服务的方法

    另一种方法是将其设置为在crontab中启动时启动:
    1.运行:sudo crontab -e
    2.您的默认编辑器应该打开,如果没有为root用户设置任何cron作业,或者一些看起来像"0 * * * * echo 'hello world'"的条目,您将看到一个空文件 .
    3.在没有引号的"@reboot bash /etc/init.d/myscript"中写入文件
    4.保存并关闭并重新启动服务器以查看其是否有效 .

    这基本上会在reboot / startup上运行命令

相关问题