如何部署大型站点CMS

时间:2012-05-28 04:21:33

标签: php content-management-system upgrade

我正在使用PHP cms管理网站 这个网站真的很大(250页)而且很关键 网站上总共有6位翻译人员和内容编辑人员并行工作 直到今天,如果盒子没有进行很多更改,CMS就可以解决问题。

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

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

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

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

这并不重要,我正在使用Concrete5。

由于

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

3 个答案:

答案 0 :(得分:3)

两条建议:

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

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

答案 1 :(得分:0)

作为一个专业的问题,我建议花时间设置一个本地开发镜像,并将其用作所有更改的证据。

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

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

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

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

答案 2 :(得分:0)

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