第一步
要了解Composer如何管理Drupal依赖项,请参阅将Composer与Drupal一起使用。要确定Composer是否是一种合理的更新方式,请比较可用选项。
为方便起见,这些说明包括完成更新所需的Drush命令:许多人发现Drush比基于Web的管理区域更快更容易。但是,如果您没有对生产服务器的命令行访问权限,则几乎每个Drush命令都具有Web等效项。对于那些没有的人,例如备份,通常存在contrib模块。
如果这是一个现有的Drupal站点,之前从未使用过Composer,请确保它首先为作曲家做好准备。
# 更新Drupal 8核心
首先,验证Drupal核心的更新实际上是否可用:
composer outdated "drupal/*"
在运行composer update时,为了查看哪些更新可用以及哪些模块将更新
composer update --dry-run
如果没有以行开头的行,则Composer不知道任何更新。如果有更新,请继续执行以下命令。drupal/core
一步更新说明
假设您习惯于更新Drupal并了解应该采取的所有预防措施,则更新非常简单:
composer update drupal/core --with-dependencies drush updatedb drush cr
如果你使用drupal-composer / drupal-project启动你的Drupal站点 ,上面的命令可能不起作用。请阅读下面的列表。
- 如果要从8.5升级到8.6,则需要将“~8.5.x”替换为drupal / core的“^ 8.6.0”和composer.json中的webflo / drupal-core-require-dev。
- 必须将composer update命令更改为
composer update drupal/core webflo/drupal-core-require-dev --with-dependencies
如果您尚未使用composer安装Drupal 8,则必须将站点转换为作曲家管理的项目才能使用上述命令更新Drupal。请参阅“ 将编译器添加到现有站点 ”,以获取有关将编写器手动添加到以前未安装Composer的现有Drupal 8站点的 分步指南。
逐步更新说明
使用composer更新Drupal 8核心的所有步骤:
- 在更新之前,请始终备份文件和数据库。
drush sql-dump
将转储数据库。drush archive-dump
遗憾的是,从Drush 9中删除了,因此您必须使用标准的CLI工具来备份所需的目录 - 通常不包括供应商目录。
- 阅读核心发行说明。一些贡献的模块或主题可能需要更新以使用核心的新“ 次要”版本(例如8.3到8.4)。补丁发布(例如8.4.4到8.4.5)不应要求这样做。要检测所需的模块或主题更新,您需要阅读项目页面或发行说明。
- 使用然后激活维护模式。
drush sset system.maintenance_mode 1
drush cr
- 如果您确定某些模块或主题需要更新,请按照模块更新说明进行操作。
- 更新Drupal核心及其所有依赖项:
- 运行以下Composer命令:
composer update drupal/core --with-dependencies
- 如果您使用drupal-composer / drupal-project启动Drupal站点,请改为运行此命令:
composer update drupal/core webflo/drupal-core-require-dev --with-dependencies
- 运行以下Composer命令:
- 接下来,使用
drush updatedb
并清除缓存来应用任何所需的数据库更新drush cr
- 检查您的Drupal站点是否正常:
- 查看状态报告页面以查找错误。
- 如果启用了数据库日志记录模块,请执行一些基本操作并检查最近的日志以查找错误,警告等。
- 使用 然后取消激活维护模式。
drush sset system.maintenance_mode 0
drush cr
- 停用维护模式后,也以匿名用户身份测试该站点。
在您的生产环境中
- 您不需要重复上述过程的其余部分,因为
composer install
它将读取composer.lock中所有包的确切提交指针,因此您将在两个环境中拥有相同版本的所有内容。 - 如果您有单独的开发/暂存和生产服务器,请确保将composer.json 和composer.lock文件复制/提交到生产并始终 在生产中运行 ,而不是更新。(--no-dev开关将停止安装'require-dev'中列出的任何软件包,通常是用于调试的模块和用于单元/行为测试的库。)
composer install --no-dev
# 已知问题和解决方法
如果您运行composer update
上面的命令但未更新,则可能存在阻止Drupal升级的另一个依赖项。您可以使用该命令检查阻止依赖项。例如,如果您尝试从8.4.5升级到8.5.0,则可以运行,并且应该提供阻止升级的依赖项列表。更新这些依赖项,它应该工作(例如)。drupal/core
composer prohibits
composer prohibits drupal/core:8.5.0
drupal/core
composer update drupal/core "symfony/*" --with-dependencies
Composer更新问题通常与废弃的composer模板或composer.json中的错误设置有关。确保使用的是第3.5章中建议的作曲家模板。Drupal 8用户指南“ 使用Composer下载和更新文件 ”。请参阅“ 将编译器添加到现有站点 ”,以获取有关将编写器手动添加到 以前未安装Composer的现有Drupal 8站点的 分步指南。
其他一些相关问题和博客文章提供了进一步的帮助:
- 使用Composer升级到Drupal 8.4.0和Drush 9 - 由Isojira的Benji Fisher(@benjifisher)撰写的博客文章介绍了有问题的8.3到8.4升级。
- 更新到Drupal核心8.4,一步一步指南 - PreviousNext的博客文章,涵盖有问题的8.3到8.4升级。
- 使用作曲家更新到Drupal 8.5 - Eirik Morland(eiriksm)的博客文章报道了从8.4到8.5的一些问题。
- Composer无法从8.4.4升级到8.5.0-alpha1 - 很多想法如何解决作曲家更新问题。
- 无法更新您的Drupal 8网站?然后,这篇博客文章适合您 - 新的GoComposer插件的博客文章,可自动执行更新过程并将您的网站转换为推荐的模板。
如果在更新过程中发生错误和警告,建议您仔细阅读并在问题队列中搜索可能的解决方案,然后再继续。如果出现致命错误,建议始终使用之前建议的备份停止进一步更新并从头开始重新启动整个过程。
评论