2016-03-15 755 views
2

我想在系统启动时自动启动nodejs应用程序。基本上所有我需要的是运行命令node /dir/app。 我在Arduino Yun上使用openwrt。并尝试了一些事情。如何在openwrt上自动启动nodejs应用程序 - Arduino Yun -

在openwrt网站上,它说我可以做到这一点。 https://wiki.openwrt.org/inbox/procd-init-scripts

#!/bin/sh /etc/rc.common 
USE_PROCD=1 
start_service() { 
    procd_open_instance 
    procd_set_param command node ///www/www-blink.js 
    procd_close_instance 
} 

我也试图改变目录到/www/www-blink.js///

但是我不知道什么我如无物做错了过来,当我尝试用/etc/init.d/node-app start运行它,我明显编写错误的代码,但我不确定它应该看起来像什么。

我试过的另一件事是节点模块foreverforever-service。 我使用npm install -g forever在我的电脑上下载了它们,并且永远服务。我将它们转移到我的arduino yun上的usr/lib/node_modules。然而,当我尝试使用和永远(-service)命令它说

-ash: forever: not found 

我已经尝试了一些其他的事情,但没有奏效。任何帮助将不胜感激。

- 我还需要能够启动我的快速脚本npm start而不是node app但我想第一件事就是让它工作。

+0

http://stackoverflow.com/questions/11275870/how-can-i-automatically-start-a-node-js-application-in-amazon-linux-ami-on-aws –

回答

2

您可以将启动命令(node/dir/app &)置于/etc/rc.local脚本中。这将在系统启动时自动启动您的nodejs应用程序。

0

您需要执行node应用程序,如Linux Service

Upstart非常适合这项任务

暴发户是一个事件的系统来替换它处理启动期间启动任务和服务的/ sbin目录/ init服务程序,关机期间停止他们和监督他们,而系统在跑。

如果你有一个这样的应用程序(例如):

// app.js 
var express = require('express') 
var app = express() 
var port = process.env.PORT 

app.get('/', function(req, res) { 
    res.send('Hello world!') 
}) 

app.listen(port) 

随着package.json这样的:

{ 
    "name": "my-awesome-app", 
    "version": "1.0.0", 
    "dependencies": { 
    "express": "^4.13.3" 
    }, 
    "scripts": { 
    "start": "node app.js" 
    } 
} 

我们创建一个名为myAwesomeApp.conf与一个暴发户配置文件以下代码:

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.jspackage.json)在/opt/myAwesomeApp.conf并复制配置文件myAwesomeApp.conf在/ etc /初始化/

这一切,现在你只需要运行service myAwesomeApp start运行您的节点应用作为一种服务

+0

我将如何安装新贵到arduino yun上? – Manu

+0

Upstart已经在很大程度上被systemd所取代。 – Zenexer

0

我以前从未使用procd,但它可能需要node的完整路径(例如,/usr/bin/node)。假设您要运行的文件是/www/www-blink.js,您需要将该行设置为procd_set_param command /usr/bin/node /www/www-blink.js。您可以通过运行which nodetype -a node来定位节点。

+0

试过这个。但是,当我使用'top'时,它仍然没有说或者没有显示任何进程。我使用了'/etc/init.d/node-app start',并且用'START = 1'试着'/etc/init.d/node-app enable' – Manu

相关问题