掌握遷移——更快、更簡單、更安全地將站點從 A 遷移到 B 的方法
已發表: 2023-04-09遷移可能很棘手! 我們都知道當我們看到一個人失敗時那種沮喪(或極度恐懼)的感覺,但我們也知道當遷移成功時那種如釋重負的感覺。 鑑於遷移的所有復雜性和細微差別,我們如何才能提高成功率並贏回時間來專注於我們真正想做的工作?
無論您是需要將已建立的項目複製到本地計算機,還是需要將少量增量更新部署到生產環境,請跟隨我們了解如何加速、簡化和降低遷移風險。
演講嘉賓:
- WP Engine 高級產品經理 Kevin Hoffman
- WP Engine 高級產品經理 Austin Wendt
會議幻燈片:
成績單:
AUSTIN WENDT: 歡迎大家,感謝大家的加入。 我們很高興有你。 歡迎來到 DE{CODE} 會議。
我叫 Austin Wendt,是 WP Engine 的高級產品經理,致力於構建我們的本地產品。 我的同事 Kevin 和我,你們很快就會在這裡見到他們,今天很高興能與你們討論更智能的構建——特別是在掌握遷移方面。 因此,我們將涵蓋更快、更簡單和更安全的方法,將您的站點從 A 點移動到 B 點,這樣您就可以對這些開發工作流程充滿信心,無論您是將站點帶到本地、安全的開發環境,還是隨著時間的推移,我們準備好推動該網站上線。
在我們深入討論之前,我將介紹一個快速議程。所以我們今天要介紹的是我們將介紹我們在 WP Engine 談論移動代碼時喜歡考慮的三種遷移類型。 我們將定義理想的遷移工作流程,並在本演示過程中向您介紹遷移代碼的不同方法。 我們將介紹導出您現有的站點,並將其降低——導入到本地開發環境中。
我們將討論執行首次部署——所以當您第一次上線您的網站時,它看起來像什麼,以及實現它的幾種方法,然後隨著時間的推移同步這兩個環境。 因此,讓我們深入研究它。
我們想到的三種遷移類型——用戶可以嘗試完成三種主要選項。 第一種是遠程到本地。 因此,如果您已經在 Web 上的某個地方託管了一個站點,並且想將其引入本地(可能是小寫的 l)本地環境,那麼當您可能開始在客戶的現有站點上工作時,它會很有用。 因此,您要么繼承了一個新客戶,要么客戶要求您進行更改並將其帶到安全的地方,以便您可以在低風險環境中解決問題。
當您只是想拉取最新的數據庫更改時也非常有用,這樣您就可以確保您的遠程環境和您的生產環境——或者對不起,開發環境——盡可能緊密地匹配。 第二個是本地到遠程。 所以當你從你的個人機器返回到某處的託管服務器時——你要么是第一次部署一個完整的站點,要么你已經做了一些代碼更改並且你正在推送這些更改,調用準備主題或插件,無論您希望在您的網站上實時反映什麼。
第二個——對不起,第三個是遠程到遠程。 我們今天不會深入探討這個問題,但您將學習的工具可以幫助您實現這一目標。 當您切換託管服務提供商時,您通常會使用它 - 因此從主機 A 移動到主機 B,或者當您在開發、暫存和生產環境之間移動時,無論您的網站在哪里托管。
因此,我將把它交給 Kevin 來自我介紹,並讓我們開始了解理想的遷移流程是什麼樣子的。 凱文,把它拿走。
凱文霍夫曼: 嘿,謝謝,奧斯汀。 所以我叫 Kevin Hoffman,我是 WP Migrate 的產品經理。 今天,我想從我們將要進入的遷移類型的遊戲計劃開始。 因此,無論何時您要從遠程環境進入本地計算機,然後備份到遠程主機,這都是一項艱鉅的任務。 但我們希望您在本演示文稿中留下一個解決方案的遊戲計劃,以便您可以自信地自己進行這些遷移。
首先,我們要從舊主機中刪除現有站點。 因此,這將包括使用 WP Migrate 的完整站點導出。 然後我們將移動到 Local,在那裡我們可以進行本地開發更改,然後將該站點部署回我們的新主機。
因此,為了開始工作,我將使用 WP Migrate 進入完整的站點導出流程。 您可能會問自己,為什麼在這種情況下我們要使用完整的站點導出? 為什麼不直接在兩個環境之間推或拉? 好吧,有幾個原因。
首先,我將使用 WP Migrate 的 Pro 版本,但您也可以使用 WP Migrate Lite,這是我們在 WordPress 插件目錄中的插件的免費版本。
我們在這種情況下使用完整站點導出的四個主要原因首先是因為它是一種單向遷移。 我們想離開遠程主機,而且我們沒有回去的計劃。 也沒有現有的本地安裝可供我們將站點移入。 如果有的話,我們可以使用推送遷移或拉取遷移來將站點下載到本地機器中。 但是因為沒有現有的安裝,拖放導入到本地是最有意義的。
最後,通過進行完整站點導出,我們還可以獲得免費備份。 整個站點將封裝在一個捆綁的 zip 文件中,這是您進行任何未來更改之前的一個很好的備份。
因此,為了讓事情開始,讓我們進入 WP Migrate 看看它是如何工作的。
因此,當您第一次打開 WP Migrate 時,您面前將有六個操作。 因為我們希望盡快將站點從遠程主機中取出,所以我們將選擇導出操作。 打開導出配置文件使我們能夠配置數據庫選項,以及媒體、主題、插件和 WordPress 核心文件。
讓我們繼續,從數據庫配置開始。 現在,如果我願意,我可以從這次遷移中排除某些表或發布類型。 但現在,我想使用默認配置,只是將整個站點從遠程主機中取出。 我確實想在我們要導出的站點上提及標準查找和替換字段,例如 URL 或本地 WordPress 安裝路徑。
現在,如果您正在進行手動遷移,您可能希望移動這些值並編輯它們以匹配目標。 然而,因為我們使用的是 Local,它足夠聰明地為我們處理這個查找和替換,所以我們實際上不必填寫這些可選字段。 我們可以將它們留空並繼續前進。
接下來是自定義查找和替換。 這是在我的 WordPress 數據庫或我的網站內容中搜索任何字符串的能力。 例如,也許我有一個舊公司名稱,我想用我的新公司名稱替換它,我可以通過這些自定義查找和替換字段來實現。 我可以根據需要添加額外的行。
這樣就可以處理數據庫。 讓我們進入媒體上傳。 現在,因為我要移動整個站點,所以我想選擇導出所有媒體上傳。 但我確實想排除一些文件,如日誌、備份和緩存,它們可能會使導出膨脹。
當我們進入主題文件時,我想包括我所有的主題。 這次不是,只是活躍的主題,因為我只關心積極影響現場的主題。
同樣,對於插件——我只想導出我的活動插件。 對於 WordPress 核心文件,我確實想繼續並包含這些文件,因為我想確保我的 WordPress 核心與我從中導出的網站的確切版本相匹配。
配置文件完全配置後,我現在可以開始導出,這將快速遍歷我的數據庫表、媒體上傳、主題、插件和 WordPress 核心文件。
此時,數據庫和站點內的所有文件都被捆綁到一個方便的 zip 文件中。 所以在短短 18 秒內,整個站點就被壓縮了。
我現在準備搬到本地。 在我這樣做之前,我想快速瀏覽一下 zip 文件,看看裡面有什麼。 你可以看到我有一個文件目錄。 這包括所有 WordPress 文件,包括我的 WP 內容、插件、主題和上傳。 而且我還有數據庫轉儲。
另一個文件,對於 WP Migrate 來說非常重要和獨特——WP Migrate 導出 JSON 文件包含有關導出站點的關鍵信息,例如 PHP 版本和 MySQL 版本,因此當 Local 負責導入時,它可以盡可能地匹配那個遠程環境。
因此,您已準備好導入 Local。 我會把它寄回奧斯汀。
AUSTIN WENDT: 太棒了,謝謝,凱文。 是的,我很高興介紹,就像凱文提到的那樣,我們如何才能將該 zip 文件導入本地並準備好開始構建。 但首先,我想先介紹一下 Local 是什麼。 如果您不熟悉,Local 是排名第一的 WordPress 開發工具,由 WP Engine 的人員構建,我們非常高興與社區免費分享和提供。
所以它是一個免費的開發工具。 如果您還沒有聽說過,請查看 localWP.com,我們很樂意讓您使用該產品。 但今天,我們將使用 Local 來促進此工作流程。
為什麼是本地? 與您的機器特定的任何環境類似,它的風險非常低。 正如凱文所說,當您從 WP Migrate 導入導出時,Local 將嘗試做的是我們將密切模仿生產環境。 所以盡可能接近,WordPress 版本,PHP 版本,數據庫,你的本地機器應該模仿生產中發生的事情,這樣如果你正在排除故障或試圖看看出了什麼問題,本地應該能夠告訴您,並儘可能了解託管環境中正在發生的事情。
使用 Local 執行此操作的另一個主要好處是 Kevin 剛剛提到的工作流程與主機無關。 因此,無論您在哪里托管,無論是使用 Flywheel 還是 WP Engine,您都可以非常快速輕鬆地導出該站點並放入本地。
所以我會把它放到一個演示中,並向您展示它在本地 UI 中的樣子。
太棒了,所以我已經完成了 WP Migrate,並將該 zip 文件保存到我的桌面。 當我在 Local 中創建站點時,會出現一個新的拖放區,表明您可以在此處拖放 zip 文件。 Local 的另一個好處是我可以從 UI 中的任何屏幕執行此操作。 因此,如果我將該 zip 文件拖放到本地,它會從 Kevin 提到的 WP 遷移導出 JSON 文件中為我建議網站名稱。
它預選了我的 PHP、我的 Web 服務器和我的數據庫。 然後,我單擊“創建”,Local 會處理剩下的事情。 因此,Local 正在積極解壓縮該 zip 文件,導入所有這些 WordPress 文件,並在我的機器上以盡可能接近生產的狀態設置該站點。
當它開始運行時,它會請求更新我的主機文件的權限,我將輸入我的密碼並允許它這樣做。 但是隨後,Local 開始添加 WordPress,您就可以開始了。
完成後,我將真正快速強調的是您可以在左側看到 - 過去幾週 Local 中新增了對站點進行分組的功能。 因此,我會將 Garrett's Grocery 拖放到我的 DE{CODE} 演示部分——這是一種很好的方式,我鼓勵您檢查以組織您的網站,可能按客戶端或版本分組,連接到 WP引擎與否,最適合您的。 所以試一試。

但是 Local 在這裡結束,它正在更改該站點域。 要做的是在我的機器上配置它,以便它可用,正如您在此處看到的那樣,位於 mysite.local。 如果我單擊“打開站點”,這裡是 Garrett's Grocery。 所以我已經有效地離開了我的託管環境,將它拖放到本地,並在不到兩分鐘的時間內讓它在我的機器上運行,這太棒了。
因此,在這個例子中,我們展示的是能夠從您的舊主機獲取它,無論它在互聯網上的任何地方,並結合 WP Migrate 全站導出,將其放入本地並模仿您的在不到幾分鐘的時間內創建生產環境。
現在,問題是,一旦我在 Local 中獲得它,我就可以開始進行更改了。 我如何將其取回並重新在互聯網上發布? 為了從 Local 獲取您的網站並將其恢復到您的主機,我們將使用 Local Connect 部署到 WP Engine 或 Flywheel。 來自完整站點遷移和部分遷移。
但是為什麼要進行完整的站點部署呢? 首次將整個站點部署到您的主機就是一個很好的例子。 所以也許該站點根本不存在,或者它可能只是主機上的一個模板化站點。 如果您希望包含整個主題或插件更改,或者您可能只是準備完全覆蓋今天主機上的當前站點。 所以也許它已經有了內容,但現在上面的內容不再有生產力或有益,你準備好擦掉它,你會使用完整的站點部署。
所以使用 Local,這很容易實現。 我將向您展示它的外觀演示。 所以我在這裡有 Garrett's Grocery,我已經對我準備推送的網站進行了一系列更改。 現在,Local 有 Local Connect 的概念,正如我提到的——左側有一個雲圖標,用於連接。 右下角還有一個連接到主機,這將允許我連接 WP Engine 或 Flywheel。
今天,我將通過轉到“連接”選項卡並單擊“連接到平台”來完成此操作。 我將登錄我的 WP Engine 帳戶,我不會讓你看著我登錄。你可以看到發生的是 Local Connect 拉入了我在 WP Engine 上可以訪問的所有站點。 現在,我要做的是在概覽中回到 Garrett's Grocery。 在右下角,我將選擇連接到 WP 引擎。
Local 將檢查該站點是否與 WP Engine 的基礎架構兼容。 所以使用最新的 WordPress 和 PHP,然後我可以單擊 Push。
推送將允許我選擇要在 WP Engine 上覆蓋的視線。 它將允許我選擇環境。 所以我會選擇 Austin Wendt 站點,然後選擇 Production。 您將在屏幕右側看到的是 Local 正在確定文件列表。
這意味著本地本質上是在我的機器上的內容和服務器上存在的內容之間運行差異,並將其提供給我,以便我可以真正看到和理解我將要進行的更改。 因為這是一個完整的站點部署,你可以看到我的本地環境沒有發生任何事情,但我將覆蓋生產環境中的所有內容,正如你在右側看到的那些紅色 X。
然後我點擊,Push to WP Engine,Local 開始處理剩下的事情。 整個視頻大約有四分鐘——我會坐在這裡,讓你和我一起看。 發生的事情是 Local 正在打包這些文件。 它開始將這些文件上傳到 WP Engine。 並開始分析,就像我說的,我的機器上的內容與 WP Engine 服務器上的內容之間的差異。
如果您在那里托管,同樣的工作流程也適用於 Flywheel。 我們將按照相同的流程輸入您的機器和服務器之間的文件差異。
所以現在,Local開始打包數據庫。 它也將其推送到 WP Engine。 因此,它會刪除遠程服務器上存在的所有現有表,並將它們替換為來自我的機器的表。
作為該數據庫轉換的一部分,它將查看站點域並為我執行搜索和替換,如您現在所見。 這樣存儲在數據庫中的所有鏈接和 URL 以及表前綴都將得到更新,以便在生產環境中正常工作。
所以它會為我更新那些表前綴。 就這樣,我的網站已被推送到 WP Engine。
所以重新開始,Garrett's Grocery 仍在我的機器上。 而且,如果我轉到“連接”選項卡,我可以在右側看到我推送到的 Austin Wendt 網站,它說它已連接到 Garrett's Grocery。 如果我點擊網站名稱 Austin Wendt,它會在瀏覽器中打開,向我展示互聯網上的新內容。
因此,既然我們了解瞭如何使用 Local 來完成完整的站點部署,我想介紹一下我們如何使用 Local 來使用我們稱為 MagicSync 的功能來同步環境。
所以 MagicSync 是增量遷移的另一種說法。 因此,只需在本地環境和遠程服務器之間移動少量代碼。 你為什麼要這樣做?
所以也許您不想替換整個站點。 您只對準備上線的現有站點進行了較小的部分更改。 Local 的另一個好處是,正如我提到的,Local 將允許您使用 diff 功能,挑選並選擇您想要包含甚至排除的文件。 所以這裡一個很常見的用例是,也許我在我的機器上做了很多事情,但我想排除推拉媒體,因為這是我網站的一個非常繁重和密集的部分。 我可以取消選擇媒體。
因此,我將在這裡深入演示 MagicSync 的外觀。 再說一次,這裡我有 Garrett's Grocery – 說我這次做了另一組較小的更改,我準備好看到它在 WP Engine 上的實時反映。 這裡的工作流程相同——在我屏幕的右下角,我返回以推送到 WP Engine。 它已經為我預選了 Austin Wendt 網站和環境,記得我上次這樣做的時候。
而這一次,它會更短——它再次決定了我機器上的內容和 WP Engine 服務器上的內容之間的差異。 所以它會回到這裡,並且它檢測到對站點進行了一組較小的更改。 我可以取消選擇我想要的所有文件更改。 我可以只選擇我的 WP 內容文件夾。
或者在這種情況下,假設我只想推送我的數據庫。 所以我可以選中數據庫框並點擊推送。 所以現在發生的是我們之前看到的相同工作流程,除了 Local 實際上沒有將任何文件推送到 WP Engine。 它只是用當前在 WP 引擎服務器上的數據庫替換我在我的機器上所做的數據庫更改。
這裡的工作流程非常相似——我們實際上會看到這一過程,因為它不需要那麼長的時間。 因為差異較小。 所以我們將數據庫上傳到 WP 引擎。 本地將再次為我前進並進行搜索和替換。 因此它將檢測表前綴是否已更改,我的機器上不同的 URL 需要反映在遠程主機上。
它將為我進行這些更新。 在大約不到一分鐘的時間裡,我在我的機器上所做的站點更改將被推送到 WP 引擎,並準備好供同事和同行使用,無論是想回顧我所做的工作,也許我已經推送到開發環境,或者如果它在網絡上處於生產狀態,並準備好供我的客戶或消費者使用,或者只是消費者可以在網絡上查看。
就這樣,該網站已被推送到 WP 引擎,如果我返回瀏覽器,您會看到該網站已更新並反映在那裡。 因此,現在我們了解瞭如何使用 Local 來完成增量遷移,我想把它交還給 Kevin,向您展示使用 WP Migrate 工具完成此操作的另一種方法。
凱文霍夫曼: 嘿,謝謝,奧斯汀。 感謝您通過 Local to WP Engine 工作流程指導我們,但我們知道您並不總是能夠控制您的託管服務提供商。 因此,下一個工作流程將向您展示如何在任意兩個 WordPress 環境之間遷移。 在這種情況下,從本地到任何其他網絡主機。
為此,我們將使用一個名為推拉的概念,使用 WP Migrate。 現在,你為什麼要推或拉? 現在與完整站點導出相比,這是雙向遷移。 這意味著這兩個站點都已經存在,並且需要更多的前期投資才能獲得更長期的回報。
因此,一旦完成此設置,您就可以隨時處理增量遷移,並持續保持兩個環境同步。
那麼讓我們看看它是什麼樣的。 因此,假設您的站點已準備好部署到您的遠程主機。 您的媒體庫中有許多帖子和圖像。 我們將獲取此內容並將其移動到一個新站點,該站點目前有零個帖子,並且媒體庫中沒有圖像。
我們將在此處採用的不同方法是使用推送遷移。 它問我的第一件事是來自遠程站點的連接信息。 所以我可以切換到遠程站點,並在我的設置選項卡中,將連接信息直接複製到我的剪貼板。 我還想啟用推送遷移,這樣我就可以接受來自本地站點的這些推送請求。
通過將該信息粘貼到連接信息框中,我現在已連接到遠程站點,並且我已準備好配置我的數據庫選項。 與我們的導出工作流相比,您會在這裡註意到的最大區別是 URL 和路徑的查找和替換端都已為我們完全填寫。 這是因為 WP Migrate 在兩個站點上都有,並且可以訪問該信息,並且可以為我們處理這些信息,而無需我們輸入任何內容來啟動遷移。
我不打算進行自定義查找和替換,但我將包括我從庫中上傳的所有媒體,以及我所有的主題和插件。 現在,當您選擇我的插件時,您會在這裡註意到一個獨特的功能,它會向我顯示該插件在遠程站點上的狀態。 現在,在這種情況下,那裡沒有插件,所以所有這些插件都是第一次添加,當您將鼠標懸停在該圖標上時,會指示當前版本號。
我將繼續保存此配置文件以供將來使用,我將其命名為 Push Full Site。 所以任何時候我需要將一個完整的站點推送到那個遠程位置,我可以簡單地重新訪問這個配置文件並運行它。
當我運行配置文件時,您會再次看到它逐一顯示表格、媒體上傳、主題、插件,並且您會在遷移過程中獲得有關請求大小的一些信息。
遷移完成後,您可以繼續並關閉模式,現在您的兩個環境已同步。
此時,您可能想重新訪問您的配置文件屏幕,以查看保存的配置文件如何可供您單擊返回,如果您需要再次運行它。
所以這是一個完整的站點部署,在 WP Migrate 中有一個保存配置文件。 但您可能想知道,如何部署增量更改? 所以就像 Austin 向您展示的那樣,通過在本地使用 MagicSync,這是使用 WP Migrate 實現的另一種方式。 所以我要創建另一個推送配置文件,輸入相同的連接信息,但這次,當我選擇我的媒體上傳時,我只會推送新的和更新的媒體上傳。
這意味著,第一次運行遷移時,它將包括所有內容。 但是此後的每次遷移,它只會包含已更改的媒體文件。
每當您推送內容和媒體文件而無需擔心主題或插件時,這都是一個出色的工作流程。 所以我現在要保存此配置文件,並將其命名為推送內容和媒體。
所以這給我留下了兩個遷移配置文件,我可以將它們用於兩個不同的目的。 它們保存在我的個人資料屏幕上,並且在我需要跳回它們時隨時可用。 我什至可以設置一個拉取配置文件,然後將生產數據拉取到這個本地站點,並使兩個環境在兩個方向上保持同步。
這樣就結束了我們使用本地和 WP Migrate 從遠程移動到本地,再回到遠程的工作流程。
正如你所看到的,現在我們的遊戲計劃已經完成,我們有使用從 WP Migrate 導出的完整站點移出遠程站點的解決方案,將其拖放到本地,然後向上推送到 WP Engine 或 Flywheel,或任何其他主機。 因此,這只是遷移解決方案的冰山一角,以及結合使用 WP Migrate 和 Local 的可能性。
因此,我們希望在您下次需要運行自己的遷移時為您提供一個遊戲計劃。 期待在我們的 Twitter 帳戶上收到您關於 WP Migrate 和 Local 的消息,我們希望您喜歡 DE{CODE] 的其餘部分。 感謝您加入我們。