Linux 如何在openwrt-Arduino上自动启动nodejs应用程序-
我正在尝试让nodejs应用程序在系统引导时自动启动。基本上我只需要运行命令Linux 如何在openwrt-Arduino上自动启动nodejs应用程序-,linux,node.js,express,arduino,openwrt,Linux,Node.js,Express,Arduino,Openwrt,我正在尝试让nodejs应用程序在系统引导时自动启动。基本上我只需要运行命令node/dir/app。 我正在Arduino云上使用openwrt。并且尝试了一些事情 在openwrt网站上,它说我可以做到这一点 我还尝试将目录更改为/www/www blink.js而不是/ 然而,我不确定我做错了什么,因为当我尝试使用/etc/init.d/node-app start运行它时,没有出现任何问题。我显然写错了代码,但我不确定它应该是什么样子 我尝试过的另一件事是节点模块永久和永久服务。 我使用
node/dir/app
。
我正在Arduino云上使用openwrt。并且尝试了一些事情
在openwrt网站上,它说我可以做到这一点
我还尝试将目录更改为/www/www blink.js
而不是/
然而,我不确定我做错了什么,因为当我尝试使用/etc/init.d/node-app start运行它时,没有出现任何问题。我显然写错了代码,但我不确定它应该是什么样子
我尝试过的另一件事是节点模块永久
和永久服务
。
我使用npm安装-g forever
和forever服务在我的计算机上下载了它们。我把它们转移到我的arduino云上的usr/lib/node_模块。然而,当我尝试使用和永久(-service)命令时,它会说
-ash: forever: not found
我尝试了一些其他的方法,但是没有任何效果。任何帮助都将不胜感激
--我还需要能够使用npm start
启动我的express脚本,而不是node app
,但我想首先要让它工作。你需要像执行Linux服务一样执行node
应用程序
非常适合这项任务
Upstart是/sbin/init守护进程的基于事件的替代程序,它在引导期间处理任务和服务的启动,在关机期间停止任务和服务,并在系统运行时监视它们
如果您有这样的应用程序(例如):
使用package.json
如下所示:
{
"name": "my-awesome-app",
"version": "1.0.0",
"dependencies": {
"express": "^4.13.3"
},
"scripts": {
"start": "node app.js"
}
}
我们使用以下代码创建一个名为myAwesomeApp.conf的upstart配置文件:
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
setuid ubuntu
chdir /opt/myAwesomeApp.conf
env PORT=3000
exec npm start
要完成此操作,请将应用程序(app.js
和package.json
)放在/opt/myAwesomeApp.conf
中,并将配置文件myAwesomeApp.conf
复制到/etc/init中/
仅此而已,现在您只需运行service myAwesomeApp start
即可将您的节点应用程序作为服务运行我以前从未使用过procd,但它可能需要指向节点
的完整路径(例如,/usr/bin/node
)。假设要运行的文件是/www/www/blink.js
,则需要将该行设置为类似于procd\u set\u param命令/usr/bin/node/www/blink.js
。您可以通过运行哪个节点
或键入-a节点
来定位节点。您可以将启动命令(node/dir/app&)放入/etc/rc.local脚本中。这将在系统启动时自动启动nodejs应用程序。OpenWRT procd有一个“respawn”参数,它将重新启动退出或崩溃的服务
# respawn automatically if something died, be careful if you have an
# alternative process supervisor if process dies sooner than respawn_threshold,
# it is considered crashed and after 5 retries the service is stopped
procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
因此,您只需添加:
程序集参数重新启动60 5 5
或者类似于OpenWRT procd初始化脚本。这60 5 5意味着它将在重新启动之间等待5秒(中间参数),如果它在60秒内重新启动超过5次(最后一个参数)(第一个参数),它将禁用服务(“重新启动循环”检测)
有关更多信息,请参阅本页:
如何将upstart安装到arduino云上?upstart已被systemd取代。尝试过此方法。然而,当我使用top
时,它仍然没有说什么或显示任何进程。我使用了/etc/init.d/node-app start
,还尝试了/etc/init.d/node-app enable
,使用start=1
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
setuid ubuntu
chdir /opt/myAwesomeApp.conf
env PORT=3000
exec npm start
# respawn automatically if something died, be careful if you have an
# alternative process supervisor if process dies sooner than respawn_threshold,
# it is considered crashed and after 5 retries the service is stopped
procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}