問題描述

我正在尋找最好和最安全的方式來開發本地的多個子站點使用多站點,並將它們移動到生產環境,當他們準備好了。

我已經使用現在已經存在的第一個子站點遷移了完整的多站點安裝。我寧願在本地伺服器上開發其他站點,所以我將生產伺服器單獨放置,但顯然我無法再進行完全遷移。

我尋找一個解決方案,但我發現的一切都是關於將單個站點移動到多個站點,或者相反,不要將子站點從多站點移動到多站點。

我想保留所有內容:設定,小工具等。

最佳解決方案

這可能有點乏味,但希望這有助於。從一個環境到下一個環境的變化越少,這個過程就越不痛苦。特別是,如果域,站點 id,檔案路徑保持不變,這個過程就不那麼痛苦了。

這篇文章假設了一些資料庫管理的知識。這不是一個完整的步驟,因為您應該搜尋論壇,並可能建立一個特定於您遇到問題的步驟的執行緒,例如,如果您需要幫助匯出資料庫表。

最重要的事情是備份您的本地開發站點和新位置的整個資料庫和檔案,以防萬一齣現問題。期待有問題。如果沒有,會驚喜。

移動主題檔案應該很簡單。將您的主題檔案上傳到 wp-content /themes 目錄,並照常啟用它。我假設這是所有部落格都可以訪問的共享主題。

將外掛檔案上傳到新位置的 wp-content /外掛。不要啟用它們

請注意,您遷移的部落格的任何內容將位於 wp-content/blogs.dir/2/files 的目錄中,其中 2 是站點 ID 。如果可以在新位置維護此站點 ID,則應有助於在遷移到新位置後儘量減少資料庫中的衝突。否則,您將不得不更新資料庫以反映新的路徑。

您將需要匯出與您嘗試遷移的部落格相關的多站點表,並將其匯入到新位置。您將必須編輯儲存與您正在遷移的部落格相關的資料的表。確保這些表的字首在新位置相同。

例如,您的部落格的 wp_blogs 表包含允許 WordPress 多站點識別和使用您的部落格的部落格 ID,站點 ID,域和路徑。編輯這些不再正確的任何反映新位置的內容,但請嘗試執行此操作之前閱讀本文的其餘部分。

參見 Multisite Table Overview

要遷移您的 WordPress 和外掛設定,要轉移部落格,您需要在本地停用所有外掛,然後匯出您的 site specific tables(codex 參考),包括那些外掛。將這些表匯入新位置的資料庫。

確保新位置使用與匯入的表相同的資料庫字首。該字首將包含您的部落格的站點 ID,看起來像 wp_2_options, wp_2_posts, wp_2_postmeta 。見 Exploring WordPress Multisite by Lisa Sabin-Wilson

我假設你知道如何透過 phpmyAdmin 匯入/匯出,或者使用終端中的 mysqldump 命令。這超出了這篇文章的範圍,但這裡是一個應該有幫助的匯出示例。

How do you mysqldump specific table(s)?(語法編輯稍微更清楚):

If you are dumping tables t1, t2, and t3 from database named mydb

mysqldump -u <username> -p <password> mydb t1 t2 t3 > mydb_tables.sql

在新站點上啟動外掛之前,請先在 admin cp 中進行永久連結設定,並儲存設定,將資料庫檔案更新為新的站點 URL 。啟用您的外掛,看是否有任何問題。

您可能遇到的一個問題是您的表中的資料序列化。

「[…] 對舊域名或位置的引用將保留在資料庫中,這可能會導致連結或主題顯示問題。

如果您在整個資料庫中進行搜尋和替換以更改 URL,則可能會導致資料序列化問題,因為某些主題和小工具儲存的 URL 的長度標記為 「When Your Domain Name or URLs Change

請記住,資料序列化可能會導致與您的外掛相關的資料庫表中的衝突。不要對儲存在資料庫中的 URL 執行手動搜尋和替換,而是使用之前的鱈魚連結中推薦的 database search and replace script 。如果資料庫中只有少數序列化例項,您可以透過 phpMyAdmin 手動進行編輯,也可以透過自己的首選方式來管理資料庫。

您可能遇到的另一個問題是,需要更新儲存在資料庫表中的任何不正確的檔案路徑以反映新位置。這可能是由外掛使用的媒體目錄或目錄,這取決於外掛的設計。同樣,您將需要使用搜尋和替換指令碼來確保在更新檔案路徑時沒有序列化衝突。或者,您可以透過表格手動更新它們。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。