Drupal 8へのアップグレードのためのサイトの準備
Drupal 6またはDrupal 7サイトをDrupal 8にアップグレードする前に、プロセスがスムーズで望ましい結果が得られることを確認するためにいくつかの手順を実行することをお勧めします。
以前のDrupalコアのメジャーアップグレードとは異なり、Drupal 8のアップグレードプロセスはソースサイトをその場でアップグレードしません。代わりに、設定とコンテンツのオブジェクトがソースサイトからクリーンなDrupal 8サイトに移行されます。プロセスの概要と主な違いについては、Drupal 6または7からDrupal 8へのアップグレードページを参照してください。
アップグレードはソースサイトを変更しませんが、稼働中のサイトで実行しないことをお勧めします。ライブサイトのバックアップを使用して、データベースの一貫した状態を確保し(移行中のデータベースへの書き込みなし)、ライブサイトのパフォーマンスへの影響を防ぐことをお勧めします。
ソースサイトのインベントリ
Drupal 8へのアップグレードを開始する前に、既存のDrupal 6またはDrupal 7サイトがどのように構築されているかを理解することが重要です。
ソースのDrupal 6/7サイトで有効になっているコアモジュールと追加モジュールを特定します。これを行うには、モジュール管理ページ(「管理」>「サイト構築」>「モジュール」)でリストされたモジュールを確認するか、admin/reports/updatesの「利用可能な更新」ページを使用できます。
ソースサイトで有効になっているモジュールの完全なリストを書き留め、アップグレードの計画のチェックリストとして使用します。各モジュールについて、次の質問に答えます:
- Drupal 8でこのモジュールはまだ必要ですか?
- このモジュールはDrupal 8コアに移行されましたか?たとえば、Viewsは現在Drupal 8コアの一部です。
- このモジュールにDrupal 8バージョンはありますか?ない場合、それでも必要ですか?同じ機能を実現するために使用できる他のモジュールはありますか?
- Drupal 6/7のモジュールはDrupal 8のモジュールに1対1でマッピングされるとは限らないことに注意してください。たとえば、Drupal 6と7のBlockモジュールは、Drupal 8ではBlockとCustom Blockモジュールに分割されました。
Drupal 8のWebアップグレードインターフェースは、どのモジュールを自動的にアップグレードできるか、どのモジュールをアップグレードできないかを示します。この分析の詳細については、Webブラウザを使用したアップグレードページを参照してください。また、外部サービスを使用してアップグレードの時間見積もりを提供するupgrade checkモジュールを試すこともできます。
既知の問題ページを確認する
Drupal 6/7からDrupal 8へのアップグレードパスはまだ実験的であり、一部のコアモジュールには完全なアップグレードパスがない場合があります。アップグレードの準備をするときは、既知の問題ページを読むことをお勧めします。
Drupal 6/7サイトをコアモジュールと追加モジュールの最新バージョンに更新する
アップグレードプロセスでは、最初に古いサイトを最新のマイナーバージョンに更新することを前提としています。たとえば、サイトがDrupal 6.35コアで実行されている場合は、最初に6.38に更新する必要があります。
追加モジュールから設定またはコンテンツを自動的に移行する予定がある場合は、それらの最新バージョンを使用する必要があります。
利用可能な更新があるかどうかを確認するには、Drupal 6/7サイトのadmin/reports/updatesの「利用可能な更新」ページを使用します。
Drupal 6/7からDrupal 8への移行の前提条件
- 「Migrate」と「Migrate Drupal」のコアモジュールが有効な新しいDrupal 8インストール。ブラウザのユーザーインターフェースを使用してDrupal 8に移行する場合は、「Migrate Drupal UI」コアモジュールも有効にする必要があります
- Drupal 6およびDrupal 7の国際化モジュール(i18n)からのすべての翻訳移行には、Drupal 8サイトに多言語Migrate Drupalモジュール(migrate_drupal_multilingual)がインストールされている必要があります
- 新しいDrupal 8サイトをホストしているホストからDrupal 6または7のデータベースにアクセスできること。
- ソースサイトのファイルへのアクセス。
- パブリックファイルのみが使用される場合、それらはサイトアドレス経由でアクセスできます。
- プライベートファイルを移行する必要がある場合、ファイルディレクトリは新しいDrupal 8サイトから直接アクセス可能である必要があり、アップグレードを実行する前にsettings.phpでDrupal 8のfile_private_pathパスを設定する必要があります。
- Drushを使用してDrupal 8に移行する場合、Drush 8またはDrush 9と3つの追加モジュールも必要です。
- Drushのインストール手順は上記のページに記載されています。
- Migrate Toolsをインストールします
- Migrate Upgradeをインストールします
- Migrate Plusをインストールします
- 上記のモジュールの詳細については、アップグレードモジュールのリストを参照してください。
- 重要:モジュールのバージョンと使用するDrupal 8コアバージョンの互換性に特に注意してください。上記の3つのモジュールのページには、どのバージョンを使用すべきか明確に記載されています。
Drupal 8で必要なコアモジュールと追加モジュールを有効にする
移行プロセスは、ターゲットのDrupal 8サイトにモジュールを自動的にインストールしません。ソースサイトとターゲットサイトの両方にインストールされているモジュールに関連する移行のみが実行されます。したがって、最初に、ソースサイトから設定とコンテンツを移行したいDrupal 8サイトで、すべてのコアモジュールと追加モジュールを有効にする必要があります。
いくつかの例:
- ソースのDrupal 7サイトでAddressfieldモジュールが有効で、住所データを移行したい場合は、アップグレードプロセスを開始する前にDrupal 8サイトでAddressモジュールを有効にする必要があります。これは、Drupal 7とDrupal 8の間でモジュールが1対1でマッピングされない良い例です。ただし、D8のAddressモジュールは、Drupal 7のアドレスフィールドからデータを移行するために必要な移行プラグインを提供します。
- ソースサイトでDrupal 7のコアフォーラムモジュールが有効になっている場合、アップグレードプロセスを開始する前にDrupal 8サイトでコアフォーラムモジュールを有効にする必要があります。
Drupal 8サイトを設定しないでください
アップグレードプロセスがDrupal 8サイトの設定を上書きすることを覚えておいてください。そのため、アップグレードプロセスが完了するまでDrupal 8サイトの設定を実行しないでください。つまり、このアップグレードを実行する前に、すべてのコンテンツタイプとフィールドを手動で作成する必要はありません。Migrateモジュールが移行プロセスの一部として作成します。実際、最も一般的な方法は、最小インストールプロファイルを使用してDrupal 8をインストールすることです。標準プロファイルには、使用したくない独自の設定が含まれているためです。これは、Migrateを実行する前にすべてのコンテンツタイプとフィールドを準備する必要があったDrupal 7以前でのMigrateの動作方法とは異なります。
Drupal 8サイトでコンテンツを作成しないでください
アップグレードプロセスは、ソースサイトの一意のIDを保持します。たとえば、ユーザーアカウントがソースサイトで一意のID 2を持っていた場合(つまり、相対URI /user/2にあった場合)、アップグレード後、同じユーザーアカウントはDrupal 8サイトの/user/2にあります。デフォルトの管理者アカウントとは別にDrupal 8サイトでユーザーアカウントを作成すると、ユーザーID 2が割り当てられます。その場合、アップグレードプロセスを実行すると、ソースサイトのユーザーID 2のアカウントがそれを上書きします。これは、ユーザーアカウント、タクソノミー用語、ノードコンテンツ、およびソースサイトの数値IDを持つほぼすべての種類のコンテンツに適用されます。
データの損失を避けるため、ソースのコンテンツがすべて完全にインポートされるまで、Drupal 8サイトで何も手動で作成しないでください。
アップグレードの実行
移行を実行するには2つのオプションがあります:
- ブラウザのユーザーインターフェースを使用する。これはより簡単な方法で、Drupal 8サイトのユーザーインターフェースを通じて実行できます。ただし、移行の制御は少なくなります。
- Drushを使用する。これはより堅牢で高速で、選択的な移行が可能ですが、追加のモジュールが必要で、コマンドラインから実行されます。