2013-08-20 106 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文件中)。

相关问题