Architecture CMS暂存环境的体系结构
我的公司已经开发了一个cms,但现在我们使用它有一段时间了,我们偶然发现了一个问题:所有的变化都与生活环境直接相关。如果你想对一个站点做一次大的修改,你有时会想先完成所有的工作,然后立即将所有的修改发布到实时站点上 我现在谈论的是内容,而不是用于开发软件的开发/测试/登台/生产环境 我已经看到了几种解决问题的方法,但没有一种方法可以完全解决这个问题:Architecture CMS暂存环境的体系结构,architecture,content-management-system,environment,production,staging,Architecture,Content Management System,Environment,Production,Staging,我的公司已经开发了一个cms,但现在我们使用它有一段时间了,我们偶然发现了一个问题:所有的变化都与生活环境直接相关。如果你想对一个站点做一次大的修改,你有时会想先完成所有的工作,然后立即将所有的修改发布到实时站点上 我现在谈论的是内容,而不是用于开发软件的开发/测试/登台/生产环境 我已经看到了几种解决问题的方法,但没有一种方法可以完全解决这个问题: 使用版本控制:版本x在生产中运行,y在暂存中运行 使用草稿/发布标志:所有草稿内容均远离现场 使用两个数据库:一个用于临时环境,一个用于实时环境
PS.这是一个php、ZF应用程序,具有MySQL后端,但我认为这对体系结构来说并不重要。实现这一点的方法是使用相对链接,或者根据站点配置文件中的值为链接添加前缀。还有另一种策略,即使用单独的存储库进行内容管理,内容从中发布到不同的内容交付环境。(因此只有3个数据库,而不是两个。)
这是SDL Tridion使用的体系结构,根据我自己的经验,我知道它非常有效。我确信还有其他WCMS系统可以像这样工作,尽管唯一一个立即浮现在脑海中的是Bricolage。这已经有很长一段时间了,但我们现在有了一个多级CMS,其工作原理如下。生产和分期的树是双重的。在嵌套集设置中,我们可以在一个数据库中存储多棵树。生产中的页面通过UUID链接到登台 内容本身通过版本控制进行管理,其中版本控制表保存所有版本,实体表保存生产版本。版本控制(用于暂存)因此比生产版本提前了一些步骤。通过这种方式,我们还可以实现文本blob的自动保存(这只是另一个版本)