用composer 和 git 升级(update) drupal 8 核心代码

周志高 提交于 周一, 06/10/2019 - 16:08

本文讲述怎样用 composer 和 git 结合升级(update) drupal 8 核心代码。

请注意,本文讲述的是 update 而不是 upgrade。 所谓 upgrade 是指从 drupal 7 升级到 drupal 8,或者从 drupal 8 升级到 drupal 9,也就是 drupal 主要版本的升级; 而 update 是指 主要版本内部的小升级,比如从 drupal 8.7.2 升级到 drupal 8.7.3,这样的升级就是 update.

注意,我们还是要先在本地开发环境做升级,然后把代码 push 到远程代码仓库,然后从远程代码仓库把代码拉到远程测试环境或者生产环境。千万别直接在生产环境升级,那样的话出了问题你就哭吧。

第一部分:在本地开发环境升级 drupal 8 核心代码

  • 首先查看有无可用更新。如果查到核心(drupal core)有更新,那么进入下面的流程。查看可用更新有两种方法。一种是在管理后台点击“报告”,再点击“可用更新”,可用查出有无可用更新;另一种方法是在命令行中输入:sudo composer outdated “drupal/*” , 这样可以查看 drupal core 有无更新;如果输入 sudo composer update --dry-run, 则可以查看有哪些更新,以及在更新 drupal core 时 哪些模块也会更新。
  • 首先要备份数据库。这个具体操作就不说了。
  • 其次要备份程序代码。这个简单,也不说了。

如果你的网站是用 drupal-composer/drupal-project 这个模板安装的,那么请按照以下步骤更新 drupal core.

  • cd your_web_project_folder (注意,此目录是 web 目录的上一层级,也就是说,它是网站根目录的上一级目录。)
  • sudo git checkout dev    // 切换到 dev 分支
  • sudo composer update drupal/core webflo/drupal-core-require-dev    --with-dependencies
  • sudo drush updatedb
  • sudo drush cr
  • 然后到网站管理后台,点击“报告”,接着点击“可用更新”,如果发现现在已经是最新版了,说明代码更新成功。然后还需要执行一些简单的 crud 操作,看数据库更新是否成功。
  • sudo drush sset system.maintenance_code 0
  • sudo drush cr
  • 在浏览器里输入网址以匿名用户测试是否OK。
  • sudo git add .
  • sudo git commit -m “updated drupal core to x.x.x"
  • sudo git checkout master
  • sudo git merge dev
  • sudo git push origin master   // 将代码 push 到远程代码仓库

第二部分: 在远程测试服务器/生产服务器安装更新

  • cd path/to/your_project_folder (注意,此目录是 web 目录的上一级目录)
  • 备份数据库
  • 备份网站代码
  • sudo vendor/bin/drush sset system.maintenance_mode 1    // 将网站设置为维护状态
  • sudo vendor/bin/drush cr            // 清理缓存
  • sudo git pull  // 从远程代码仓库拉下最新版的代码
  • sudo composer install --no-dev     // 更新代码
  • sudo vendor/bin/drush updatedb   // 更新数据库
  • sudo vendor/bin/drush cr              // 清理缓存
  • sudo vendor/bin/drush sset system.maintenance_mode 0   // 取消网站维护状态
  • sudo vendor/bin/drush cr             //再次清理缓存