16

Raspberry Pi で実行したい Node.js アプリケーションがあります。

そして、アプリケーションの新しいバージョンと Node.js の新しいバージョンをその Raspberry Pi にリモートでデプロイできるようにしたいと考えています。

基本的には、次のようなものです。

$ pi-update 192.168.0.37 node@0.11.4
$ pi-update 192.168.0.37 my-app@latest

アプリをPiに転送する方法について、好みはありません。プッシュでもプルでもかまいません。私は気にしません (ただし、アプリケーションのコードはプライベート GitHub リポジトリから入手できることを付け加えておく必要があります)。

さらに、Node.js および/またはアプリがデプロイされたら、実行中の可能性のある Node.js アプリを再起動します。

どうすればこれを行うことができますか? どのソフトウェアを調べる必要がありますか? これは Raspbian のツールを使用して簡単に実行できるものですか、それともサードパーティのソフトウェア (Chef & co. などの DevOps ツール) を探すべきですか? それとも ...?

どんな助けでも大歓迎です:-)

4

3 に答える 3

12

a)スクリプトを継続的に実行するには、foreverやpm2 などのツールを使用できます。それ以外の場合は、アプリを raspian で実行できる debian デーモンにすることもできます(Arch Linux を実行しているsudo <servicename> start場合、これは別の方法で処理されると思います)。

b) インターネットから Raspberry にアクセスできる場合は、変更をリポジトリにプッシュするたびにGitHub フック( API ドキュメント) を使用して実行できます。このフックは基本的に、小さなシェル スクリプトをローカルで実行する Pi の URL エンドポイントです。

このスクリプトは、アプリを正常にシャットダウンgit pullし、リポジトリに対して a を実行して、アプリ/サービスを再度開始する必要があります。ローカル マシンから SSH 経由でこのシェル スクリプトをトリガーすることもできます。ssh pi@192.168.0.37 /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) ノード自体のリモート更新の問題は、Raspberry Pi の公式バイナリ ビルドが非常に不規則にしか表示されないことです。それ以外の場合は、wget または curl を使用してバイナリをダウンロード/更新するだけで簡単になります。そのため、ほとんどの場合、自分のマシンで Node をクロスコンパイルするか、約 2 時間かけて Pi で再コンパイルする必要があります。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、リリースごとにファイル名を確認する必要があります。

于 2013-08-25T13:13:41.553 に答える
4

必要なのは、 rpiをそのイメージでフラッシュしてから、プロジェクトを git push するだけです。resin.io は、デバイスのアーキテクチャに合わせてコードと依存関係をコンパイルし、結果をデバイスに (docker ファイルで) 送信します。

于 2015-03-17T05:50:21.520 に答える