
[WordPress] 備份現有的 WordPress Multisite 多站台,遷移至新的 GCP 帳號
之前 在 Google Cloud Platform 上建立 WordPress 網誌,
不過因為想要改用另一個 Google 帳號來管理,
因此得把目前的 WordPress 站台備份後,
用新的 Google 帳號建立好新機器,再將資料都轉移到新機器上面~
來記錄一下步驟吧~
1. 使用 UpdraftPlus 備份現有的 WordPress 網站
原本的 WordPress 網站上,我平常就有用 UpdraftPlus 自動定期備份。
在做轉移之前,再按一次「立即備份」,
記得要同時備份資料庫和檔案:
備份資料我都是設定成自動上傳到 Google Drive,
這樣子也方便待會轉移機器後還原~
2. 在 Google Cloud Platform 上申請新的虛擬機器
這邊就照著 在 Google Cloud Platform 上建立 WordPress 網誌 這篇,
用新的 Google 帳號申請 Google Cloud Platform 後,
在左邊選單的 Marketplace (以前叫 Cloud Launcher) 搜尋 WordPress,
就可以找到一堆解決方案:
因為我現在是使用 WordPress Multisite (多站台) 來架設多個網站,
因此選用的是 WordPress Multisite Certified by Bitnami 這個:
在 Compute Engine 上啟動之後,等待它將機器準備完畢,
再到 VPC 網路 > 外部 IP 位址,
把 IP 從「臨時」改成「靜態」,確保 IP 不會再變動:
幫這 IP 取一個名字方便識別:
3. 設定 WordPress Multisite 主域名
我們必須先設定 WordPress Multisite 的主域名,
不然很多地方都會出問題…
我原本的網站名稱是 ephrain.net,
因此在新機器上,利用 Google Cloud Platform 提供的 Web SSH 功能,
執行下面的指令來設定 Multisite 的主域名:
sudo /opt/bitnami/apps/wordpress/bnconfig --machine_hostname ephrain.net
設定好主域名後,照網頁上的說明,
機器重開時這個主域名會被重設,
將 bnconfig 改名可以避免主域名被改掉:
sudo mv /opt/bitnami/apps/wordpress/bnconfig /opt/bitnami/apps/wordpress/bnconfig.disabled
設定好主域名,也可以順便把 Bitnami 的管理圖示關掉,
可以參考 停用 Bitnami 的管理圖示 (banner) 這篇的作法~
上面的這些指令可以在 Google Cloud Platform 提供的 Web SSH 上執行,
也可以用 gcloud 指令來做,效果都是一樣的。
4. 瀏覽新的 WordPress Multisite 站台
WordPress Multisite 的特點就是得用網域名稱 (domain name) 去連線,
它再根據你給的網域名稱,導到不同的網站內容 (但是是同一個 IP)~
因此我們不能直接連 http://35.236.155.5 這種網址,
而是應該連像 https://ephrain.net 這種有網域名稱的網址…
可是,原本的網域名稱是指向舊的 WordPress 站台,
在我將舊站台的資料都遷移到新機器之前,我也不想讓舊機器服務中斷,
因此直接去 Google Domains 把網域名稱指向新的 WordPress 主機,
這個選項目前是不行的,該怎麼辦呢?
其實很簡單,只要騙過本機電腦就好了~
在 Mac 上修改一下 /etc/hosts,將網域與 IP 的對應加上去~
因為這是系統檔,記得要用 sudo 才能編輯:
sudo vi /etc/hosts
編輯後的內容如下,
我讓 ephrain.net 和 travel.ephrain.net 都指向新機器的 IP:
35.236.155.5 ephrain.net 35.236.155.5 travel.ephrain.net
這樣的話,如果去瀏覽 https://ephrain.net,
它事實上就是去訪問新的 WordPress Multisite 站台的 IP,
而且因為我們是用網域名稱去訪問,
因此 Multisite 依據網域名稱,正確的回應網站的內容~
5. 將 UpdraftPlus 的備份還原至新的 WordPress 站台
在步驟 2 我們建立好虛擬機器後,
就已經得到了 WordPress 預設的登入帳號 (user) 和密碼:
使用這個預設的帳號密碼,連上 https://ephrain.net 並登入,
接著去外掛區找 UpdraftPlus 把它裝起來:
裝好之後,到 UpdraftPlus > Settings 頁面,
選取之前在舊站使用的備份方式 (我的就是用 Google Drive):
這邊一樣照著網頁上的指示,點下連結後,
讓 WordPress 通過 Google Drive 的驗證:
現在到 Existing Backups 分頁,按下 Rescan remote storage,
就可以列出舊站曾經備份到 Google Drive 的資料了~
選擇最新的那一筆 (就是我們在步驟 1 做的備份) 按下 Restore 還原:
記得將所有的項目都選取起來還原:
按下 Restore 鈕後,UpdraftPlus 會先從 Google Drive 將備份檔下載下來,
時間有可能會很久 (假設你的網站資料不少的話,備份檔也會蠻大的),
Chrome 可能三不五時就會彈一個「網頁沒有回應」的訊息,
記得按 Wait 繼續等待,不要按 Exit Page 關閉網頁:
經過漫長的時間、與不停地點擊 Wait 繼續等待後,
終於出現了下面的頁面,表示 UpdraftPlus 終於把備份檔下載回來了,
可以準備開始還原資料了:
在上面的訊息裡面,有一些提示訊息,
例如我原本的網站是有啟用 HTTPS 的,但新的網站當然都還沒有設定,
這會導致還原之後,瀏覽網頁時會一直想導向到 HTTPS 網頁,
但因為沒有設定 HTTPS 而出現警告訊息。
不過這不是什麼大問題,可以在還原資料後再來加回 HTTPS。
所以現在就按下 Restore 開始還原吧~
按下 Restore 鈕後,就會出現下面的畫面,
耐著性子等待吧,不要按任何東西或關閉視窗:
等到還原完成後,會跳出一個 Session expired 訊息,
點下 Please log in again 連結重新登入網站:
要注意的是,這次登入就是使用舊 WordPress 站上的帳號密碼,
而不是 Google Cloud Platform 上提供的預設帳號密碼了,
因為相關的帳號資訊已經被完整的還原了~
假設在舊站上有兩個帳號 A 和 B,
在還原之後,原本預設的 user 帳號會消失,跑出 A 和 B,
UpdraftPlus 可以完整地還原真的很厲害:
登入之後,可以檢查一下是不是原本的文章、外掛、設定等等都還原了,
我的經驗是大部分都有還原,
外掛也都有自動裝回來,只是可能沒有啟用,要自己再去啟用一下~
6. 重新設定新站的 HTTPS
HTTPS 的設定是存在設定檔,看來 UpdraftPlus 是沒辦法備份的
(或許 UpdraftPlus Premium 版本有這功能?我不知道)
因此請照著 在 Bitnami WordPress 網站上啟用 HTTPS 這篇的說明,
重新在新站上設定好 HTTPS~
7. 設定 DNS 指向新站的 IP 位址
確定新站已經完全運作正常之後,
就可以修改 DNS,讓網域名稱指到新站的 IP 位址~
因為我是用 Google Domains 註冊網域名稱,
因此可以參考在 Google Domains 註冊自己的網域名稱,並指向 WordPress 主機 這篇,
將網域名稱指向新的 IP:
最後,記得再去把 /etc/hosts 裡把暫時加上的網域/IP 對應拿掉。
這樣設定完成之後,等待 DNS 生效,
新的 WordPress 網站就已經算是上線成功啦,
而且在這過程中間,舊站提供的服務是沒有中斷的~
等跑個一兩天確定新站都沒有問題之後,舊站也就可以關閉除役了~
這過程要做的事情不少,但其實都不算很難做,
大概不用半天就可以成功將站台轉移了~
過程中間因為 UpdraftPlus 備份的東西很多,
讓我們還原後少了許多麻煩,以免費版的功能來說相當令人驚艷,
也推薦給大家使用囉~^^
參考資料:
Bitnami WordPress Multisite For Google Cloud Platform