Drupal 7から8への移行-移行の課題に対処するハウツーガイド(推奨事項付き)

公開: 2020-02-27

Drupal 7から8への移行を考えていますか? あなたはまだDrupal7(または6)であなたのウェブサイトを運営していますか? Drupal 8に移行する時が来ました!

Drupal 7(または6)をまだ使用している場合に、Drupal8に移行する必要がある理由について詳しく説明しました。 ただし、Drupal 8に移行する最も好きな(そして重要な)理由の1つは、…Drupal 9が登場することです! また、Drupal 9のメリットを享受したい場合は、最初にDrupal7をDrupal8に移行することをお勧めします。 Drupal 9がここに来て(2020年6月)、Drupal 7のEOL(2021年11月)になると十分な時間がないので、今すぐDrupal8に移動する必要があると主張することができます。 しかし、代わりにLTS(長期サポート)を選ぶことができると主張することができます! けっこうだ。 LTSサービスプロバイダーとの契約により多くのお金を費やすことを除けば、Drupal8が提供しなければならない豊富なメリットを失うことにもなります。 難しいように見えることもありますが、より強く、よりシンプルな未来のために必要です。

Drupal 8に入ると、もう「移行」する必要はありません。Drupal8.9から9、次に9.9から10などへの単純な「アップグレード」だけで十分です。 Drupal7からDrupal8への移行は、必ずしも簡単で簡単なわけではありません。 同意します。 プロセスに従うことは役に立ちますが、特にDrupal 7 Webサイトのコンテンツモデルがかなり複雑な場合は、移行中にいくつかの課題に直面する可能性があります。 Drupal7からDrupal8への段階的な移行について、直面する可能性のある課題について説明します。 そして、それらを克服する方法に関する私たちの推奨事項。

Drupal 8の移行–前提条件と準備

準備することは勝利の半分です」とスペインの小説家ミゲル・デ・セルバンテスは言いました。 Drupal 8の移行は複雑になる可能性がありますが、移行の計画に十分な時間を費やしていれば、課題に驚かされることはありません。 Drupal 8がSymfony、Twig、PHP 7などの多くの最新の開発標準を採用したことで、この完全な再構築が実現しましたが、より強力で堅牢かつ柔軟なデジタルエクスペリエンスも求められています。 Drupal 7から8への移行を開始する前に覚えておく必要のあるいくつかの前提条件がリストされています–

  • Drupal 7Webサイトを利用可能な最新バージョンに更新します。 これは、直接Drupal8アップグレードパスを持ついくつかのモジュールのよりクリーンな自動アップグレードに役立ちます。
  • Drupal 7 Webサイトのデータベースとファイル(パブリックおよびプライベート)にアクセスできることを確認してください。
  • Drupal 7 Webサイトのバックアップを作成し、このバックアップをDrupal8の移行に使用します。 移行自体はソースに変更を加えませんが、ライブ機能Webサイトを移行することはお勧めしません。
  • ここからDrupal8の新規インストールをダウンロードし、上記で説明したコアMigrateモジュールを有効にします。 そして覚えておいてください、それは新鮮でなければなりません! Drupal 8のアップグレードが実行されると、作成された構成または作成されたコンテンツは上書きされます。
  • Drupal7からDrupal8への直接のアップグレードパスはありません(以前のバージョンのアップグレードとは異なります)。 Drupal8の移行システムをよく理解してください。 コアにある3つのモジュール– Drupal 8 Migrateモジュール、 Drupal 8 Migrate Drupalモジュール、およびDrupal 8 Migrate DrupalUIモジュール。
  • 移行を選択します– Drush(きめ細かい制御が可能)を使用しますか、それともブラウザーのユーザーインターフェイス(より簡単ですが制御が少ない)を使用しますか?
  • あなたの情報源を知ってください。 Drupalコンテンツ移行システムの柔軟性により、古いバージョンのDrupalや、CSV、XML、JSON、MYSQLなどの他のさまざまなソースからコンテンツを抽出してロードできます。
  • Drupalコンテンツをスムーズに移行するには、徹底的なコンテンツ監査を実行して、移行する必要のあるコンテンツを特定します。 未使用で無関係なコンテンツを破棄して、移行に時間と労力を費やさないようにします。

Drupal 7から8への移行プロセス(ステップバイステップ)

  • 観察して計画する

Drupalコンテンツをスムーズに移行するには、最初に既存のサイトのコンテンツタイプとコンテンツ構造を特定し、観察結果を文書化する必要があります。 これには、コンテンツタイプ、フィールドタイプ、ブロック、分類法などが含まれます。これらの観察結果に基づいて、移行する必要があるものとマージする必要があるものに関する計画を作成します。 ビューやその他のサイト構成を分析してカタログ化し、Drupal8で簡単に複製できるようにします。

  • Drupal 7Webサイトのモジュールチェックリストを作成します

このチェックリストを使用すると、まだ必要なモジュール、そのモジュールのDrupal 8バージョンがあるかどうか、またはモジュールがDrupal 8コア(メディアモジュールなど)に移動したかどうかを特定できるはずです。 すべてのDrupal7モジュールを自動的にDrupal8に移行できるわけではありません。一部のDrupal7モジュールは、それらの機能を単一のDrupal8モジュールに統合している場合があります。 また、一部のDrupal 7モジュールでは、機能が2つ以上のDrupal8モジュールに分割されている場合があります。 このようなケースを分析して、データの損失がないことを確認することをお勧めします。

専門家の推奨事項– Drupal Migrate UIなどのモジュールを使用して、Drupal7モジュールとそれに対応するDrupal8モジュール(使用可能な場合)を識別します。

drupal-7から8への移行

プロのヒント-Drupal8で利用できるモジュールバージョンはありませんか? たとえば、Drupal 7のImageFieldモジュールには、対応するD8モジュールがありません。 Drupal 8で、これに最適な代替手段を見つける必要があるかもしれません。もちろん、Drupal8コアメディアモジュールがあります。 ただし、画像データを移行するためのカスタムスクリプトを開発する必要があります。 画像データを移行します。

専門家の推奨事項– D7 Webサイトを継承したばかりで、モジュールに加えられたカスタマイズについてわからない場合、または自分でカスタマイズを行ってそれらを見つける必要がある場合は、Hacked!を使用することをお勧めします。 モジュール。 このモジュールでは、サイトで利用可能なモジュールのリストと、各モジュールに対して行われた変更/カスタマイズについて説明します。

  • 複製して構築する
    D8インスタンスで必要なコンテンツタイプ、分類法、およびすべてのエンティティを複製します。 コンテンツを作成して複製したら、ビューを手動で作成する必要があります。

専門家の推奨事項–

  1. Drupal 7のテンプレートファイル(.tpl)は、symphony2フレームワークの一部であるtwigファイルを使用して書き直す必要があります。
  2. シンフォニーの標準に準拠したカスタムモジュールを書き直してください。
  • Drupal7から8への移行の実装

最も待望された重要なステップが到着しました。 前に説明したように、Drupal7データをDrupal8に移行する方法は2つあります-

  1. DrupalUIを使用して移行を実行する
  2. Drushを使用して移行を実行する

後者の方が効率的で、シェルスクリプトに組み込むことができ、エラーメッセージがより明確になるため、後者をお勧めします。

DrupalUIメソッド

Migrate UI Drupal 8モジュールを利用して、Drupal 8Webサイトの/ upgradeパスにアクセスすることから始めることができます。 Drupal 8アップグレードレビューページには、Drupal 8に自動的に移行できる、またはできないDrupal 7サイトのモジュールのリストが表示されます。別のD8モジュールで機能を持っているが、まったく同じではないモジュールの場合( D7はD8のアドレスモジュールになりました)、対応するD8モジュールをインストールして有効にし、Drupal7から8への移行プロセスを再開する必要があります。 コンテンツのカタログと抽出されたデータに基づいて、移行スクリプトを作成する必要があります。移行スクリプトでは、Drupal7のコンテンツタイプ属性をDrupal8の新しく作成されたコンテンツタイプ属性にマップします。次に、情報源。

ダッシュ法

ターミナルを使い慣れていますか? その場合、Drupal7から8への移行にはDrushメソッドを選択する必要があります。 データ移行プロセス用の一連のコマンドと、より優れたステータスメッセージを提供します。 Drushコマンドを使用した段階的な手順の移行を探している場合は、このチュートリアルを確認してください。 これまでDrushを使用したことはありませんか? このガイドは、移行に役立つコマンドのリストとともに、Drushの基本を理解するのに役立ちます。

あなたは今、いくつかの衝突に遭遇するかもしれません。 Drupalで既知の問題をチェックしたことを確認してください。 orgとそれらを修正する方法。 修正されると、実行されたアクションの継続的なログ/フィードバックを提供する移行プロセスを実行できるようになります。 最後に、ログにエラーがないか確認し、修正してください。

専門家の推奨–待ってください! コンテンツを作成したら、SEO /ページビューを見落とさないでください。 同じURLパスを持つコンテンツが必要です。 古いDrupal7サイトからのコンテンツのURLエイリアス、メタタグ情報の移行に注意することを忘れないでください。

  • テスト

Drupal7からDrupal8への移行中に問題が発生しないことは非常にまれです。 移行が完了したら、潜在的なバグや問題を特定するために、新たにインポートされた構成とコンテンツの回帰テストが絶対に必要です。

課題と(より専門的な)推奨事項

  • Drupal 7で提供されたモジュールの多くは、Drupal 8でより優れたバージョンを備えており、一部は非推奨になっています。 たとえば、Drupal7でフィールドをグループ化するために使用されるフィールドコレクションモジュールは間もなく非推奨になります。 このモジュールの機能は、Drupal 8のParagraphsモジュールとEntityReference Revisionモジュールに追加されました。Drupal8Paragraphsモジュールは、コンテンツの編集者/作成者にシームレスなフォームと構造を作成するための非常に高い柔軟性を提供します。 フィールドコレクションモジュールを移行して段落モジュール(D8)にマップする必要がある場合は、フィールドコレクションフィールド間のコンテンツを段落フィールドにマップするカスタムプラグインを作成する必要があります。 または、Drupal 8でもフィールドコレクションモジュールの移行を継続したい場合は、このフィールドマッピングを利用可能なコア移行プラグインで処理できます。
  • ホームページやダッシュボードなどのランディングページを作成するためにパネルを使用していますか? ホームページにブロックを配置するだけでよい場合でも? レイアウトビルダーが救いの手を差し伸べます! Drupal 8のレイアウトビルダーを使用すると、コンテンツエディターがランディングページを簡単にカスタマイズできます。 Drupal 8の機能を最大限に活用しましょう。PanelsからLayoutBuilderに移行するには、いくつかのカスタム移行プラグインを作成する必要があります。
  • ユーザーの移行中は、ユーザーが新しいサイトでパスワードを再作成する必要がないように、パスワードも維持する必要があります。 パスワードはハッシュ化されたコンテンツです。 したがって、ソースサイトで使用されているハッシュタイプのアルゴリズムを見つける必要があります。 次。 同じアルゴリズムを使用して、移行されたパスワードを再ハッシュされたパスワードで検証するプロセスを記述します。
  • Drupal 7から8への移行を実行すると、システムリソースが使い果たされ、移行が停止する可能性があります。 最高水準点のおかげで、移行を再度実行でき、中断したところから再開する必要があります。
  • Drupal 7で広く使用されている機能モジュールは、構成管理がDrupal 8のすべての機能機能などを引き継いだ後、ほとんど廃止されました。機能モジュールはDrupal 8でも使用できますが、Drupal8の構成を活用することを強くお勧めします。マネジメントシステム。 作業が簡単であるだけでなく、環境間でのエクスポートも簡単です。より読みやすく適切なデータ形式であるPHPの代わりにYAMLファイル形式を使用します。
  • 多言語のDrupal7(または6)Webサイトをお持ちの場合は、Migrate DrupalMultilingualモジュールを活用できます。 Migrate Drupal多言語モジュールはまだ実験段階ですが、すべての多言語Drupalサイトに必須のモジュールです。
  • Drupal7からDrupal8への移行で問題に直面していませんか? 失敗を報告して助けを得るにはいくつかの方法があります-

-Drupal8アップグレード発行キュー

-コア/コントリビュートモジュールにバグまたは例外が見つかった場合のモジュール発行キュー

-Freenodeの#drupal-migrateIRCチャネル

-DrupalSlackの#migrationチャネル

-Drupalエキスパートを雇う