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

CMS - How to work with multiple environments? Do I really need them?

我从未使用过任何 CMS,我只是想使用这些。由于我最初来自 .NET root,所以我正在考虑选择 Orchard Core CMS。

让我们想象一个非常简单的场景,我想和我的同事一起创建一个博客。由于我习惯于为我的企业使用基于 Web 的系统和应用程序,因此使用代码存储库、拥有多个环境 dev/test/stage/prod、实施 CI / CD、通过迁移调整数据库或脚本。

现在的问题是,在使用 CMS 开发我们的博客时,我需要所有这些吗?

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

  1. 我应该在本地使用 CMS 创建博客(我的电脑)-> 创建几篇文章然后将其部署到网络上,还是我应该通过互联网创建一个博客并直接在 prod 环境中添加文章。

  2. 如何在环境(开发/生产)之间同步数据库。

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

所以基本上我的问题是一个人作为一个人或作为一个团队想要创建/管理和维护 CMS(让它成为博客)的人的工作流程应该是什么。

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

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

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

提前致谢。

问得好,一点也不傻 ;)

在处理 CMS 时,您需要从与 code/modules 截然不同的角度来考虑 data/content,尽管它们之间的界限并不总是很明显。

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

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

数据通常不会像代码那样部署,具有暂存和生产环境(尽管它可以在一定程度上稍后详细介绍)。原因之一是 CMS 通常会包含用户提供的数据,例如评论、评级、评论或使用情况统计信息。同步所有这两种方式是非常不切实际的。另一个更重要的原因是,使用 CMS 的真正原因是让网站的非技术所有者以快速和直接的方式自己管理内容。

代码和数据之间的区别还体现在您保护其更改的方式上:对于代码,通常的源代码控制仍然是规则,而对于内容,您将设置数据库备份。

同样重要的是数据库的结构。在您编写自己的模块之前,您通常不必担心这一点:Orchard 具有丰富的数据迁移功能,可确保数据库结构随着使用它的代码而更新。所以不用担心,数据库会在您将代码部署到生产环境时自行更新。

最后,我必须提到一些 CMS 站点确实需要能够暂存内容并在将其公开给最终用户之前对其进行测试。这有一些变化:在某些情况下,能够起草和预览内容项就足够了。 Orchard 支持开箱即用:任何内容类型都可以标记为可起草。当这还不够时,还有一个称为部署的可选功能,它支持可以重复、安排和验证的丰富内容部署工作流。关于该模块的重要一点是,部署仅适用于您决定应适用的站点内容的子集(并且显然不包括用户提供的内容等内容)。

所以总而言之,将代码和模块视为以单向方式部署的东西,从开发箱一直到生产,使用普通的源代码控制和部署方法,并根据场景处理数据,从简单直接在具有良好备份策略的生产数据库实例中,到存储在生产中的草稿,然后一直到复杂的内容部署规则。