我从来没有使用过任何 CMS,我只是想和这样的人一起玩。由于最初我来自 .NET 根源,所以我正在考虑选择 Orchard Core CMS。
让我们想象一个非常简单的场景,我想和我的同事一起创建一个博客。由于我习惯于使用基于 Web 的系统和企业应用程序,因此使用代码存储库、拥有多个环境开发/测试/阶段/生产、实现 CI/CD、通过迁移或脚本调整数据库是很正常的。
现在的问题是,我是否需要使用 CMS 来处理我们的博客?
更具体地说,我可以问几个问题:
我可以补充一点,因为我不希望网站上有很多访问者,所以我想将 Orchard Core CMS 与 SQLite 一起使用。此外,我希望我可以自定义代码、添加新模块、扩展现有模块等 - 不仅仅是添加内容(文章)。你可以在回答问题时考虑到这一点
所以基本上我的问题是一个想要创建/管理和维护 CMS(让它成为博客)的人作为一个人或一个团队的工作流程应该是什么。
我是否应该在本地工作并创建内容,然后发布它并以某种方式同步应用程序和数据库(数据库是我的主要问号 - 在上下文中如何正确使用 SQLite)。
或者只是所有更改 - 代码 + 内容应该直接在服务器上管理,我们称之为生产环境。
如果问题很愚蠢且难以理解,请原谅我,但我正在寻找任何建议,因为我确实没有找到任何关于此的好的示例/信息,或者我正在寻找完全错误的方向。
提前致谢。
最佳答案
好问题,一点也不傻;)
在处理 CMS 时,您需要以与代码/模块非常不同的术语来考虑数据/内容,尽管它们之间的界限并不总是很明显。
对于 Orchard,建议不要在生产中安装模块,而是拥有开发 - 暂存 - 生产类型的环境:在开发环境中安装新模块,在暂存中测试它们,然后在安全的情况下部署到生产.根据项目的规模,对于更敏捷的开发人员设置,可能会跳过暂存阶段,但想法保持不变,并且与任何模块化应用程序没有太大区别。
然后,您可以激活和配置您部署的模块的设置。因为在像 Orchard 这样的 CMS 中,这些设置被视为数据并存储在数据库中,所以应该像内容一样处理它们。这包括元数据,例如网站内容的形状:内容类型是数据。
数据通常不会像代码那样部署,使用 staging 和 prod 环境(尽管它可以在某种程度上,稍后会更多)。原因之一是 CMS 通常会包含用户提供的数据,例如评论、评级、评论或使用统计信息。同步所有这两种方式是非常不切实际的。另一个更重要的原因是,使用 CMS 的真正原因是让网站的非技术所有者以快速直接的方式自己管理内容。
代码和数据之间的区别还体现在您保护其更改的方式上:对于代码,通常的源代码控制仍然是规则,而对于内容,您将设置数据库备份。
同样重要的是数据库的结构。在编写自己的模块之前,您通常不必担心这一点:Orchard 具有丰富的数据迁移功能,可确保使用使用它的代码更新数据库结构。所以不用担心,当您将代码部署到生产环境时,数据库会自行更新。
最后,我必须提到一些 CMS 站点确实需要能够在将内容暴露给最终用户之前对其进行暂存和测试。有一些变化:在某些情况下,能够草拟和预览内容项目就足够了。 Orchard 支持开箱即用:任何内容类型都可以标记为可起草。如果这还不够,还有一个称为部署的可选功能,它支持可以重复、安排和验证的丰富内容部署工作流。关于该模块的重要一点是,部署仅适用于您决定应适用的站点内容子集(显然,不包括用户提供的内容之类的内容)。
所以综上所述,将代码和模块视为一种从开发箱一直到生产的单向部署,使用普通的源代码控制和部署方法,并根据场景处理数据,从简单直接在生产数据库中具有良好备份策略的实例,存储在生产中的草稿,然后一直到复杂的内容部署规则。
关于sqlite - CMS - 如何处理多种环境?我真的需要它们吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59364982/