Drupal8⇒9へのバージョンアップの流れと注意点について語ってみた!
- CMS
1. バージョンアップの背景
Drupalバージョンアップの背景としては、現在私が保守を担当するサイトで稼働しているDrupal8のサポートが2021年8月にサポートが終了するためです。
2. バージョンアップの目的
Drupal9にバージョンアップすることでAcquiaサポートを受けられるようにしたり、セキュリティ面での脆弱性を減らすことを目的にしています。
3. Drupal8⇒9へのバージョンアップの流れ
Drupal8からDrupal9へのバージョンアップは以下の3つにわけて進めていきます。
- 3-1. UpgradeStatusモジュールの導入
- 3-2. UpgradeStatusモジュールでスキャンを実施
- 3-3. Drupal9バージョンアップ作業
3-1. UpgradeStatusモジュールの導入
バージョンアップ進めるために、まずはサイトで利用しているミドルウェアやコントリビュートモジュール/テーマ、カスタムモジュール/テーマがDrupal9向けに実装しているかをUpgrade Statusモジュールと呼ばれるモジュールを使います。
composerを使用している環境では以下のコマンドでインストールします。
composer require drupal/upgrade_status --update-with-dependencies
※composerを使用していない環境ではDrupal.orgにあるUpgra Statusモジュールの詳細ページよりファイルのリンクを取得し、Drupalの管理画面からインストールします。
3-2. UpgradeStatusモジュールでスキャンを実施
Upgrade Statusモジュールをインストールしたら、レポート画面へアクセスします。
レポート画面のURLは下記の通りです。
【ドメイン】/admin/reports/upgrade-status
アクセスしたらDrupal9対応できているか確認したいモジュールにチェックを入れて、ページ下部の「Scan selected」を選択します。
3-3. Drupal9バージョンアップ作業
スキャンが完了したらモジュールの削除、更新、修正の3つに分けて対応していきます。
それぞれで対応方法が異なるので、その対応方法を解説します。
3-3-1. モジュール削除
ここにリストアップされているモジュールは現在使用されていないモジュールです。
そのため下記コマンドを使用してDrupalの管理下から削除することをお勧めします。
composer remove drupal/【モジュール名】
3-3-2. モジュール更新
ここにリストアップされているモジュールはDrupal9に対応していないモジュールです。
そのため下記コマンドを使用してDrupal9対応します。
composer require drupal/【モジュール名】 --update-with-dependencies
3-3-3.モジュール修正
ここにリストアップされているモジュールはカスタムモジュールの場合がほとんどです。
モジュール内で使用しているコードがDrupal9に対応していない状態のため、Local scan resultを確認して、それに習ってコードを修正してください。
3-3-4.Drupal/coreバージョンアップ
最後に下記コマンドでDrupal coreをバージョンアップします。
composer require drupal/core-recommended:9.0.14 drupal/core-composer-scaffold:9.0.14 drupal/core-project-message:9.0.14 --update-with-dependencies --no-update
composer require drupal/core-dev:9.0.14 --dev --update-with-dependencies --no-update
composer require phpunit/phpunit:^8.4.1 --no-update
composer require "drupal/core:9.0.14 as 8.9.16" --no-update && composer update
最後にサイトの状態ページでDrupalのバージョンが9系になっていればバージョンアップ完了です。
4.バージョンアップでつまずいた点
Drupal9バージョンアップをおこなってつまずいた点を紹介します。
4-1. Drupalバージョンアップをおこなうローカル環境
当初Windows環境でバージョンアップをおこなっていましたが、Upgrade Statusモジュールインストール時に、下記のエラーが出ました。
Use the `composer fund` command to find out more!
> find docroot vendor -name '.git' | xargs rm -rf
'xargs' is not recognized as an internal or external command,
operable program or batch file.
これはWindowsでfindというコマンドが実行できないことを意味します。
そのためWindowsにWSLと呼ばれるLinux環境を構築するアプリを導入し、WSL環境でバージョンアップを実施しました。
4-2. モジュール更新時の依存関係エラー
モジュールを更新していると下記のようなエラーが出るかもしれません
Problem 1
- drupal/kint 2.x-dev is an alias of drupal/kint dev-2.x and thus requires it to be installed too.
- drupal/kint[dev-2.x, 2.1.0] require drupal/core ~8.0 -> found drupal/core[8.0.0-beta6, ..., 8.9.x-dev] but it conflicts with your root composer.json require (9.2.7).
- Root composer.json requires drupal/kint ^2.1 -> satisfiable by drupal/kint[2.1.0, 2.x-dev (alias of dev-2.x)].
これはインストールしようとしているモジュールが要件を満たしていないために発生します。
このエラーを解消するためにはモジュールのgit.drupalcode.orgにアクセスし、composer.jsonを見て要件を確認してください。
例:https://git.drupalcode.org/project/permissions_by_term
以上がDrupalバージョンアップの流れと注意点です。
WEBSASではDrupalなどのCMSで、多種多様なサイトのコンサルティングから企画、開発・構築、保守・運用までフルラインでサービスを提供しております。 サイトのリニューアル,構築をご検討されている方は是非、実績と信頼で選ぶSCSKのWEBSASにお問い合わせください。