0

我正在使用 PHP cms 管理一个站点。
该网站非常大(250 页)并且非常重要。
始终有 6 名翻译人员和内容编辑人员同时在网站上工作。
直到今天,CMS 就像盒子一样工作,我们不需要进行很多更改即可部署。

现在我们想要更频繁地启动和更新站点主题,添加内容区域,将更多模块添加到 CMS。

对于部署操作,我可以阻止内容编辑器的访问并进行更新,但这不是问题。
问题是当我想开发新功能时,开发时间会很长(比如一周或一个月)。

在开发期间,内容将发生巨大变化。
在 95% 的情况下,cms 升级将涉及数据库结构和数据更改。
那么,如何在不丢失或损坏开发过程中在站点上完成的工作的情况下更新站点版本/数据/元数据

我们确实有一个开发服务器和一个带有自己的数据库的登台服务器,带有颠覆

没关系,我使用的是 Concrete5。

谢谢

更新 1
假设我的站点中有一个名为 page_title 的字段,并且我想将名称更改为 page_description。
更改实际上发生在数据库内容中,而不是数据库结构中。
所以我可以在开发环境中改变它,但我无法将它部署到生产环境中。
首先,因为我不知道跨数据库实际发生的变化。
其次,即使我有一个可以在数据库中更改它的脚本,也几乎不可能跟踪这些更改并将其添加到脚本中。

4

3 回答 3

3

两个建议:

  1. 始终在与生产版本不同的代码库上进行开发。理想情况下,您将拥有一个单独的数据库和 CMS 实例用于您自己的开发,并且一旦它经过测试和批准,您将备份生产并迁移数据库和代码。

  2. 始终将所有数据迁移任务放在一个统一的脚本(或一组脚本)中。您还应该拥有脚本的升级/降级版本(您测试得非常好),以便您可以快速恢复到数据库的先前版本。

于 2012-05-28T04:29:24.503 回答
0

作为专业问题,我建议花时间设置本地开发镜像并将其用作您所做的所有更改的试验场。

我建议在处理代码时使用版本控制系统,这样您就可以跟踪在原始代码之上所做的更改。

为了省去很多麻烦,我真的建议您在创建镜像之前花时间记下所有正在运行的软件和版本。

或者,您可以在服务器上创建一个子域并将站点的副本加载到该域中。在这种情况下一定要使用数据库的影子!

应用程序完成后,阻止站点访问并将文件复制到实时服务器。停机时间不应超过一两个小时。

于 2012-05-28T04:29:51.727 回答
0

尽管RedGate 有一些可能值得研究的 SQL 版本控制产品,但我还没有找到一个可以让我满意地处理数据库的版本控制系统。在对生产数据库进行结构更改时,我一直必须做的是手写一个 SQL 脚本,该脚本在保留现有数据的同时进行必要的更改 - 当然,如果需要的话,在开发服务器上测试升级脚本复杂的。

于 2012-05-28T04:41:21.703 回答