【发布时间】:2015-07-21 10:54:18
【问题描述】:
不久前,我为我的一个客户制作了一个一次性的 CMS,但它的强大功能足以让我在其他一些项目中再次使用它。现在我需要管理它,我希望能够通过一次更新来更新所有部署。
我想知道是否可以让 CMS 简单地包含来自 GitHub 存储库的文件。有没有办法做到这一点?比如:
<?php
require('URL TO MEDIA UPLOAD MODULE AT GITHUB');
require('URL TO PAGE MANAGEMENT MODULE AT GITHUB');
//etc...
?>
最终,CMS 将为许多不同的业务类型(房地产、零售产品和服务等)提供许多不同的模块,这些模块将根据为特定部署需求列出的模块而包含在内。
我只想将所有内容存储在一个地方,并在我提交对存储库的更改时更新每个部署。
这可能吗?如果没有,有什么建议吗?
【问题讨论】:
-
它是 - 但不像你想的那样。持续集成是您可以研究的主题。那个或者提交后的钩子。
-
这不是一个很好的设计,但你可以通过混合simple-php-git-deploy 和deploy-hook-forker 来实现这一点。您最好更新您的
CMS以根据版本和下载检查新版本。 -
那么更好的方法是将“master”托管在某处,并在已部署的 CMS 上每晚运行 CRON 作业以检查 master 的版本?然后怎样呢?只需将每个模块都放在一个静态 URL 和
file_get_contents更新的主模块上? -
我建议将通用/通用
configuration file存储在 github 上,然后将 git pull 到 CMS 的每个新实例中。这样内部代码/功能/包含/要求保持不变,但自定义配置不会。无论如何,我认为每个客户的配置都应该改变。我曾经使用一个名为“config.changeme.php”的主配置,我在 git 中跟踪它,然后,一旦下拉,使用 shell 执行mv config.changeme.php config.php,在代码中,它需要 config.php -
我之前已经考虑过这种类型的事情,这就是我的计划。正如您所说,在某处托管“主”,并在每个签入的 CMS 中有一个 cron。如果他们从过期的版本签入,您将 URL 发送回它需要的更新。此 URL 只是一个 zip 文件,其中包含与您的 CMS 相同的结构。它下载它,循环遍历它,然后换掉它在其中找到的所有文件。如果您的系统已付款,那么在签入时它应该会传递给您一个生成的密钥,如果需要,您可以使用它来加密更新的文件。
标签: php git github content-management-system