通过 Drush 更新 Drupal 核心
本文档已过时。请帮助更新到最新版本。
在开始之前
推荐使用 Composer 来管理 Drupal 的依赖项;请参阅《在 Drupal 中使用 Composer》了解更多信息。Drush 9 不再支持更新 Drupal,而是将此任务交给 Composer。因此,建议使用 Composer 更新 Drupal。不过,如果您长期使用 Drush,仍可使用 Drush 8(版本 8.14 或更高)来更新 Drupal 8。
P.S.:请参阅更新概览,了解所有可用更新方法。
提示:如果在更新过程中出现致命错误,请务必恢复到更新前的备份。
使用 Drush 更新 Drupal 8 核心
以下步骤介绍如何使用 Drush 8.x 更新 Drupal 8 核心。Drush 是 Drupal 的命令行管理工具。
1. 备份文件和数据库。使用 Drush 输入以下命令:
drush archive-dump
说明:
- 更新前务必创建备份,以便在出现问题时能够快速恢复。
- 命令
drush archive-dump
会创建网站文件及数据库的 .tar.gz 归档。此命令在新版 Drush 中已被弃用,仅会打包 /web 目录下的文件。
2. 检查可用更新
drush pm-updatestatus
- 别名命令:
ups
- 注意:对于基于 Composer 的安装,请改用
composer show
3. 启用维护模式
drush state-set system.maintenance_mode 1
别名命令:sset
4. 清理缓存
drush cache-rebuild
- 别名命令:
cr
- 此命令清除数据库中的所有 cache_* 表,并重新构建网站容器。
5. 执行更新
根据需要选择以下一种或多种更新方式。命令 pm-update
(别名 up
)会同时更新代码与数据库,等同于 pm-updatecode + updatedb
。
选项:更新 Drupal 8 核心
drush pm-update drupal
选项:更新至开发分支(仅供测试和补丁使用,非生产环境)
drush pm-update drupal-8.5.x-dev
选项:更新单个模块
drush pm-update module_name
选项:仅安装安全更新
drush pm-update --security-only
6. 重新应用手动修改
如果您修改过文件(如 .htaccess、composer.json 或 robots.txt),需要在更新后手动恢复。Drush 不会自动执行这些更改。
7. 重新应用自定义补丁
若您在更新前曾应用核心补丁,请在更新后重新应用(如果这些补丁尚未被官方合并)。
% git log --oneline --reverse core ee2bf8dd Issue #18: Updated Drupal core from 8.3.4 to 8.3.5. 267e3ad0 Issue #27: Applied patch from https://www.drupal.org/project/drupal/issues/2174633#comment-12291691. 718ecba5 Issue #9: Applied patch from https://www.drupal.org/project/drupal/issues/2906229#comment-12496488.
使用 git cherry-pick
按时间顺序重新应用补丁:
% git cherry-pick 267e3ad0 % git cherry-pick 718ecba5
8. 更新 /vendor 目录
如果您使用 Composer 管理 PHP 库(某些模块依赖),运行以下命令更新 vendor 目录:
composer update drupal/core --with-dependencies
9. 更新数据库
如果有待执行的数据库更新,请运行:
drush updatedb
别名命令:updb
10. 检查网站运行状况
- 通过 Drupal 管理界面查看“状态报告”页面。
- 在浏览器中访问主要页面,确保网站正常运行。
11. 关闭维护模式
drush state-set system.maintenance_mode 0
12. 再次清理缓存
drush cache-rebuild
13. 完成
您已成功使用 Drush 更新了 Drupal 8 🎉