我正在构建一个人们可以在其托管上安装的CakePHP应用程序。 与此同时,我仍在研究应用程序,因此我希望人们只需单击更新按钮即可更新它。 从我在Controller中编写新代码的那一刻起,制作新的组件,......,我将其推送到“源服务器”,然后点击更新,然后他们必须在他们的服务器上拥有所有这些更新的代码。 我正在考虑编写一个执行git pull / fetch的exec(命令行),但不是每个主机都安装了git,所以这不是最好的解决方案。 有人可以帮我解决这个问题吗?
提前致谢,
亚伦
答案 0 :(得分:1)
您需要实现一个包系统:您的php脚本将下载一个zip文件,其中包含来自源的所有代码,将其解压缩到临时文件夹中,读取元数据文件,该文件告诉您的脚本插件或应用程序的版本代码是,将其与正在运行的版本进行比较,可能会执行一些安全检查,如校验和,或者您是否希望实现签名检查。检查成功后,您将不得不用包中的文件替换现有文件。
如果您保留以前版本的zip,您甚至可以选择进行回滚。不要忘记您的更新代码也需要一种方法来触发数据库迁移。我会开发一个“Package”或“PluginManager”插件来完成所有这些。事件系统可用于在安装/卸载内容时触发事件。
Wordpress以这种方式做到了,你可能想看看它做了什么,但我不建议采用任何一个非常难看的wordpress代码,只是使用这个概念。
答案 1 :(得分:0)
与joomla,wordpress一样,您可以创建安装包,可以检查当前版本并检查服务器版本。
stept2
压缩后,它创建数据库和文件备份
step3从临时目录下的服务器下载pakedge
step4用旧版本替换新版本
步骤5如果成功更新,则从临时目录中删除pkg并删除旧文件备份
步骤6如果失败则替换站点sitebackup