drupal dev / stage / production setup

时间:2011-02-03 07:36:00

标签: svn drupal production-environment

嘿,我开始在drupal6开发新网站,我想知道什么是设置dev / stage / production环境的最佳方式... svn?在线付费服务(我看到serval灵魂网站需要付费做东西)bash脚本同步? 请帮忙

4 个答案:

答案 0 :(得分:5)

以下是我们的工作方式: 我们有2个服务器1个生产,第二个包含每个开发人员的开发环境和“暂存”环境。代码存储在Git中,我们始终保持主分支和实时分支。

简而言之:“实时”数据库使用drush导出并分发给开发人员。使用这两项功能以及hook_update()hook_install()“保存”配置和设置。我们使用Feeds

解复后我们有一个非常简单的shell脚本,利用drush将实时数据库从实时服务器复制到开发服务器上的暂存,开发人员使用相同的简单shell脚本将登台数据库拉到他们自己的环境中。

数据库中发生的配置和开发通过Features和/或使用安装和更新挂钩导出。使用这三种方法,我们可以轻松部署大约99%的所有设置,内容类型和其他通常只存在于数据库中的构造。最后1%倾向于使用部署设置步骤更容易处理,而不是在hook_install和hook_update中编写查询。 100%部署是可能的,但有时它并不值得努力。

最后,有时需要从一个阶段到另一个阶段部署内容。这就是Feeds模块的用武之地。使用feed和一个简单的csv导入文件,我们已经成功创建并导出了大型分类集,甚至是复杂的节点和节点集。当您需要一组标准的“测试”数据来填充开发数据库时,使用Feed也很有用。

当部署新功能或设置时,我们将开发人员更改合并到主分支,在分段上进行部署和测试,这通常需要运行update.php,然后从新的“导入”更改或更新特征。如果所有内容都通过了测试和QA,则更改将合并到实时分支中并部署在生产环境中。

我们学到的最大教训是:

  • 虽然可以将所有内容都放入功能或更新和安装,但通常不值得。
  • 最容易在开发中传递开发数据库,​​然后在尘埃落定时导出,而不是尝试导出每一个小变化。
  • 使用diff模块和功能已经多次保存了我们的屁股。

答案 1 :(得分:3)

查看碾压和碾压制作。 Drush非常适合同步,并确保查看备份迁移模块。另请参阅Features项目,该项目可帮助您在代码中捕获数据库模式(另请参阅hook_update)。

另外:Drupal将在几周后转向git。使用git。

Wheeeee!

答案 2 :(得分:1)

这可能是关于Drupal的薄雾问题之一 - 这是Drupal相当弱的一个领域。

您可能需要查看Aegir。这是一个基于Drupal的平台,旨在简化部署和更新。

它在幕后使用Drush,所以如果Aegir看起来像是满足你的需求,Drush可能就是你所需要的。 Drush是Drupal的命令行shell,它允许您使用命令提示符或批处理脚本在Drupal站点上执行操作。

在它们之间,这两个软件是Drupal推荐的管理部署的方式。

请注意,Drush(以及Aegir)的某些功能仅在Linux平台上运行时才有效,因此如果您的Drupal系统托管在Windows上,您可能会发现事情有点困难。

答案 3 :(得分:0)

一旦设置了多个环境(dev / stage / prod),就可以使用git,subversion来保持和同步多个环境中的代码。但在那之后,你将面临以下问题:如何推送 - 在环境之间拉取内容。我知道这是一个非常古老的问题,因为这也是一个非常古老的问题。我们在公司darwoft工作了一年这个问题。请看看我们的工具。 www.drumine.com。基本上,我们可以为多个环境中的对象分配相同的id。我们将在2015年12月10日,在http://camp.drupalchile.org/解释它是如何工作的。