既存サイトへの Composer の追加
Drupal 8.8.0 で簡素化されました
注意: Drupal 8.8.0 以降のバージョンでプロジェクトを開始した場合、あなたのサイトはすでに正しいファイル構造を使用しており、Composer に対応しています。
このページは、以前 Composer なしでインストールした既存のサイトに、Composer サポートを手動で追加するためのステップバイステップのガイドです。アーカイブから手動で Drupal 8 をインストールした場合、または drupal/drupal のような非推奨の Composer テンプレートを使った場合、このガイドが役立ちます。
Drupal 8.8.0 以降で作成されたサイトの場合
アーカイブから Drupal 8.8.0 をインストールした場合でも、Composer は事前に初期化されています。したがって、追加の変換手順なしで Composer を使ってサイトを管理できるはずです。
Drupal 8.8.0 より前に作成されたサイトの場合
8.8.0 より前の Drupal ダウンロードに含まれていた composer.json ファイルは、Composer 管理のサイトを想定したものではありませんでした。手動管理から、Composer を使って Drupal コアやコントリビュートモジュールをインストール・更新する方式に切り替えたい場合は、サイトの composer.json ファイルを置き換える必要があります。
古い composer.json を示す一般的な Composer エラーメッセージ:
Nothing to install or update
Installation request for drupal/drupal No version set (parsed as 1.0.0)
don't install drupal/core 8.x.x | remove drupal/drupal
Your requirements could not be resolved to an installable set of packages.
composer.lock と vendor/ ディレクトリを削除すれば一時的に問題が解決するかもしれませんが、推奨される Composer プロジェクトテンプレートを使うようにサイトを変換する方が、より堅牢な長期的解決策です。参照:Composer を使ってファイルをダウンロード・更新する。
gocomposer や composerize-drupal のような自動化ツールは、この移行を支援することを目的としていますが、手動での変換は分かりやすく、多くの場合そちらの方が好ましいです。
簡単なまとめ
- 新しい Composer ベースの Drupal プロジェクトを作成する。
- すべてのカスタムモジュール、テーマ、ファイル、構成をコピーする。
- 設定と環境構成を移行する。
- すべてのコントリビュートモジュールを Composer で require する。
- データベース更新を実行し、キャッシュをクリアする(
drush updb; drush cr)。 - Web サーバーを新しい
web/ディレクトリを指すように更新する。
完全な手順
始める前に
レガシーサイトを変換すると、Drupal コアや contrib モジュールが最新バージョンにアップグレードされることがあります。特に厳密にバージョン管理されたプロジェクトでは、これが自分の環境に適切かどうかを検討してください。composer require vendor/package:version を使って特定のバージョンに固定できます。
1. 新しい Composer プロジェクトを作成する
cd /var/www/sites
composer create-project drupal/recommended-project:~8.8.0 new_html --stability dev --no-interaction
これにより、推奨されるディレクトリレイアウトが作成されます:ルートにコアの Composer ファイル、ウェブサイト本体は web/ に配置されます。
2. ファイルをコピーする
- カスタムモジュール:
web/modules/custom/ - カスタムテーマ:
web/themes/custom/ - ライブラリ:
web/libraries/ - ユーザーファイル:
web/sites/default/files/
files/ から php/、css/、js/、styles/ などの一時フォルダーを削除します。
3. settings.php を移行する
データベースの認証情報、$settings['hash_salt']、trusted host パターン、その他のカスタム設定をコピーします。$config_directories['sync'] のパスが存在し、書き込み可能であることを確認してください。
4. Contrib モジュールを追加する
composer require drupal/module_name
開発用モジュールには --dev を使います:
composer require --dev drupal/devel
5. 更新を実行する
drush updb
drush cr
6. Web サーバーを再設定する
サーバーを web/ ディレクトリを指すように更新します。必要に応じて PHP-FPM プールの設定を調整し、サーバーをリロードします。
7. トラブルシューティング
7.1 $settings['hash_salt'] の欠落
drush php-eval 'echo \Drupal\Component\Utility\Crypt::randomBytesBase64(55) . "\n"'
7.2 Composer の警告
composer.lock と vendor/ をクリアしてから再試行します。
7.3 エラーレポート
移行後、admin/reports/status で構成エラーや欠落しているモジュールを確認します。