在开发,登台和生产之间同步Drupal站点

时间:2010-09-06 15:58:18

标签: php database drupal synchronization

通常在启动Drupal(6.x)网站后,我会让人们开始注册并输入自己的内容。无论何时需要升级,生产中的数据库都会复制到dev,然后开发在dev上完成,之后会被推送到staging以获得客户的批准。

当网站最终准备好上线时,就会出现问题。生产服务器具有最新的用户输入内容,开发和升级具有最新功能。简单地覆盖生产数据库是行不通的。我通常做的是写下已经对dev做了什么,而不是按照步骤在生产中再次执行实现。随着系统变得越来越大,生产中的一个错误可能会导致业务损失。我无法关闭该网站几个小时。我不知道在给定时间有多少人在使用该网站,即使如此也无法等待网站上没有人进行升级。

有没有人有任何好主意?

提前致谢。

2 个答案:

答案 0 :(得分:4)

您需要了解两个概念:第一个是“Exportables”,它通常是导出给定模块的所有配置的一种方式。第二个是“Features”(非常命名,是),这是一种将一组Exportables分组到给定的变更集中以进行版本控制,更新,部署,回滚等的方法。

为了澄清,许多模块实现了他们自己的“Exportables”方法,我上面链接的是Exportables模块。这是一个更广泛的策略 - http://www.sthlmconnection.se/tips-and-tweaks/exportable-configuration-your-drupal-module-ctools

答案 1 :(得分:4)

这是百万美元的问题:如何在不同的Drupal站点之间传输代码,配置和内容?在Drupal中,代码存储在文件中(或者至少应该存在),而配置和内容通常存储在数据库中。

将代码从一台服务器转移到另一台服务器并不难,代码还有另一个优点:它可以在SVN或GIT等版本控制系统中轻松存储和管理。这就是为什么大多数解决方案都专注于从数据库中取出内容并将其放入代码中。

CaseySoftware已经提到,Features模块是您在代码中存储配置所需的模块。功能有几个星期的稳定发布,社区似乎同意功能是前进的方式。

在站点之间移动内容有点困难,因为可以同时在开发,登台和制作上添加或更改内容。 Exportables试图解决这个问题,但并不是唯一的问题。请务必查看Deploy和基于功能的UUID Features Integration模块。这些模块中没有一个是稳定的,时间会告诉哪一个是最好的解决方案。