Drupal 7 到 8 遷移 - 解決遷移挑戰的操作指南(帶建議)

已發表: 2020-02-27

您是否考慮過 Drupal 7 到 8 的遷移? 你還在用 Drupal 7(或 6)運行你的網站嗎? 是時候遷移到 Drupal 8 了!

如果您仍在使用 Drupal 7(或 6),我們已經寫了大量關於為什麼應該遷移到 Drupal 8 的文章。 儘管如此,我們遷移到 Drupal 8 的最喜歡(也是重要的)原因之一是…… Drupal 9 即將到來! 如果您想享受 Drupal 9 的好處,建議您先將 Drupal 7 遷移到 Drupal 8。 我們可以爭辯說,您現在應該轉向 Drupal 8,因為一旦 Drupal 9 在這裡(2020 年 6 月)和 Drupal 7 的 EOL(2021 年 11 月),沒有足夠的時間。 但是您可以聲稱您可以選擇 LTS(長期支持)來代替! 很公平。 除了花費更多的錢聘請 LTS 服務提供商之外,您還失去了 Drupal 8 必須提供的豐富好處。 有些事情可能看起來很困難,但對於更強大和更簡單的未來來說卻是必要的。

一旦在 Drupal 8 上,您就不必再“遷移”——只需從 Drupal 8.9 到 9,然後從 9.9 到 10 等等的簡單“升級”就可以了。 Drupal 7 到 Drupal 8 的遷移並不總是容易和直接的; 我同意。 遵循流程會有所幫助,但在遷移過程中您可能仍會面臨一些挑戰,尤其是當您的 Drupal 7 網站的內容模型相當複雜時。 讓我們帶您逐步從 Drupal 7 遷移到 Drupal 8,了解您可能面臨的挑戰。 以及我們關於如何克服它們的建議。

Drupal 8 Migrate – 假設和準備

做好準備是成功的一半”,西班牙小說家米格爾·德·塞萬提斯說。 Drupal 8 遷移可能會變得複雜,但如果您在計劃遷移上花費了足夠多的時間,那麼挑戰不會讓您感到驚訝。 Drupal 8 採用了許多現代開發標準,如 Symfony、Twig、PHP 7 等,這導致了這次完全重建,但它也需要更強大、健壯和靈活的數字體驗。 列出了一些在開始 Drupal 7 到 8 遷移之前應該記住的先決條件——

  • 將您的 Drupal 7 網站更新到可用的最新版本。 這將有助於更清晰地自動升級某些具有直接 Drupal 8 升級路徑的模塊。
  • 確保您可以訪問 Drupal 7 網站的數據庫和文件(公共和私有)。
  • 創建 Drupal 7 網站的備份並將此備份用於 Drupal 8 遷移。 雖然遷移本身不會對源進行任何修改,但不建議遷移實時功能網站。
  • 從這裡下載 Drupal 8 的全新安裝,並啟用我們上面討論的核心 Migrate 模塊。 請記住,它必須是新鮮的! 執行 Drupal 8 升級時,所做的任何配置或創建的內容都將被覆蓋。
  • 從 Drupal 7 到 Drupal 8 沒有直接的升級路徑(與之前的版本升級不同)。 熟悉 Drupal 8 的遷移系統。 核心的三個模塊——Drupal 8 Migrate 模塊、 Drupal 8 Migrate Drupal模塊和Drupal 8 Migrate Drupal UI模塊。
  • 做出您的遷移選擇——您是使用 Drush(它為您提供精細控制)還是使用瀏覽器用戶界面(更容易但控制更少)?
  • 知道你的來源。 Drupal 內容遷移系統的靈活性允許從舊版本的 Drupal 和各種其他來源(如 CSV、XML、JSON、MYSQL 等)中提取和加載內容。
  • 為了順利遷移 Drupal 內容,請執行徹底的內容審核以確定您需要遷移的內容。 丟棄未使用和不相關的內容,以避免花費時間和精力遷移它們。

Drupal 7 到 8 遷移過程(循序漸進)

  • 觀察和計劃

順利的 Drupal 內容遷移要求您首先確定現有站點的內容類型和內容結構,並記錄觀察結果。 這包括內容類型、字段類型、塊、分類法等。根據這些觀察準備關於您需要遷移的內容和需要合併的內容的計劃。 分析視圖和其他站點配置並將它們編目,以便在 Drupal 8 中更容易複製它們。

  • 創建 Drupal 7 網站的模塊清單

使用此清單,您應該能夠確定您仍然需要的模塊,或者該模塊是否有 Drupal 8 版本,或者該模塊現在是否已移至 Drupal 8 Core(如媒體模塊)。 並非所有 Drupal 7 模塊都可以自動遷移到 Drupal 8。某些 Drupal 7 模塊可能已將它們的功能合併到單個 Drupal 8 模塊中。 並且某些 Drupal 7 模塊可能將它們的功能分成兩個或多個 Drupal 8 模塊。 最好分析此類情況以確保沒有數據丟失!

專家建議– 使用像 Drupal Migrate UI 這樣的模塊來識別 Drupal 7 模塊及其對應的 Drupal 8 模塊(如果可用或不可用)。

drupal 7 到 8 遷移

專業提示- 沒有適用於 Drupal 8 的模塊版本? 例如,Drupal 7 中的 ImageField 模塊沒有對應的 D8 模塊。 我們可能需要在 Drupal 8 中找到最合適的替代方案。當然,我們有 Drupal 8 核心媒體模塊。 但是,我們將不得不開發自定義腳本來遷移圖像數據。 遷移圖像數據。

專家推薦——如果您剛剛繼承了一個 D7 網站並且不知道對模塊進行的自定義或者如果您自己進行了自定義並需要找到它們,我們建議您使用 Hacked! 模塊。 該模塊將查看站點上可用模塊的列表以及對每個模塊所做的更改/自定義。

  • 複製和構建
    複製 D8 實例中所需的內容類型、分類法和所有實體。 創建和復制內容後,必須手動構建視圖。

專家建議——

  1. Drupal 7 中的模板文件 (.tpl) 應該使用 twig 文件重寫,它是 Symphony 2 框架的一部分。
  2. 確保按照 Symphony 標準重寫自定義模塊。
  • 實施 Drupal 7 到 8 遷移

最期待和最重要的一步已經到來。 如前所述,有兩種方法可以將 Drupal 7 數據遷移到 Drupal 8 -

  1. 使用 Drupal UI 運行遷移
  2. 使用 Drush 運行遷移

推薦後者,因為它效率更高,可以合併到 shell 腳本中,並且錯誤信息更清晰。

Drupal UI 方法

利用 Migrate UI Drupal 8 模塊,您可以從訪問 Drupal 8 網站的/upgrade路徑開始。 Drupal 8 升級審查頁面將向您顯示 Drupal 7 站點中可以和不能自動遷移到 Drupal 8 的模塊列表。對於在另一個 D8 模塊中具有其功能但不完全相同的模塊(如D7 現在是 D8 中的地址模塊),您需要安裝並啟用相應的 D8 模塊並重新啟動 Drupal 7 到 8 遷移過程。 根據內容目錄和提取的數據,您需要構建遷移腳本,在其中將 Drupal 7 的內容類型屬性映射到 Drupal 8 的新構建的內容類型屬性。接下來,您可以繼續從數據源。

沖刷法

你習慣使用終端嗎? 如果是這樣,您應該為 Drupal 7 到 8 遷移選擇 Drush 方法。 它為數據遷移過程提供了一組命令,具有更好的狀態消息。 如果您正在尋找使用 Drush 命令的分步過程遷移,請查看本教程。 以前從未使用過 Drush? 本指南將通過一系列有用的遷移命令幫助您了解 Drush 的基礎知識。

你現在可能會遇到一些衝突。 確保您已檢查 Drupal 中的已知問題。 org 以及如何修復它們。 修復後,您現在可以運行遷移過程,為所採取的操作提供連續的日誌/反饋。 最後,檢查日誌是否有任何錯誤,修復它們,你就可以開始了!

專家建議——等等! 創建內容後,永遠不要忽視 SEO/頁面瀏覽量。 我們需要內容具有相同的 URL 路徑。 不要忘記從舊的 Drupal 7 站點遷移 URL 別名、內容的元標記信息。

  • 測試

在從 Drupal 7 遷移到 Drupal 8 期間,您很少會遇到零問題。 遷移完成後,絕對有必要對新導入的配置和內容進行回歸測試,以確定任何潛在的錯誤或問題。

挑戰和(更專業的)建議

  • 許多 Drupal 7 貢獻的模塊在 Drupal 8 中有更好的版本,有些已被棄用。 例如,用於在 Drupal 7 中對字段進行分組的字段收集模塊即將被棄用。 該模塊的功能已添加到 Drupal 8 中的段落模塊和實體參考修訂模塊中。Drupal 8 段落模塊為內容編輯/作者提供了極大的靈活性,以創建無縫的表單和結構。 如果您需要遷移 Field Collection 模塊並將其映射到 Paragraphs 模塊 (D8),您將需要編寫自定義插件將 Field Collection 字段之間的內容映射到 Paragraph 字段。 或者,如果您仍然希望在 Drupal 8 中繼續遷移 Field Collection 模塊,則可以通過可用的 Core 遷移插件來處理此字段映射。
  • 您是否使用面板來創建您的登錄頁面,例如主頁、儀表板等? 即使你只需要在主頁中放置一個塊? 佈局生成器來救援! Drupal 8 中的佈局生成器使內容編輯器可以更輕鬆地自定義登錄頁面。 讓我們充分利用 Drupal 8 的功能。要從面板遷移到佈局構建器,您需要編寫一些自定義遷移插件。
  • 在遷移用戶時,我們還必須維護密碼,以便用戶不必在新站點上重新創建密碼。 密碼是散列內容。 因此,您必須找到源站點中使用的哈希類型算法。 下一個。 編寫一個過程,使用相同的算法使用重新散列的密碼驗證遷移的密碼。
  • 運行 Drupal 7 到 8 遷移時,您可能會耗盡系統資源,這可能會導致遷移停止。 多虧了高水位標記,您可以再次運行遷移,它應該從停止的地方開始。
  • 在配置管理接管 Drupal 8 中的所有功能和更多功能後,Drupal 7 中廣泛使用的功能模塊現在幾乎已經過時了。雖然功能模塊在 Drupal 8 中也可用,但強烈建議利用 Drupal 8 的配置管理系統。 它不僅使用起來更簡單,而且易於在環境之間導出,它使用 YAML 文件格式而不是 PHP——這是一種更具可讀性和正確的數據格式。
  • 如果您有一個多語言 Drupal 7(或 6)網站,您可以利用遷移 Drupal 多語言模塊。 儘管 Migrate Drupal 多語言模塊仍處於試驗階段,但它是所有多語言 Drupal 站點的必備模塊。
  • 面對 Drupal 7 到 Drupal 8 遷移的問題? 有幾種方法可以報告失敗並獲得幫助 -

- Drupal 8 升級問題隊列

- 如果您發現核心/貢獻模塊的錯誤或異常,則模塊問題隊列

- Freenode 上的 #drupal-migrate IRC 頻道

- Drupal Slack 上的#migration 頻道

- 聘請 Drupal 專家