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

Des*_*ang 5 php database synchronization drupal

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

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

有没有人有任何好主意?

提前致谢.

Cas*_*are 6

您需要研究两个概念:第一个是“可导出”,它通常是导出给定模块的所有配置的一种方式。第二个是“功能”(名字很可怕,是的),这是一种将一组可导出项分组到给定变更集中以进行版本控制、更新、部署、回滚等的方法。

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


mar*_*end 5

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

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

CaseySoftware 已经提到过,Features模块是您在代码中存储配置所需的模块。几周以来,功能已经稳定发布,社区似乎同意功能是前进的方向。

在站点之间移动内容有点困难,因为可以在开发、登台和生产上同时添加或更改内容。Exportables是解决这个问题的一种尝试,但这并不是唯一的方法。请确保您还查看了部署和基于功能的UUID 功能集成模块。这些模块都还不稳定,时间会告诉我们哪一个是最好的解决方案。