问题
我们之前一直用比较原始的方法,就是在本地搭建好环境以后,开始开发 Drupal 网站,基本完成以后,就把网站打个包,传到服务器上,再恢复一下数据库。这样做的问题是,如果网站有了新的修改,如果你直接在本地改,完成以后,还需要重做一些迁移的动作,打包,上传,恢复 ... 如果你直接在服务器上改,又很麻烦,并且有太多不确定的东西,很可能会破坏掉网站,如果你没有备份就很复杂,你要自己判断到底是哪里出了问题。
方法
我找到了一个更好的方法,最近会做成视频。听起来这个方法有些复杂,要做的步骤可能会比之前多一些,不过我认为是更好的方法,而且熟悉之后,我们就不会觉得复杂了,我猜这也是大部分项目开发的流程。
版本控制
同样我们需要在本地开发,好处是速度快,并且,如果你的项目不是一个人,其它的团队成员同样可以在本地有一个项目的开发版本。然后你们都使用 Git 为项目做版本控制,也就是对项目的每次修改都会被保存成一个版本。为项目提供一个远程仓库,团队成员都可以把在本地对项目的修改推送到这个远程仓库上。如果这个网站只有您自己做,也需要使用 Git ,长远看,会带来很多好处。
你在本地用 git push 把修改推送到项目的远程仓库,在其它环境上,比如生产环境,用 git pull ,把新的修改下载下来。
Features
在本地,用 Features 模块把对 Drupal 网站所做的配置导出成 Feature 模块,这样你就可以在任何地方使用这些 Feature 模块,启用它们以后,会把你的配置导入到数据库里。
Drupal 的大部分东西都保存在数据库里,包含一些配置信息,比如你创建的内容类型,字段,区块等等,这些都在数据库里,这就带来一个问题,您怎么把这些东西放到你的项目的版本控制里面? 因为如果不这样做,你在本地对项目的配置与修改,就很难部署到远程服务器上,你可能需要导出与导入数据库才行。
Drupal 8 解决了这个问题,它有一套配置系统,也就是我们可以把配置信息做成文件,用代码来保存。在 Drupal 7 上,我们要使用 Features 模块,把你所做的配置,比如创建的内容类型,字段,区块,视图这些东西,导出为 Feature 类型的模块。这就相当于是你把在数据库里的配置信息,用文件的形式保存下来。这些 Feature 模块你可以在其它的地方去恢复,这样 Drupal 又会把它们表示的东西导入到数据库里。
Drush
使用 Drupal ,就必需使用 Drush,它是一个可以使用命令行控制 Drupal 的工具。我们可以为在不同环境的 Drupal 起个名字。这样你就可以直接在本地去控制在不同地方的 Drupal 了。比如:
drush @dev status
上面的 @dev 是我配置的一个名字,它表示在开发环境上的 Drupal,我在本地执行上面这行命令,给我返回来的是在开发环境上的 Drupal 的一些信息。
drush sql-sync @prod @local
上面这行命令会同步一下数据库,会把 @prod 上的数据库同步到 @local 上。意思就是把在生产环境上的数据库同步到本地。
总结
在这个工作流程里,我们需要用到 Git 做版本控制,用 Features 模块把 Drupal 保存在数据库里的配置导出成模块,用 Drush 作为基本的操纵不同环境上的 Drupal 的工具。
Drupal
评论
学习了~
9 年 5 个月 以前
期待这个视频教程,支持!
9 年 5 个月 以前
好期待呀
9 年 5 个月 以前
期待drupal8的视频教程……
9 年 4 个月 以前
出来了吗 大哥
9 年 4 个月 以前
这个视频出来了没有吖~
9 年 3 个月 以前
还没有呢。以后会出 :)
9 年 3 个月 以前
皓哥,赶紧把drupal开发流程放出来吧,真的太痛苦了
8 年 8 个月 以前
哈哈,好来。
8 年 8 个月 以前
半夜期待:)
8 年 7 个月 以前
希望多出些关于Drupal的视频 :)
8 年 2 个月 以前
嗯,好来。
8 年 2 个月 以前
啥时候可以出这个的视频嘞 ~~~~
8 年 2 个月 以前
要出,要出,嘿嘿。
8 年 2 个月 以前
皓哥,这个视频的链接是哪个?
5 年 11 个月 以前
里面的 feature 模块没有制作视频,其它的可以参考 Drupal 课程包:https://ninghao.net/package/drupal
5 年 11 个月 以前