コラム
2022/08/16

Drupal8⇒9へのバージョンアップの流れと注意点について語ってみた!

  • CMS

1. バージョンアップの背景

Drupal8⇒9へのバージョンアップの流れと注意点について語ってみた!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」を選択します。

Upgradestatusスキャン
UpgradestatusScanselected

3-3. Drupal9バージョンアップ作業

スキャンが完了したらモジュールの削除、更新、修正の3つに分けて対応していきます。
それぞれで対応方法が異なるので、その対応方法を解説します。

3-3-1. モジュール削除

Upgradestatus削除

ここにリストアップされているモジュールは現在使用されていないモジュールです。
そのため下記コマンドを使用してDrupalの管理下から削除することをお勧めします。

composer remove drupal/【モジュール名】

3-3-2. モジュール更新

Upgradestatus更新

ここにリストアップされているモジュールはDrupal9に対応していないモジュールです。
そのため下記コマンドを使用してDrupal9対応します。

composer require drupal/【モジュール名】 --update-with-dependencies

3-3-3.モジュール修正

UpgradestatusFixManually

ここにリストアップされているモジュールはカスタムモジュールの場合がほとんどです。
モジュール内で使用しているコードが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
Upgradestatusサイトの状態

最後にサイトの状態ページで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にお問い合わせください。

WEBSASくん