升级步骤
备份数据库
1,升级到最新的D8版本, 8.9.20
2,升级模块,支持D9
2.1升级第三方模块
2.2 升级定制模块
3,升级到Drupal9
自定义模块检查,是否支持D9,主要是 info文件中,是否包含了:
core_version_requirement: ^8 || ^9
对于没有这一行的加上去
先将Drupal升级到8.9的最新版本,这个简单。
接着是升级模块,到支持Drupal9的版本,这个需要自己一个一个查找,这是实际站点,我逐个查找的:
admin_toolbar 8.x-1.27 : admin_toolbar-3.2.1
blocktabs 8.x-1.0-beta3 :blocktabs-8.x-1.0-beta4
依赖于:https://www.drupal.org/project/jquery_ui_accordion
Bootstrap Datepicker 8.x-1.0 不用升级
Charts 8.x-3.2+6-dev:charts-8.x-3.4
Ckeditor drupalbreaks 8.x-1.x-dev: 卸载
ckeditor_font8.x-1.0 : ckeditor_font-8.x-1.3
ckeditor_templates 8.x-1.1:卸载
colorbutton 8.x-1.1+1-dev:colorbutton 8.x-1.3
content_entity_builder 8.x-1.0-beta11 : 不用升级
csv_serialization 8.x-1.4:csv_serialization-8.x-2.1
entity 8.x-1.0:entity-8.x-1.3
entity_print 8.x-2.4:entity_print-8.x-2.7
entity_reference_revisions 8.x-1.8:entity_reference_revisions-8.x-1.9
entity_update 2.0.0-rc2 :不用升级
fakeobjects 8.x-1.0:fakeobjects-8.x-1.2
feeds 8.x-3.0-alpha10:feeds-8.x-3.0-beta2
field_permissions 8.x-1.1:field_permissions-8.x-1.2
field_validation 8.x-1.0-beta3:不用升级
flag 8.x-4.0-beta3:不用升级
flood_control 2.2.2:flood_control-2.3.0
inline_entity_form 8.x-1.0-rc7:inline_entity_form-8.x-1.0-rc14
jquery_ui 8.x-1.4:不用升级
jquery_ui_datepicker 8.x-1.1:jquery_ui_datepicker-8.x-1.4
layout_builder_restrictions 8.x-2.2:layout_builder_restrictions-8.x-2.16
layout_library 8.x-1.0-beta1:layout_library-8.x-1.0-beta3
link_attributes 8.x-1.11:不用升级
ludwig 8.x-1.8:ludwig-8.x-1.12
masquerade 8.x-2.0-beta4:masquerade-8.x-2.0-rc1
month_year 2.0.1:不用升级
nice_login 2.0.0:不用升级
panelbutton 8.x-1.2:panelbutton-8.x-1.5
paragraphs 8.x-1.11:paragraphs 8.x-1.13
paragraphs_table 8.x-1.3:paragraphs_table-8.x-1.20
pdf 8.x-1.x-dev:pdf-8.x-1.1
profile 8.x-1.1:卸载
r4032login 8.x-1.1:r4032login-2.1.0
select2 8.x-1.13:不用升级
shs 8.x-1.0-alpha4:shs-2.0.0-rc3
super_login 8.x-1.6:super_login-2.1.0
taxonomy_manager 2.0.4:卸载
transliterate_filenames 8.x-1.5:transliterate_filenames-8.x-1.10
twig_tweak 8.x-2.4:twig_tweak-8.x-2.10
verf 8.x-1.0:不用升级
views_bulk_operations 8.x-2.6:views_bulk_operations-4.1.6
views_data_export 8.x-1.0:views_data_export-8.x-1.1
views_field_view 8.x-1.0-beta3:views_field_view-8.x-1.0-beta4
workflow_buttons 8.x-1.0-beta4:不用升级
yearonly 8.x-1.3:yearonly-9.1.0
主题也要升级
bootstrap 8.x-3.20:bootstrap-8.x-3.24
自定义主题info文件添加:
core_version_requirement: ^8.8 || ^9
此时主题的info文件,需要去掉core标签
升级后,也是正常的,
但是升级到Drupal9时,个别模块需要降级才能正常工作。
另外,开始我直接从 Drupal8.9.20 升级到Drupal9.5,问题很多。
后来我改为了,先升级到Drupal9.2,问题少了很多。
另外,就是yml文件,主题的,在Drupal8下面,可以工作,到了Drupal9,严格了。需要严格按照yml规范编写。不然报错。比如:
Warning:Invalid argument supplied for foreach() 在函数 Drupal\Core\Asset\AssetResolver->getJsAssets()(文件 /home/www/website/jobs/core/lib/Drupal/Core/Asset/AssetResolver.php 第 254 行)
#0 /home/www/website/jobs/core/includes/bootstrap.inc(312): _drupal_error_handler_real()
对于一个实际站点,升级Drupal8到Drupal9,差不多花了我一天的时间,整体还算顺利。Drupal主版本的升级,从来不是容易的事情。
自定义模块里面的代码,一些也要修改。