さくらのレンタルサーバーでDrupal 10.1.5から10.6.1へアップデートした際の手順をまとめます。

環境

  • サーバー:さくらのレンタルサーバー
  • Drupal:10.1.5 → 10.6.1
  • インストール形式:従来型(tarball、web/ディレクトリなし)

事前準備

作業用ディレクトリの作成

バックアップは www 外に保存します(Webからアクセスできないようにするため)。

mkdir -p /home/[ユーザー名]/backups/drupal

ファイルのバックアップ

cd /home/[ユーザー名]/www
tar -czvf /home/[ユーザー名]/backups/drupal/drupal_backup_$(date +%Y%m%d).tar.gz [drupalディレクトリ]/

データベースのバックアップ

さくらのレンタルサーバーでは --no-tablespaces オプションが必要です。

cd /home/[ユーザー名]/www/[drupalディレクトリ]
./vendor/bin/drush sql-dump --extra-dump="--no-tablespaces" > /home/[ユーザー名]/backups/drupal/db_backup_$(date +%Y%m%d).sql

Drupalコアのアップデート

権限の変更

sites/default ディレクトリは書き込み禁止になっていることが多いため、一時的に変更します。

chmod 755 /home/[ユーザー名]/www/[drupalディレクトリ]/sites/default
chmod 644 /home/[ユーザー名]/www/[drupalディレクトリ]/sites/default/default.services.yml

Composerでアップデート

さくらのレンタルサーバーでは composer コマンドが使えないため、composer.phar を使用します。

cd /home/[ユーザー名]/www/[drupalディレクトリ]
php composer.phar require drupal/core-recommended:^10 drupal/core-composer-scaffold:^10 --update-with-dependencies

データベース更新とキャッシュクリア

./vendor/bin/drush updatedb -y
./vendor/bin/drush cache:rebuild

権限を戻す

chmod 555 /home/[ユーザー名]/www/[drupalディレクトリ]/sites/default
chmod 444 /home/[ユーザー名]/www/[drupalディレクトリ]/sites/default/settings.php

トラブルシューティング

Rulesモジュールの互換性エラー

アップデート後に以下のようなエラーが出る場合:

The "entity_bundle:node" plugin does not exist.

Rulesモジュールが新しいDrupalコアと互換性がない可能性があります。一時的に無効化します:

./vendor/bin/drush pm:uninstall rules -y
./vendor/bin/drush cache:rebuild

推奨設定

trusted_host_patterns の設定

settings.php に以下を追加します:

chmod 644 /home/[ユーザー名]/www/[drupalディレクトリ]/sites/default/settings.php

echo "
\$settings['trusted_host_patterns'] = [
  '^example\\.jp\$',
  '^www\\.example\\.jp\$',
];" >> /home/[ユーザー名]/www/[drupalディレクトリ]/sites/default/settings.php

chmod 444 /home/[ユーザー名]/www/[drupalディレクトリ]/sites/default/settings.php

state_cache の有効化

Drupal 11に向けた準備として、settings.php に追加:

$settings['state_cache'] = TRUE;

非推奨モジュールの無効化

Drupal 11で削除予定のモジュールを無効化しておきます:

./vendor/bin/drush pm:uninstall tour -y
./vendor/bin/drush pm:uninstall layout_builder_expose_all_field_blocks -y

モジュールのアップデート

Composer管理のDrupalでは、管理画面からではなくComposer経由で更新します。

cd /home/[ユーザー名]/www/[drupalディレクトリ]
php composer.phar update --with-all-dependencies
./vendor/bin/drush updatedb -y
./vendor/bin/drush cache:rebuild

補足:Drupalの構成タイプについて

Drupalには2種類の構成があります。

構成特徴シンボリックリンク分離
従来型(tarball)ルート直下に index.php がある効果なし
Composer推奨型web/ ディレクトリがある有効

従来型の場合、vendor/composer.json がWebからアクセス可能になるため、.htaccess での保護が重要です。

まとめ

  1. 必ずバックアップを取る (ファイルとデータベース)
  2. Composer経由でアップデート (管理画面からは行わない)
  3. 権限の一時変更 を忘れずに
  4. drush updatedb と cache:rebuild を実行
  5. 互換性のないモジュール は一時的に無効化