如何进行CMS升级?

Wes*_*rch 9 php codeigniter content-management-system

我已经为所有客户构建了一个CMS(使用Codeigniter PHP框架).我一直在调整它,很难跟踪哪个客户端有哪个版本.我们真的希望每个人都拥有最新版本.

我以某种方式编写它,以便更新和升级通常只涉及通过FTP上传新版本,并删除旧版本 - 我只是不要触摸/uploads/themes目录(网站的特定内容是在那里或在数据库).一切都是一个模块,每个模块都有自己的版本号(以及核心CMS),以及每个版本的安装和卸载脚本,但我必须首先手动FTP文件,然后运行模块的安装脚本从控制面板.我写了并将继续亲自编写所有内容,因此我可以完全控制代码.

我想要的是能够从CMS本身的控制面板升级核心CMS和各个模块.这是一个"傻瓜CMS",所以要求人们FTP或远程技术做任何事都是不可能的.我想象的是登录时弹出的消息,或者已安装的模块列表,例如"新版本可用".

我相信,一旦我做到这一点,我就可以理清大部分技术细节,但我不确定要采取哪个方向.我可以想办法用卷曲尝试这个(认证和从什么地方我们的服务器上拉源文件)和PHP的像本地文件系统的功能unlink(),file_put_contents()等瓶坯实际更新文件或备份的东西"老" CMS目录并设置新的目录,但即使我写这篇文章 - 这听起来像是灾难的秘诀.

我不使用git/github或任何东西,但我觉得这样的东西可以帮助吗?我应该(或不应该)接近这个?

Phi*_*eon 4

有很多方法可以做到这一点,但最简单的就是将 Git 安装在客户端服务器上,并设置一个 cron 作业来时不时地运行 git pull origin master。如果您的应用程序使用迁移,那应该很容易做到。

您可以这样做,因为听起来您可以完全控制您的客户。对于像 PyroCMS 或 PancakeApp 这样的东西,它不起作用,因为任何人都可以在任何服务器上拥有它,我们必须变得更聪明。我们只需下载一个 ZIP,其中包含所有已更改的文件和已删除文件的列表,这意味着文件系统已很好地更新。

我们有一个安装列表,我们可以使用 HTTP 请求对其进行 ping 操作,以便系统知道要运行下载,或者在登录时单击可以点击“升级”。

  • 替换整个应用程序将是一场该死的噩梦,并且会破坏很多东西...我说下载更改文件的 zip。您将需要编写一个 bash 脚本,该脚本本质上是在本地 VCS 中的标签之间进行区分并创建一个变更清单。研究一下 Git、.diff 等。如果不进步,你就无法做高级的事情。或者正如我所说,在客户端服务器上安装 git,然后在 cron 中运行“git pull origin master”。迁移是一个新的 CI 库,是的。 (3认同)