如何从测试环境迁移到生产环境?


46

从本地环境到生产环境的迁移。生产环境已经运行了一段时间,并创建了许多文章。

为了向网站添加新内容,我添加了自定义主题,并在本地测试环境中安装了CCK,Views和其他模块。现在,本地测试环境已完成,如何在不破坏其数据库内容的情况下将其迁移到生产环境?

Answers:


34

这是一个不平凡的问题,几乎每个人都有不同的答案:没有规范的Drupal方法来处理到生产推送的过渡。主持Drupal表演的人Dries Buytaert使其成为Drupal 8主要举措之一。当然,Drupal 7刚刚发布,所以要花一些时间才能有成果。

该问题可以分为两个独立的问题:

  • 暂存配置(变量,内容类型,字段,视图等)
  • 暂存内容(节点,用户等)

前者主要由功能模块处理,功能模块将进行站点配置并将其转换为可添加到Drupal安装中的模块:这样,您可以将其添加到版本控制系统中,而不必担心在迁移内容时被吓倒了。

后者确实很棘手,因为在活动站点上,即使您已初步同步到开发环境,内容也可能会在生产中更改。这样可以防止在分阶段期间像配置配置那样大规模替换内容。

此外,Drupal不会对内容使用通用唯一标识符(UUID):每次添加节点或用户时,ID都会增加一个。因此,开发站点上的节点45可能是生产站点上的节点90。

不幸的是,我对此没有一个很好的解决方案:分期内容是Drupal的真正弱点。我个人所做的只是在生产站点上添加内容。如果客户希望在内容上线之前先看一下内容,那么我将建立一个生产站点的克隆,该站点仅供客户访问。然后,一旦获得批准,就可以直接对生产进行相同的更改。

还有另一种替代方法:部署模块。应该利用服务来使暂存内容相对轻松。但是我不能保证它的有效性,并且它没有Drupal 7版本。


您可以使用uuid和uuid_features迁移内容,但是还不够可靠。
杰里米·法兰西

7

在我们的过程中。

  1. 我们有一个shell脚本,可从prod中提取数据库。
  2. 我们正在使用Hudson重建我们的dev / staging分支以同步实时分支和dev分支。

    由于我们使用的是Git,我们正在执行的每个任务都有其自己的分支,因此当传递给QA时,我们会将其合并到master作为我们的回归测试的登台服务器。

    当主服务器准备就绪时,我们将对其进行测试发布,以Release Server进行实时复制(配置,硬件等)。

  3. 我们使用Feature模块来部署配置。功能尚不支持某些功能,因此我们使用hook_update_N然后运行updatedb.php或drush -vd updb

  4. 发布后,执行Features revert(drush fra --yes)以还原所有覆盖的功能。
  5. 由于我们正在使用Boost(移动到Varnish)和Memcache,因此我们需要清除cache(drush cc all)。

    我们正在使用rsync同步我们的图像/视频等...


您能否详细说明第2步-使用Git我知道我们可以轻松合并任何文件系统更改,但是如何确保数据库的完整性?另外,在这里使用“功能”(部署配置)的目的是什么?谢谢!
Raj Pawan Gumdal

2

要从XAMPP服务器迁移到另一台服务器,我遵循了该站点上的指示。

确保在生产服务器上与在开发服务器上保持相同的结构。我还必须在位于以下位置的drupal管理控制台中编辑一些文件:admin / config / media / file-system

确保公共文件系统路径临时目录设置正确。


这从不谈论“合并”问题。该问题明确指出,生产中的内容数据必须完整无缺,而登台服务器的增强功能必须在生产中合并。
Raj Pawan Gumdal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.