Drupal 9からDrupal10へのアップグレード方法

モチヤスタッフ
Drupal 9からDrupal10へのアップグレード方法

Drupalのメジャーバージョンである10が発表されました。
今回はDrupal 9からDrupal 10へのアップグレード方法についてまとめておきます(管理画面上では「アップデート」表記も所々で見かけますが、公式サイトにはアップグレードと表記されてあったため、本記事では統一してアップグレードと表記します)。

Drupal 7とDrupal 9はサポート期限が2023年11月で終了してしまいます。
直前になって慌てないためにも、余裕を持っての準備が必要となります。

現在Drupal 9を使っている方はぜひアップグレード時の参考にしてください。
また、アップグレードを行う前に必ずバックアップをして、1度記事を通して読んで流れを把握してから行うことをオススメします。

Drupal 10の特徴

Drupal 9ではPHPのフレームワークに「Symfony 4」を採用していましたが、Drupal 10では「Symfony 6.2」が採用されています。
また、現在サポートが終了しているため必要ないと思いますが、Internet Explorer(IE)とは互換性がありません。

機能面ではデフォルトのテーマとして新たに管理画面の「Claro」、フロント画面の「Olivero」が追加されました。

また、WYSIWYGエディタである「CKEditor」のバージョンが4から5にアップしました。
これによって今までよりモダンな記事・ページの編集ができます。

他にもJavaScriptコンポーネントを新しいバージョンに置き換えることで最新の環境で動作出来るようになっていたり、テーマジェネレーターの「Starterkit Theme Generator」が追加されていて開発面でもパワーアップしています。

現時点ではまだ実装されていませんが、他にも「Automatic Updates」や「Project Browser」の2つの新機能も準備ができ次第追加される予定です。

Drupal 10が動作する環境か確認する

まずはDrupal 10が動作する環境なのかどうか確認しましょう。
必要要件は下記の通りです。

  ミドルウェア 必要バージョン
サーバー Apache 2.4.7
Nginx 0.7
0.8
1.0.○
1.2.○
1.8.○
1.9.○
データベース MySQL / Percona 5.7.8以上
MariaDB 10.3.7以上
PostgreSQL 12以上
SQLite 3.26以上
PHP PHP 8.1以上(8.1.6以上を推奨)

なお、PHP8.1のセキュリティサポート期限は2024/11/25までです。
PHP8.2であれば「2025/12/08」までセキュリティサポートの期限があります。

現状が8.1に満たない場合は、この機会にできる限り新しいバージョンに上げておいてもいいかもしれません。

Drupal9から10へのアップグレード方法

それでは、Drupal 9から10へアップグレードを行いましょう。
「Upgrade Status」というモジュールがあるので、それを使ってやるべきことをチェックし、アップグレードします。

大まかな流れは下記の通りです。

  1. ウェブサイトのバックアップをする
  2. 「Upgrade Status」を使用してモジュールや環境を確認する
  3. Drupal本体をアップグレードする
  4. アップグレード後のエラーを解消する

ウェブサイトのバックアップをする

まず、アップグレードを行う前にウェブサイトのバックアップを行います。

Drupal本体を含めたファイルをバックアップしておくのと、データベースのバックアップを行います。
なお、Drupal管理画面からバックアップができる「Backup & Migration」というモジュールを過去に紹介しています。

バックアップ方法に関してはぜひそちらも参考にしてください。
なにかトラブルがあった場合にバックアップがないと復元ができなくなってしまうため、必ずバックアップを取ってから作業するようにしましょう。

「Upgrade Status」を使用してモジュールや環境を確認する

次に「Upgrade Status」というモジュールをインストールします。
これはサーバー環境やインストールしているモジュールがDrupal 10に対応しているか確認してくれたり、行うべき作業を管理画面に表示してくれるモジュールです。

モジュールのインストール

Upgrade Status」のモジュールページへアクセスして、「Releases」に書かれてあるcomposerコマンドを使用してインストールします。

コマンドを実行したら、Drupalの管理画面メニューの[機能拡張]をクリックします。
モジュールをインストールしていると、この一覧ページに新しく「Upgrade Status」が追加されています。

チェックを入れてページ最下部の「インストール」をクリックすれば完了です。

メニューバーの「機能拡張」にアクセス。モジュール一覧から「Upgrade Status」モジュールにチェックを入れる。

チェックリストを確認する

モジュールをインストールしたらDrupalの管理画面メニューの[レポート]内の項目に「Upgrade status」が追加されるので、それをクリックします。

Drupalの管理画面メニューの[レポート]内の項目の[Upgrade Status]を選択。

モジュールを追加したときは[環境設定]メニュー内に項目が追加されますが、このモジュールに関してはあくまで現状のDrupalを確認してアップグレードに必要な情報を表示させるものになるので、[環境設定]ではなく[レポート]内に追加されます。

スキャンした結果のやるべきことがページに表示されるので、順番に対応していきます。

アップグレードに必要な内容が表示されます。

Drupal本体や環境を確認する

「Drupal core and hosting environment」ではDrupal本体のバージョンやPHP・データベースなどの環境が、Drupal 10にアップグレードできる状態にあるかのスキャン結果が表示されます。

アップグレードに必要な内容の表示。

なお、Drupal 10にアップグレードするためには現状のDrupalのバージョンが9.4.○か9.5.○である必要があります。
今回試したバージョンが9.4.8だったのでアップグレード自体はできますが、Drupal 9の1番最新のバージョンではないので黄色の注意アラートが表示されています。

また、Drupal 10では「Color」という対応するテーマのカラースキーマを変更できるようにするDrupal coreのモジュールが削除されるみたいです。
そのことが赤字の警告アラートが表示されています。

これは放っておいてもアップグレードのタイミングで自動的に削除されますが、念のため「Color」モジュールをアンインストールしてしまうのをオススメします。

それ以外になにか警告が出ている場合は「状態」列に書かれている内容を確認して緑色の状態になるようにしましょう。

不要なモジュールを削除する

「削除」に表示されているモジュールはDrupal 10に互換性のないモジュールです。
他に代替モジュールを探すか、そのモジュールを使っていない場合は単に削除してしまいましょう。

Rest UI と Token モジュールが一覧化されている。

Composerでインストールしている場合は下記のコマンドを実行で削除できるので、削除していきます。

composer remove モジュール名

Drushを使ってモジュールを削除する場合は下記のコマンドになります。

drush pm:uninstall モジュール名

開発環境にLandoを使っている場合は、通常とDrushのコマンドが違って先頭に「lando」を付ける必要があります。

lando drush pm:uninstall モジュール名

削除が完了したら、モジュールの1番左のチェックを入れて「Scan selected」で改めてスキャンします。
すべてのモジュールに問題がなければ、この「削除」項目自体が表示されなくなります。

モジュールの更新をする

「更新」にリストアップされているモジュールはアップデートが必要なものです。

更新が必要なモジュールの一覧。

コマンドを使っても更新はできますが、サイト管理画面から簡単にできるのでそちらをオススメします。
管理画面メニューの[レポート]→[利用可能なアップデート]を選択します。

Drupalの管理画面メニューの[レポート]内の項目の[利用可能なアップデート]を選択。

[更新]タブを開くとアップデート可能なモジュールが表示されるので、チェックを入れて「アップデートをダウンロード」ボタンをクリックします。

選択したアップデートをダウンロード。

ダウンロードできて準備が完了したら、「アップデート準備完了」画面が表示されます。「継続」ボタンをクリックして、あとは指示に従ってアップデートするだけです。

「継続」ボタンを選択し、モジュールのアップデートを実行する。

アップデートが完了して確認も済んだら、メンテナンスモードをオフにしましょう。

モジュールの修正をする

カスタムモジュールを使っている場合は「Fix manually」という項目が表示されている場合があります。

これはカスタムモジュール内で使用しているコードに、Drupal10では対応していない記述があるため表示されています。
「Local scan result」部分を確認して、書かれている内容に従ってコードを修正しましょう。

モジュールの互換性を確認する

「Compatible with next major Drupal core version」に表示されているモジュールは、Drupal 10と互換性があり、問題がなかったモジュールです。

[Compatible with next major Drupal core version]の内容。

特に何もする必要はありませんが、もし使っていないモジュールがある場合はこの機会に整理して削除しておくことで、今後の管理の手間が省けます。
あらためてどんなモジュールをインストールしているのか確認するいい機会なので、不要なものはないか確認しておきましょう。

Drupal本体をアップグレードする

モジュールやテーマの確認ができたら、いよいよDrupal本体(Drupal Core)をアップグレードします。

Drupal coreのページを開き、「Releases」にある「Drupal core 10.○.○」のボタンをクリックします。
Composerを使ったインストールコマンドやDrupal本体のダウンロードリンクの他に、Composerを使ったアップグレードコマンドが書かれているので、それを実行します。

なお、下記コマンドの場合はDrupal 9.○.○の最新バージョンにアップグレードされる可能性があります。

composer update "drupal/core-*" --with-all-dependencies

バージョン名も指定されてある方のアップグレードコマンドを実行しましょう(下記コマンドは例として10.0.9へのアップグレードコマンドを記載しています。サイトから最新バージョンのコマンドを探して実行するようにしてください)。

composer require drupal/core-recommended:10.0.9 drupal/core-composer-scaffold:10.0.9 drupal/core-project-message:10.0.9 --update-with-all-dependencies

コマンドを実行すると、Drupal coreのアップグレードが始まりますが、今回実行した時は下記のようなエラーが表示されました。

上記コマンドによるアップグレードコマンド。


    Your requirements could not be resolved to an installable set of packages.
    
      Problem 1
        - Root composer.json requires drupal/core-recommended 10.0.9 -> satisfiable by drupal/core-recommended[10.0.9].
        - drupal/core-recommended 10.0.9 requires drupal/core 10.0.9 -> found drupal/core[10.0.9] but these were not loaded, likely because it conflicts with another require.
    
    Installation failed, reverting ./composer.json and ./composer.lock to their original content.
  

エラー内容を確認したところ、composer.jsonに書かれてある内容と今からインストールしようとしている内容でバッティングが起こっているようでした。

composer.jsonを開き「"drupal/core-recommended"」のバージョンを今回アップグレードしたいDrupalのバージョンに変更し、念のため「composer.lock」ファイルを別の場所に退避させてから再度実行するとうまくいきました。

アップグレード後のエラーを解消する

アップグレードが完了したら実際にサイトの表示に問題がないか確認しましょう。
なにかエラーがある場合は管理画面に警告アラートが表示されるので、「サイトの状態」リンクをクリックします。

画面上部のステータスメッセージにある「サイトの状態」を選択。

クリックすると[レポート]→[サイトの状態]が開きます。
エラーの数が表示されるので「Details」をクリックして詳細を確認しましょう。

エラーの表記。

今回見つかったエラーは下記の3つでした。

  • 「Removed core modules」:Drupal 10にアップグレードしたタイミングでコアモジュールから削除されたモジュールがあるので、別途インストールする必要がある
  • 「Removed core themes」:Drupal 10にアップグレードしたタイミングでコアモジュールから削除されたテーマがあるので、別途インストールする必要がある
  • 「データベース更新」:データベース更新が必要なモジュールがあるので更新する

モジュールとテーマに関しては、対象モジュールがリストアップされているので、リンクをクリックして各モジュール・テーマページからcomposerコマンドでインストールします。

データベース更新に関しては「データベースのアップデートスクリプト」リンクをクリックすると、データベースの更新ページに移動します。
ここで指示に従って進めていくと更新が完了します。

データベースの更新画面。「/update.php」

すべてのエラーが解消されて、念のため問題がないかサイト上を確認して回ったらアップグレードは完了です。

Drupal 8から10にアップグレードしたい場合

Drupal 8は2021年11月にすでにサポートを終了しています。
まだ使用している場合はアップグレードが必要ですが、直接Drupal 8からDrupal 10へのアップグレードはサポートされていません。

「Upgrade Status」モジュールを使用して、まずはDrupal 8からDrupal9にアップグレードした後に、Drupal 9からDrupal 10にアップグレードする必要があります。

なお、Drupal 7からの場合は、アップグレードではなく完全な移行作業(マイグレート)が必要になるため、大がかりな対応となります。

まとめ

今回Drupal 9からDrupal 10へのアップグレードを行ってみましたが、Upgrade Statusモジュールのおかげでアップグレード前に何をすればいいか確認して進めることができました。

Drupal 9からのアップグレードであれば今回のように比較的簡単に完了しますが、カスタマイズを大幅に行っている場合や、モジュールを多く利用している場合、Drupal 7や8を利用している場合は手順が複雑になる可能性があります。

大がかりな作業ですし、トラブルが発生した場合はサイトに大きく影響が出てしまうことなので、不安な場合はプロに任せる方が安心です。

​​弊社にはDrupalでの開発経験が10年以上を誇る開発者や寄与モジュールのコントリビューターなど、経験豊富な技術者が多数揃っています。
今回の記事のようなDrupal 10へのアップグレード対応も可能です。

他にもDrupalの新規導入、既存システム保守管理などのご相談がありましたら、お気軽にお問い合わせください。

モチヤスタッフ

Drupalなど技術に関する投稿をモチヤのスタッフが行っています。

モチヤスタッフ の書いた記事一覧

最新の関連記事

Ranking

Category

Tag

Contact お問い合わせ

Drupalでの開発・運用、サーバー構築、Webサイト構築全般、制作費用などに関してお気軽にご相談ください。