将Node.js和Node.js应用程序部署到Raspberry Pi

我有一个Node.js应用程序,我想在Raspberry Pi上运行。

而且,我希望能够将新版本的应用程序以及新版本的Node.js部署到远程的Raspberry Pi中。

基本上,诸如:

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

我没有任何关于如何将我的应用程序转移到Pi的偏好,可能是推或拉。 我不在乎(尽pipe我应该补充说,应用程序的代码可以从私人的GitHub仓库中获得)。

此外,一旦Node.js和/或我的应用程序部署,我想要潜在运行的Node.js应用程序重新启动。

我怎么能这样做? 我应该看哪个软件? 这是可以很容易地使用Raspbian的工具来完成,或者我应该寻找第三方软件(devops工具,比如Chef&co。)或者…?

任何帮助是极大的赞赏 :-)

a)为了连续运行脚本,你可以使用像forever或者pm2这样的工具,否则你也可以使应用成为raspian的debian守护进程,你可以用sudo <servicename> start运行(如果你正在运行Arch Linux,不同的我猜)。

b)如果您的树莓可以从互联网上访问,您可以使用GitHub挂钩 ( API文档 )在您每次将更改推送到存储库时运行。 这个钩子基本上是你的Pi上的一个URL端点,它在本地运行一个小脚本脚本。

这个脚本应该优雅地closures你的应用程序,为你的仓库做一个git pull ,然后再次启动应用程序/服务。 你也可以从本地机器上通过SSH触发这个shell脚本,例如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)远程更新Node本身的问题是,Raspberry Pi的官方二进制版本只是非常不规则地出现,否则只需用wget或curl下载/更新二进制文件就可以了。 所以大多数情况下,您需要在自己的机器上交叉编译节点,或花费大约两个小时在您的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来安装它们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 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但是您需要检查每个版本的文件名。

看看没有进一步resin.io所有你需要刷新你的rpi与他们的形象,然后git推你的项目。 resin.io将编译您的设备架构的代码和依赖关系,并将结果发送到您的设备(在docker文件中)。

您可以使用主pipe创build一个非常简单的持续集成scheme,它有两件事:

  • 即使失败也能保持你的进程运行,
  • 并在任何文件更改时重新启动您的进程。

保持你的应用程序更新就成了一个简单的问题:你只需要运行命令git pull; npm install git pull; npm install :当代码被下载(或者甚至节点模块改变)时,主pipe会自动为你重新启动应用程序。

如果树莓派可以从互联网上看到,你可以使用一个GitHub的webhook ,把它指向一个非常简单的页面,运行命令git pull; npm install git pull; npm install使用child_process.exec() git pull; npm install 。 (一个重要的注意事项:使用一个不平凡的URL(带有代码或其他东西),以免人们误入歧途。)否则,每隔一个小时左右从crontab运行这些命令。

至于更新node.js本身,我会使用官方的Debian软件包 ,无论是从testing或从不稳定 。 否则,你将不得不创build一个私人回购来托pipe你自己的软件包,这可能是不值得的麻烦; 但是可行的。

Interesting Posts