將多站網路架構調整回單一網站架構

最近因為友情支援的關係,將這個網站從原本在 Linode 的主機,改為台灣速連 (推廣連結)。

既然連主機都搬遷了,就趁這時候把一些網站也重新調整一下,最重要的一項工作,就是將原本的多站網路架構,調整回單一網站。

主要步驟

  1. 備份多站網路主網站的檔案與資料庫
  2. 匯出個別網站的資料表
  3. 整理外掛檔案、佈景主題與已上傳媒體
  4. 於新網站匯入檔案與資料庫內容

這個步驟怎麼聽起來好像很熟悉?沒錯,這個步驟其實跟一般搬遷網站的流程一模一樣。唯一的差異在於多站網路會用獨立的資料表,儲存個別網站的資料。所以實際上需要注意的是步驟二與步驟三。

匯出個別網站資料表

要執行這個步驟,你需要有資料庫的存取權限。一般來說,大多數的共享主機都會提供 phpMyAdmin 這款輔助工具,協助網站管理員透過圖形介面來存取資料庫。以下的步驟便是透過 phpMyAdmin 來執行。

進入 phpMyAdmin 後,會發現除了預設的資料表前綴 wp_ 外,有些資料表出現了 wp_2、wp_3 等編號。這些就是個別網站的 Site ID,可以在多站網路的主控制台檢視。

接著,點選上方選單中的 [Export],準備匯出資料表。這邊記得選取 [Custom],這樣才能選取個別資料表。這時,如果要匯出的是主要網站,那麼只要勾選全部的 wp_xxxx 資料表並匯出就可以了;而如果是其他子網站,就根據網站 ID (Site ID) 去勾選對應的資料表。

整理外掛及佈景主、與已上傳媒體

整理外掛與佈景主題

由於多站網路的 wp-config.php 檔案中,會定義下列的常數,所以在這個步驟要先記得把 wp-config.php 的這些常數刪除。

<?php
  /**
 * 啟用多網誌站台與網誌網路功能
 *
 * 若 WP_ALLOW_MULTISITE 值為 true 可啟用多網誌站台功能。
 */
  define('WP_ALLOW_MULTISITE', true);
  define('MULTISITE', true);
  define('SUBDOMAIN_INSTALL', true);
  define('DOMAIN_CURRENT_SITE', 'example.com');
  define('PATH_CURRENT_SITE', '/');
  define('SITE_ID_CURRENT_SITE', 1);
  define('BLOG_ID_CURRENT_SITE', 1);

多站網路與一般個別網站的外掛與佈景主題都是存放在 wp-content 底下,這裡並不需要做另外的處理。

但如果備份下來的檔案有 wp-content/cache,可以先刪除該目錄,這是原本網站製作的快取內容。

整理上傳媒體

在開始匯入之前,需要記得將個別網站的媒體重新整理過。以網站 ID 為 2 的網站來說,就要將 wp-content/uploads/sites/{{網站 ID}} 目錄下的資料,移動到 uploads 底下。

當然,也可以選擇不移動這個資料夾,把其他的媒體內容清空。這是因為資料庫當中的路徑,仍然對應到 http://example.com/wp-content/uploads/sites/2 底下。這裡為了日後好管理,所以選擇將資料整理回 uploads 的資料夾中。

整理資料表內容 (搜尋/取代)

利用任何文字編輯器 (記事本、Notepad++、Visual Studio Code、Sublime 等) 開啟稍早備份出來的資料庫。將資料庫名稱改為新資料庫的名稱 (例如:hycdba → hyccom)、資料表前綴改為新的資料表前綴 (例如:voc_ → hyc_)

如果在上一個步驟將 wp-content/uploads/sites/{{網站 ID}} 的內容移動到 wp-content/uploads 下,這邊記得也要搜尋並取代。

於新網站中匯入檔案與資料庫內容

匯入網站檔案

利用 FTP,或是主機商提供的管理介面 (cPanel 或 Plesk),將上一個步驟整理過的資料,上傳至網站根目錄中 (通常稱為 htdocs 或是 public_html)。

匯入資料庫

於新網站的 phpMyAdmin 中,選取目標資料庫,並將整理過的 SQL 檔案匯入。

匯入前,如果資料庫中已經有其他同名的資料表,記得先備份後,將原有的資料表全選後清除 (DROP)。

等到資料表匯入完畢後,記得將網域指向新的主機,接著就可以試著重新登入回控制台首頁。登入後,確認沒有右上角的 [多站網路管理中心] 選項,代表搬遷順利完成了。

Webinoly 注意事項

這次的搬遷,我是在新的主機先透過 Webinoly 建立了新的 WordPress 網站後,才將舊網站的資料搬過來。因此有下列幾點需要額外注意:

  • Webinoly 已經自動建立資料庫與資料表,因此在整理的時候,需要將資料庫名稱與資料表前綴取代為相對應的值。
  • Webinoly 的 wp-config.php 並非儲存在根目錄,而是在 htdocs 的上一層目錄,因此在搬遷檔案時,要分開處理。

參考資料

預設圖片
Eric Chuang
正職是廣告行銷人員,因為 Google Tag Manager 的關係開始踏入網站製作的領域,進一步把 WordPress 當成 PHP + HTML + CSS + JavaScript 的學習教材。此外,因為工作的關係,曾經用 Automattic 的 Underscores (_s) 替客戶與公司官網進行全客製化佈景主題開發。

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124