2013-08-20 138 views
13

我有一個Node.js應用程序,我想在Raspberry Pi上運行。將Node.js和Node.js應用程序部署到Raspberry Pi

而且,我希望能夠將我的應用程序的新版本以及新版本的Node.js部署到該Raspberry Pi遠程。

基本上,一些諸如:

$ pi-update 192.168.0.37 [email protected] 
$ pi-update 192.168.0.37 [email protected] 

我沒有就如何我的應用程序轉移到郫縣任何偏好,可以說,它是推動或拉動。我不在乎(儘管我應該補充說,應用程序的代碼可以從私人GitHub存儲庫中獲得)。

此外,一旦部署了Node.js和/或我的應用程序,我希望可能運行的Node.js應用程序重新啓動。

我怎麼能這樣做?我應該查看哪些軟件?這是否可以使用Raspbian的工具很容易地完成,或者我應該尋找第三方軟件(devops工具,例如廚師& co。),或者?

任何幫助是極大的讚賞:-)

回答

12

一)對於連續運行腳本,你可以使用工具,如foreverpm2,否則你也可以make the app a debian daemon on raspian你可以sudo <servicename> start運行(如果你正在運行拱門Linux,這是處理不同,我猜)。 b)如果您的樹莓可以從互聯網上獲得,您可以使用GitHub hookAPI Documentation)在您每次將更改推送到存儲庫時運行。這個鉤子基本上是你的Pi上的一個URL端點,它在本地運行一個小腳本腳本。

此腳本應該優雅地關閉您的應用程序,爲您的存儲庫執行git pull並再次啓動應用程序/服務。你也可以通過本地機器上的SSH觸發這個shell腳本,例如ssh [email protected] /path/to/your/script

一個更新腳本可能看起來像這樣:

# change the 'service' command to your script runner of choice 
service <yourapp> stop 
cd /path/to/your/app 
git pull 
service <yourapp> start 

c)與遠程更新節點本身的問題,即官方二進制建立了樹莓派只出現非常不規則,否則會很容易只需使用wget或curl下載/更新二進制文件。所以大多數情況下,您需要在自己的機器上交叉編譯節點,或花費大約兩個小時在您的Pi上重新編譯節點。如果您想使用unofficial builds on GitHub,則可以使用curl -# -L https://gist.github.com/raw/3245130/v0.10.17/node-v0.10.17-linux-arm-armv6j-vfp-hard.tar.gz | tar xzvf - --strip-components=1 -C /usr/local進行安裝,但是您需要檢查每個版本的文件名。

+0

如何遠程更新Node.js本身?你會如何推薦這樣做?而且 - 如果樹莓不能從互聯網上訪問,只能在局域網內訪問?然後GitHub掛鉤將無法工作,我猜;-) –

+1

更新了上面的答案。如果Pi在本地網絡上並具有Internet連接,則只需在本地或通過SSH運行shell腳本。 – Frederic

+1

獲取最新的Node.js版本變得更加容易,只需查看:http://nodejs.org/dist/latest/並找到最近版本的'node-v -linux-arm-pi.tar.gz' – Frederic

2

您可以使用supervisor一個非常簡單的持續集成方案,該方案做了兩兩件事:

  • 讓您的過程中運行,即使失敗,
  • 並重新啓動過程中,如果任何文件的更改。

它變成一個簡單的問題,讓您的應用程序更新:你只需要運行命令git pull; npm install:當代碼被下載(或甚至節點模塊更改)主管會自動重新啓動的應用程序爲您服務。

如果Raspberry Pi可以從互聯網上看到,您可以使用a GitHub webhook,將它指向一個非常簡單的頁面,該頁面使用child_process.exec()運行命令git pull; npm install。 (一個重要的注意事項:使用一個不平凡的URL(帶有代碼或其他東西),以免人們誤入歧途。)否則,例如,每隔一小時左右從crontab運行這些命令。

至於更新node.js本身,我會使用官方Debian package,無論是從測試或得到它from unstable。否則,你將不得不創建一個私人回購站來託管你自己的軟件包,這可能是不值得的麻煩;但是可行的。

3

查看不超過resin.io所有你需要的是刷新你的rpi與他們的形象,然後git推你的項目。 resin.io會爲您的設備架構編譯其代碼和依賴關係,並將結果發送到您的設備(在docker文件中)。

相關問題