CMS-如何在多个环境中工作?我真的需要它们吗?

问题描述 投票:0回答:1

我从未与任何CMS合作过,我只是想和这样的CMS一起玩。最初,我来自.NET根,所以我在考虑选择Orchard Core CMS。

让我们想象一个非常简单的场景,我想与我的同事一起创建一个博客。因为我曾经为我的业务使用基于Web的系统和应用程序,所以使用代码存储库,具有多个环境dev / test / stage / prod,实现CI / CD,通过迁移或脚本调整数据库是很正常的。

现在的问题是,在使用CMS的博客上工作时,我需要所有这些吗?

更具体地说,我可以问几个问题:

  1. 我应该在本地使用CMS(我的PC)创建博客吗?>创建几篇文章,然后将其部署到Web上,或者我应该在Internet上创建博客,然后直接在产品环境中添加文章。

  2. 如何在环境之间同步数据库(dev / prod)。

我可以补充,由于我不希望网站上有太多访问者,所以我考虑将Orchard Core CMS与SQLite一起使用。我也希望我可以自定义代码,添加新模块,扩展现有模块等-不仅添加内容(文章)。您可以在回答问题时考虑到这一点

所以,基本上,我的问题是,一个人要以一个人或一个团队的身份创建/管理和维护CMS(以下称为博客)的工作流程是什么?

我应在本地工作并创建内容,然后发布它,并以某种方式同步应用程序和数据库(数据库是我的主要问号-也是在上下文中如何使用SQLite正确执行此操作)。

或者只是所有更改-代码+内容应直接在服务器上进行管理,我们称之为生产环境。

[如果问题愚蠢且难以理解,请原谅,但是我正在寻找任何建议,因为我确实没有找到任何好的例子/信息,或者我正在寻找完全错误的方向。

提前感谢。

sqlite content-management-system orchardcms
1个回答
2
投票

好问题,一点都不傻;)

[处理CMS时,您需要以与代码/模块完全不同的方式来考虑数据/内容,尽管事实上它们之间的界限并不总是很明显。

对于Orchard,建议不要在生产环境中安装模块,而要具有开发-阶段-生产类型的环境:在开发环境中安装新模块,在阶段中对其进行测试,然后在安全的情况下部署到生产中这样做。根据项目的规模,对于更敏捷的开发人员到产品设置,可以跳过暂存,但是想法保持不变,并且与任何模块化应用程序都没有太大区别。

然后您就可以激活和配置所部署模块的设置。因为在Orchard之类的CMS中,这些设置被视为数据并存储在数据库中,因此应像处理内容一样对待它们。这包括元数据,例如网站内容的形状:内容类型是数据。

数据通常不会像临时部署和生产环境那样部署代码(尽管可以在某种程度上在一段时间内进行更多部署)。原因之一是CMS通常会包含用户提供的数据,例如评论,评分,评论或使用情况统计信息。同步所有这两种方式是非常不切实际的。另一个更重要的原因是,使用CMS的根本原因是让网站的非技术所有者可以快速直接地自己管理内容。

代码和数据之间的差异也可以通过更改的方式看到:对于代码,通常的源代码管理仍然是规则,而对于内容,则将设置数据库备份。

同样重要的是数据库的结构。在编写自己的模块之前,通常不必担心这一点:Orchard带有丰富的数据迁移功能,该功能可确保数据库结构已被使用它的代码更新。因此,不必担心,在将代码部署到生产环境中时,数据库只会自动更新。

最后,我必须提到,某些CMS网站确实需要能够登台内容并对其进行测试,然后再将其展示给最终用户。有一些变化:在某些情况下,能够草拟和预览内容项就足够了。 Orchard开箱即用地支持:任何内容类型都可以标记为可草稿。如果这还不够的话,则有一个称为“部署”的可选功能,该功能可实现可重复,计划和验证的丰富内容部署工作流。与该模块有关的重要一点是,部署仅适用于您决定应应用的网站内容的子集(显然,不包括用户提供的内容之类的东西)。

因此,总的来说,将代码和模块视为您以常规方式从源代码开发箱到生产环境以一种单向方式进行部署,并使用普通的源代码控制和部署方法,并根据情况从简单的直接处理中处理数据。具有良好备份策略的生产数据库实例,以存储在生产中的草稿,然后一直到复杂的内容部署规则。

© www.soinside.com 2019 - 2024. All rights reserved.