2016-03-15 140 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

相關問題