Herd 是 Laravel 官方推出的本機 PHP 開發環境,主要支援 macOS 與 Windows。它會在電腦上管理 PHP、Nginx、Dnsmasq 等工具,讓你用 .test 網域開啟本機網站。雖然名字常和 Laravel 綁在一起,但標準 WordPress 一樣可以使用。

這篇會帶你完成兩件事:先從零建立一個 Herd + WordPress 本機站,再把虛擬主機上的既有網站複製回來。你會學到資料庫要怎麼準備、wp-config.php 要改哪裡,以及為什麼「把網址改掉」不能只改一個斜線。斜線很小,搬家時卻很有存在感。

使用 Herd 在本機架設 WordPress

WordPress 需要三樣東西:網站檔案、PHP 網站服務,以及資料庫。Herd 主要負責前兩項,資料庫則要另外準備。以下以 macOS 為例,Windows 使用者可依 Herd 官方文件的介面和路徑調整。

步驟一:安裝並啟動 Herd

建議先從 Herd 官方網站下載安裝程式;如果你已經使用 Homebrew,也可以執行:

brew install --cask herd

安裝後開啟 Herd,依照首次啟動精靈完成設定。Herd 會安裝背景服務,並提供 herdphpcomposer 等指令。可以在終端機確認:

herd --version
php --version
composer --version

Herd 會管理 parked path 裡的資料夾。macOS 常見的預設路徑是 ~/Herd;如果你的專案在其他位置,也可以進入該目錄後使用 herd link。詳細安裝方式可參考〈Laravel Herd 完全指南〉

步驟二:準備資料庫

WordPress 會把文章、設定、使用者和留言儲存在資料庫裡。Herd 本身不是資料庫服務,因此需要另外準備 MySQL 或 MariaDB。這裡使用 DBngin 管理資料庫服務,再用 Sequel Ace 操作資料庫。

先安裝 DBngin:

brew install --cask dbngin

開啟 DBngin,新增 MySQL 或 MariaDB 服務並按下 Start。接著安裝 Sequel Ace:

brew install --cask sequel-ace

在 Sequel Ace 選擇 Standard 連線,填入 DBngin 顯示的主機、連接埠、帳號和密碼,再按 Connect。

連線成功後建立一個空白資料庫,例如 kamadiam。資料庫名稱可以自訂,但等等寫進 wp-config.php 的名稱必須完全一致;多一個字母,WordPress 就會立刻變成一位很嚴格的門衛。

步驟三:下載並連結 WordPress

Herd 官方的 WordPress 指南建議從 WordPress.org 官方網站下載壓縮檔。解壓縮後,把 wordpress 資料夾改成 sample,再放進 Herd 的 parked path,例如:

~/Herd/sample

如果你把 WordPress 專案放在其他目錄,先進入該目錄,再執行:

cd ~/Sites/sample
herd link

目錄名稱是 sample 時,Herd 通常會提供 http://sample.test。直接放進 parked path,或用 herd link,二選一即可,不需要兩種方式同時做。

此時網站服務已經啟動,但 WordPress 還不知道要連到哪個資料庫。接下來處理設定檔。

步驟四:設定 wp-config.php

進入 WordPress 目錄,先複製範例設定檔:

cd ~/Herd/sample
cp wp-config-sample.php wp-config.php
code .

開啟 wp-config.php,依照剛才在 DBngin 建立的資料庫填入連線資訊。以下只是一組範例,實際帳號、密碼和連接埠請以你的 DBngin 設定為準:

/** The name of the database for WordPress */
define( 'DB_NAME', 'kamadiam' );

/** MySQL database username */
define( 'DB_USER', 'root' );

/** MySQL database password */
define( 'DB_PASSWORD', '' );

/** MySQL hostname */
define( 'DB_HOST', '127.0.0.1' );

localhost127.0.0.1 在某些本機環境的連線行為不同;如果 localhost 連不上,可以依資料庫工具顯示的設定改用 127.0.0.1。不要把這個範例的空白密碼直接套用到共用或正式環境。

儲存後開啟 http://sample.test,按照畫面填入網站標題、管理員帳號和密碼,就能完成全新安裝。

步驟五:啟用 HTTPS(可選)

本機測試不一定需要 HTTPS,但如果你的外掛、登入流程或 Cookie 行為依賴 HTTPS,可以在 Herd 的 Sites 管理介面替站點啟用安全連線,也可以依官方 CLI 文件使用 herd secure

啟用後,請使用 Herd 顯示的 HTTPS 網址測試,不要只把 http 手動改成 https 就當作完成。憑證還是要真的存在,瀏覽器才不會皺眉。

把虛擬主機網站備份到本機

本機站建立好之後,可以把正式網站複製回來,作為測試環境。這樣修改主題或外掛時,不會直接拿正式站台當實驗白老鼠。

搬移前先注意兩件事:

  • 本機網站只應用於測試,不要把正式站台的管理員密碼或會員資料隨意分享。
  • 檔案備份和資料庫備份最好選同一個時間點,否則可能出現檔案與資料對不起來的情況。

本文以下以 Hostinger 的介面為例。不同主機商的按鈕名稱會不同,但原則都是下載網站檔案和資料庫備份。

步驟一:下載網站檔案

  1. 開啟主機商的檔案備份功能(File backups)。
  2. 選擇要使用的備份日期。
  3. 進入 domains,勾選要搬移的網站。
  4. 按下 Download all files,等待壓縮檔準備完成。

下載並解壓縮後,把 public_html 裡的網站檔案複製到本機的 sample 目錄。若本機原本放的是全新 WordPress,請先備份或清空目錄,再覆蓋檔案,避免兩份安裝混在一起。

步驟二:下載並匯入資料庫

  1. 開啟 Database backups。
  2. 選擇網站使用的資料庫。
  3. 選擇與檔案備份相同的日期。
  4. 按下 Download,等待 .sql 壓縮檔準備完成。

解壓縮後,在 DBngin 建立一個空白資料庫,再用 Sequel Ace 連線並選擇 Import,匯入 .sql 檔案。不要把「解壓縮完成」誤認成「資料庫已匯入」;前者只是把行李箱打開,後者才是把衣服放進衣櫃。

如果 SQL 檔案很大,也可以使用終端機匯入。以下範例的帳號、資料庫名稱和檔案路徑都要依你的環境修改:

mysql -u root -p kamadiam < backup.sql

步驟三:更新本機資料庫設定

編輯本機網站的 wp-config.php,把資料庫名稱、帳號、密碼和主機改成 DBngin 正在使用的設定:

define( 'DB_NAME', 'kamadiam' );
define( 'DB_USER', 'root' );
define( 'DB_PASSWORD', '' );
define( 'DB_HOST', '127.0.0.1' );

資料表前綴也要保留原站的設定,例如原本是 wp_ 就不要任意改成其他前綴,否則 WordPress 會找不到剛匯入的資料。

步驟四:必要時暫時停用外掛

正式站的安全、快取或主機專用外掛,可能不適合在本機執行。如果登入頁打不開或網站出現嚴重錯誤,可以先停用外掛,再逐一啟用測試。

最安全的做法是先從資料庫備份,再透過 WP-CLI 或管理工具停用。直接修改 wp_optionsactive_plugins 會碰到序列化資料,只有確定資料表前綴和資料格式時才這樣做:

UPDATE wp_options
SET option_value = 'a:0:{}'
WHERE option_name = 'active_plugins';

這會停用所有外掛,不會刪除外掛檔案或設定。若你的資料表前綴不是 wp_,請替換成實際前綴;操作前也務必確認目前連線的是本機資料庫,不是正式資料庫。

步驟五:切換網站網址

正式網站通常使用公開網址,本機則使用 http://sample.test。如果不更新網址,WordPress 可能把 CSS、圖片和登入導回正式站。

臨時測試最簡單的方式,是在 wp-config.php 中加入以下設定,放在 /* That's all, stop editing! */ 之前:

define( 'WP_HOME', 'http://sample.test' );
define( 'WP_SITEURL', 'http://sample.test' );

WP_HOMEWP_SITEURL 會覆寫資料庫裡的 homesiteurl,但不會更新資料庫本身。這適合先讓搬回來的網站開得起來;如果要長期使用本機站,還要用能正確處理序列化資料的搜尋取代工具,更新文章內容、外掛設定和其他舊網址。

例如你已安裝 WP-CLI,可先預覽替換結果,再執行實際替換:

wp search-replace 'https://example.com' 'http://sample.test' --all-tables --dry-run
wp search-replace 'https://example.com' 'http://sample.test' --all-tables

執行前請先確認目前所在目錄和資料庫都是本機環境,並保留備份。不要直接用文字編輯器對 SQL 做全域取代,序列化資料被改壞後,網站可能會比咖啡機斷電還安靜。

完成後的檢查清單

  • 可以用 http://sample.test 開啟首頁。
  • 可以登入 /wp-admin/
  • 主題、圖片、固定網址和文章內連結都指向本機。
  • 外掛沒有連回正式服務,也沒有在本機寄出測試信給真實使用者。
  • 本機測試完成後,不會把 WP_HOMEWP_SITEURL 或測試用帳密帶回正式環境。

到這裡,你就有一個和正式站分開的 WordPress 測試環境,可以放心調整主題、外掛和 PHP 程式。Herd 負責把房子蓋好,資料庫負責保管家具;搬家時兩邊都帶上,網站才不會只剩一張漂亮的門。

參考資料