如何创build一个自我更新的Node.js应用程序?
我想用Node.js创build一个应用程序,定期检查更新并安装它们(如果有的话)。
基本组件对我来说很清楚:
- 包含更新包的Web服务器(或FTP服务器,文件系统,…)
- 一个版本系统(如SemVer),这样你就可以知道哪个包是新的
- 用于签署更新包的公钥algorithm
那么,何时检查更新和安装更新可能会有不同的策略:
- 在应用程序启动
- 在应用程序结束
- 空闲时
应用程序甚至可能会closures并自动重新启动。
但还有一些问题:
- npm上是否有任何已经提供这样的系统的模块?
- 如何在文件系统中组织不同的版本? 基本上你会有一个主机和多个(版本化)的核心。 是否应该有一个
data
文件夹的所有人? - 如何处理
npm install
&co。 为新下载的包? - 如何处理破损的更新?
- 你怎么能实现这样的事情,以便它与Heroku公司兼容。 你没有永久的驱动器,你可以开车去?
一般来说:你将如何尝试实现这样的系统?
首先,您可以使用NPM本身进行包装和应用交付。 其次,你可以添加一个脚本文件来在package.json文件中添加一个cron作业(比如'postinstall'或者'update')来定期更新进程。 在这个脚本中,你可以检查你需要的所有更新。 在Heroku中,您可以使用Scheduler Worker进行更新处理。