drupal dev/stage/production setup

ami*_*ash 4 svn drupal production-environment

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

mir*_*rzu 5

以下是我们的工作方式:我们有2台服务器1台生产,第二台为每个开发人员提供开发环境和"临时"环境.代码存储在Git中,我们始终保持主分支和实时分支.

简而言之:"实时"数据库使用drush导出并分发给开发人员.使用hook_update()hook_install()两种功能"保存"配置和设置.我们使用Feeds

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

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

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

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

我们学到的最大教训是:

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