【问题标题】:Can a CMS be powered by a Git repository?CMS 可以由 Git 存储库提供支持吗?
【发布时间】: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-deploydeploy-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


【解决方案1】:

我不知道如何在 Github 上存储文件。

但是,我确实有另一个建议可以实现您的目标:

如果您的项目位于同一台服务器上并且您对服务器具有根访问权限,则您可以将核心文件放在 1 个位置。使用符号链接,您可以让项目使用同一个目录。您无需再次部署,因为您只需更新一组文件。

只要确保除了核心文件之外还有一种方法可以存储/加载模板和个人用户设置。

【讨论】:

    猜你喜欢
    • 2015-11-05
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多