さくらのレンタルサーバーで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 での保護が重要です。
まとめ
- 必ずバックアップを取る (ファイルとデータベース)
- Composer経由でアップデート (管理画面からは行わない)
- 権限の一時変更 を忘れずに
- drush updatedb と cache:rebuild を実行
- 互換性のないモジュール は一時的に無効化