【问题标题】:Syncing dev/production with git, with a file-based CMS使用基于文件的 CMS 与 git 同步开发/生产
【发布时间】:2014-05-25 00:24:04
【问题描述】:

我正在尝试为 OctoberCMS 找出一个好的开发工作流程,它是一个用 Laravel 编写的基于文件的 CMS。

我已将其设置为通过以下方式部署:

git push live master

但是,使用 OctoberCMS,我需要将“实时”更改与我的本地开发框同步(因为每次通过 CMS 编辑内容时,它都会更改文件)。目前我无法从实时服务器“git pull”。

我的接收后文件如下所示:

!/bin/sh
git --work-tree=/var/www/mysite.com --git-dir=/var/repo/mysite.git checkout -f

我当前的设置基于这篇 Digital Ocean 文章。

有没有一种简单的方法可以修改它,以便我可以从实时服务器同步回更改?

【问题讨论】:

  • 我不熟悉OctoberCMS 以及它保存文件更改的方式,但它听起来像是通常在数据库中的部分。如果是这种情况,听起来您想要做的(基本上)是在文件更改时自动提交到您的“实时”分支。到目前为止听起来不错?
  • 是的,这是正确的——更新的是文件而不是数据库。自动提交听起来像是一种可能的方法,我会在谷歌上搜索一下。
  • 这可能值得在 OctoberCMS 论坛中提问。自动提交似乎不是你应该做的事情。如果可能的话,我建议采用文件就像资产的方法。您能否创建一个目录来存放这些修改过的文件,或者它们是否分散在整个应用程序结构中?如果你可以将它们放在一个地方,称之为“/files”,你可以创建一个符号链接并将它们存储在 NFS 上,或者查看云驱动器或类似 S3 的东西。
  • octobercms.com/forum/post/vcs-and-the-cms 的论坛上有一个相关的帖子...我尝试了自动提交,但它很快就被缓存文件和东西弄得一团糟。我认为您通过仅同步内容文件夹来采用正确的方法。

标签: php git laravel content-management-system


【解决方案1】:

我们目前正在评估 october cms 的多实例设置。一个实例作为专用编辑器实例运行。

  1. 编辑器实例中的更改 - 目前 - 手动推送到我们的 git repo "git-cms" 的编辑器分支。这个想法是稍后通过使用 cronjob 或文件系统观察程序来自动执行此操作。

  2. 有一个专门的手动过程,我们将编辑器分支合并到 git-cms 的主分支中。在这里我们还可以注入共享资源,例如 css/js/img 文件。

  3. 基于 git-cms master 分支,我们为测试、生产和编辑器创建新实例(目前使用 docker)。

在图表中,我们的数据流看起来像

editor -> git:editor -> git:master -> editor, test, production

重要的是要知道,在除编辑器之外的任何情况下,我们都会明确拒绝对 Web 服务器级别的后端的访问。这应该有助于提高安全性,但主要是确保我们拥有清晰的数据流。

到目前为止,最明显的限制是,当实例化编辑器的新实例时,在更新过程运行时对编辑器所做的更改可能会丢失。目前这对我们来说不是问题,因为我们足够小,可以手动同步。它可能无法很好地扩展到多个编辑器和/或大量编辑。它还引入了额外的更新延迟。

【讨论】:

    【解决方案2】:

    我刚刚开始了一个 OctoberCMS 项目,我们决定 gitignore pages 目录。这是我们的用户打算影响的唯一目录。

    我已将以下内容添加到根 .gitignore 文件中。

    /themes/**/pages
    

    【讨论】:

    • 但有时用户会从后端更新插件,这会更改插件文件,那么你会怎么做???
    • 很抱歉,我在 4 年前只短暂使用过 OctoboerCMS,从那以后就再也没有使用过。祝你的回答好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 2016-04-20
    • 2015-10-13
    • 2017-08-05
    • 1970-01-01
    • 2014-11-25
    • 2013-11-19
    相关资源
    最近更新 更多