什么是最好的Drupal部署策略?

ohh*_*hho 53 deployment drupal vps

我正在我的MacBook上研究我在XAMPP上的第一个Drupal项目.这是一个原型,并从我的客户收到积极的反馈.

我将在两周后在Linux VPS上部署该项目.有没有比从头开始重新处理服务器上的所有内容更好的方法?

  • 安装Drupal
  • 下载模块(CCK,视图,日期,日历)
  • 创建内容
  • ...

谢谢

Eat*_*ton 53

一些提示:

  • 对文件使用源代码管理,而不是FTP /等.你使用什么并不重要; 我们倾向于为每个客户启动一个Unfuddle.com subversion帐户,这样他们就可以记录错误,但关键的第一步是将站点的完整源代码树转换为版本控制.在测试服务器或登台服务器上进行更改时,您会看到它们是否正常工作,您是否提交,然后在实时服务器上进行更新.回滚和部署得到了很多,更简单.对于多个Webhead的集群,您可以从单个"规范"服务器重复该过程或rsync.

  • 但是,如果您使用SVN,您还可以使用Drupal和其他模块/主题的CVS签出,并且SVN/CVS元数据将能够愉快地生活在彼此旁边.

  • 对于像文件目录这样的大文件夹,使用"正确"位置的符号链接指向webroot之外的服务器端目录.这使得源代码控制repo包含所有代码和符号链接,而不是所有代码和用户上传的所有文件.

  • 数据库比较棘手; 清理开发/暂存数据库并将其推送到最初是最容易的,但如果实时站点上的用户也在生成内容,那么在进行增量数据库更新时会有一些问题.

去年我做了关于Drupal部署最佳实践的演讲.随意检查幻灯片.


rco*_*tna 21

功能 .module是一个非常强大的工具,用于管理Drupal配置更改.

内容类型,CCK设置,视图,Drupal变量,上下文,图像缓存预设,菜单,分类和权限都可以转换为功能,可以将其检入版本控制.从那里,使用功能UI或Drush可以轻松管理部署新站点或将更改推送到现有站点.

确保安装Strongarm.module以导出存储在Variables表中的drupal配置.您还可以通过安装uuid_features.module将静态内容/节点(即:about us,faqs等)添加到Features中.

请放手,这是与同一站点上的其他开发人员合作的最佳方式,并将您的站点从开发转移到测试再到分段和生产.


Len*_*ick 16

我们在我的工作场所对此进行了广泛的讨论,我们最终确定的方式是将代码更新(包括模块和主题)从开发推广到生产.我们正在使用Subversion,到目前为止它运行良好.

特别重要的是,您可以自动化将数据库从生产中推的过程,以便您的开发人员可以使数据库副本尽可能接近生产.在任务关键型环境中,您希望绝对确定模块更新不会影响您的数据库.我们使用的过程如下:

  1. 在开发服务器上安装模块.
  2. 记下必要的更改和更新.如果有任何故障,请恢复并再次执行,直到您有一个稳定,无错误的过程.
  3. 测试你的变化!以普通登录用户身份重复测试过程,并再次以匿名用户身份重复测试过程.
  4. 如果更新过程涉及除运行update.php以外的任何内容,则编写脚本来执行此操作.
  5. 将生产数据库复制到临时服务器,并立即执行相同的步骤.如果失败,请诊断故障并返回步骤1.否则,继续.
  6. 测试你的变化!
  7. 备份您的生产数据库并记录您已从SVN检查的修订.
  8. 将生产Drupal置于维护模式,在生产树上运行"svn update",然后完成更新过程.
  9. 让Drupal退出维护模式并测试所有内容(作为管理员,普通用户和匿名用户)

就是这样.对于像Drupal这样的社区框架,你永远不能期望的一件事就是能够在你上线后将你的数据库从测试转移到生产.从那时起,所有数据库移动都从生产到测试,这使得部署过程有些复杂化.小心!:)


Dav*_*ave 5

我很惊讶没有人提到部署模块.以下是其项目页面的摘录:

...旨在让用户轻松地将内容从一个Drupal站点转移到另一个站点.Deploy自动管理实体之间的依赖关系(如节点引用).它设计为具有丰富的API,可以轻松扩展以用于各种内容分段情况.


Nie*_*els 5

我们广泛使用Features模块来捕获功能,然后在生产站点轻松安装它们.