【问题标题】:Syncing Drupal site between dev, staging and production在开发、登台和生产之间同步 Drupal 站点
【发布时间】:2010-09-06 15:58:18
【问题描述】:

通常在 Drupal (6.x) 网站启动后,我就会有人开始注册并输入他们自己的内容。每当需要升级时,将生产上的数据库复制到 dev 上,然后在 dev 上完成开发,然后推送到 staging 以供客户批准。

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

有人有什么好主意吗?

提前致谢。

【问题讨论】:

    标签: php database drupal synchronization


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      CaseySoftware 已经提到,Features 模块是您在代码中存储配置所需的。几周后,Features 有了一个稳定的版本,社区似乎同意 Features 是前进的方向。

      在站点之间移动内容有点困难,因为可以在开发、登台和生产中同时添加或更改内容。 Exportables 试图解决这个问题,但它不是唯一的。确保您还检查了Deploy 和基于功能的UUID Features Integration 模块。这些模块还没有一个是稳定的,时间会证明哪一个是最好的解决方案。

      【讨论】:

      • 谢谢。这正是我想要解决的问题,但只是不确定是否有任何已完成的解决方案。有趣的是,我认为我只是将 Drupal 视为我想用 Drupal 做的任何事情,它有一个模块。不久前,我使用 Feature 和 Context 阅读和文章来管理这个问题。尝试了一段时间后,我发现 Context 模块不是很稳定。导出是要走的路,但问题是每个模块都有自己的导出工具。随着时间的推移,我仍然需要跟踪每次更新的机会。
      • 我提到的文章强调了实现这一目标的基本点是通过分离配置和内容,在其他方面让 SVN 管理配置,最新数据应该始终来自生产数据库。在我看来,只要 Drupal 能够提出一个命名约定,明确区分仅包含配置的表和仅包含用户数据的表,那么配置在数据库中实际上是可以的。
      猜你喜欢
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多