Hexo 遷移至 WordPress,個人部落格搬家全紀錄

本篇文章是自己將個人部落格從 Hexo 遷移至 WordPress 服務的記錄,包含

  1. Google Cloud Platform 伺服器架設 WordPress
  2. 設定 Domain
  3. Hexo 文章導入

Hexo 和 WordPress 之間的抉擇

Hexo 用了一年多,優點是網頁載入速度快、不用額外買主機(直接架在 Github Pages )、文章編輯支援 Markdown 語法。但缺點是對於沒有程式底子的人會較難去進行後續的維護(例如主題和外掛更新)、換了電腦就無法撰寫文章、在討論的人沒有那麼多,解決 bug 時要找資料找比較久。所以最近毅然決然的決定要將部落格搬家到 WordPress ,除了可以解決上述的缺點之外,還有一個很重要的點是佈景主題和外掛的豐富度大勝 Hexo 啊!

Hexo 搬家到 Wordpres 的步驟

搬家所需的步驟大概如下,如果你是想要知道怎麼用架設 WordPress 的讀者,也以看完步驟1和步驟2後直接左轉,逛逛我的其他文章。

  1. 用 Google Cloud Platform(GCP)的伺服器架設 WordPress
  2. 設定 Domain
    1. Domain 設定
    2. 增加 SSL 安全連線
  3. 導出 Hexo 的文章,並導入 Wodpress
  4. 在 WordPress 內整理文章
    1. 圖片跑掉,重新設定內容摘要部分
    2. 舊網站文章轉址

使用 GCP 伺服器架設 WordPress

如果你是第一次使用 Google Cloud Platform(本篇文章中簡稱GCP)的話,Google 會送你一年 $300 美金的免費使用金額,如果你跟我一樣是月流量不算太高的個人部落格的話,就等於你這一年都能免費使用!

建立 WordPress 的服務

我這邊是用網路上大家推薦的「WordPress with NGINX and SSL Certified by Bitnami and Automattic」(要注意有很多 WordPress 安裝服務,名字要選對),會選用這個是因為做於 Web 服務器來講, NGINX 相比 Apache 效能較好,且資源使用率較少,對服務器負擔較小。

這裡要記得選擇 asia-east1 的服務器,這個才是 Google 在台灣彰化的伺服器,訪問速度較快,然後再選擇你要的 Machine type 和 Boot Disk type 和容量,這些都會影響你的費用。建議控制在 $20 元左右,這樣可以預留 $5 美元左右的緩衝空間(免費額度$300/年 = $25/月),之後按下部署。

使用 GCP 建立 WordPress 服務

部署完畢後可以進入 Deployment Management 頁面查看自己主機的訊息,裡面有你的部落格網址,管理員帳號、密碼…等資訊。建議趕緊登入 WordPress 的管理員帳號把密碼換掉比較安全。

Deployment Management 中會列 WordPress 及主機的訊息。

將網址改成靜態 IP

前往 VPC 網路的管理介面,找到你的 VM(虛擬主機)名稱,然後在 type 欄位將 IP 改為靜態位址,避免伺服器重啟後的 IP 位置變更,別人就會找不到你的網站。

VPC 網路設定將外部 IP 改成靜態

使用 SSH 安全加密連線,遠端控制伺服器

到 Compute Engine 的管理介面,在 SSH 連接的部分選取「在瀏覽器視窗開啟」,便會開啟一個視窗版終端機可以讓你在裡面執行指令。

使用 SSH 安全加密連線控制遠端伺服器

在這邊裡面我們可以去更改 NGINX 伺服器組態設定、更改 WordPress 的網址設定…等,但首先我們要來去除惱人的 Bitnami 浮水印。

除去 Bitnami 浮水印

透過 Bitnami 服務建立的 WordPress 會有浮水印,這邊可以藉由一行簡單的指令將它去除。
sudo /opt/bitnami/apps/wordpress/bnconfig —disable_banner 1

現在可以看到你的 WordPress 網站已經完全架好了!接著就來設定網域,讓醜醜的數字 IP 網址變成精美的網址吧!

網域設定

Google Domain DNS 設置

我自己是使用 Google Domain 的服務,如果想知道怎麼申請 Google Domain 的話看參考我的這篇文章「Hexo + Github Pages:教你設定部落格的專屬網址,含網域購買教學

到 Google Domain 中選取你的網域,並至 DNS 設定中設定如下:
名稱 / 類型 / TTL / 資料
@ / A / 1h / 34.80.19.36

Google Domain 的 A 紀錄設定

這個意思是讓你的網域對應到你剛剛在 VPC 網路那邊設定的靜態 IP,以我的例子來講就是將 larrynote.com 對應到 34.80.19.36 這個 IP 位置。

要注意設定後網址要生效會需要一點時間,所以就稍微耐心等待一下。

申請 SSL 憑證,建立網站加密連線

這時候切換回前面開啟的視窗版終端機,如果已經關掉的話在 Compute Engine 那邊的 SSH 連接再開一次。

並輸入以下指令,請把下面的 [email protected] 和 exmple.com 置換成你自己的資訊。
sudo /opt/bitnami/letsencrypt/scripts/generate-certificate.sh -m [email protected] -d example.com

輸入後他會問你是否要以此資訊建立 SSL 憑證,也會再問你是否要自動更新 SSL 憑證,我這邊都是選擇 Y。

當建立好了之後就可以回到 WordPress 安裝 Really Simple SSL 這個外掛,並一鍵啟用 SSL,接下來你就可以看看是否自己通過以下檢測啦!

使用 Really Simple SSL 檢測自己網站的安全憑證設定

文章到這邊 WordPress 建置已經完成,接下來要講的是怎麼搬家啦!

Hexo 文章導入至 WordPress 及相關設置

產出 Hexo 的文章檔案

調整 Hexo 的 RSS 摘要格式以利 WordPress 導入,在 _config.xml 檔案中調整設定如下

feed: 
	type: rss2
	path: atom.xml
	limit: 0
	hub:	
	content: true

接著透過 hexo g 的指令來產生最新的 atom.xml 檔案。

將文章導入 WordPress

WordPress 內建有提供一個導入 RSS 的工具,由於我們剛剛使用 GCP 部署的 WordPress 是使用 PHP 7 以上的版本,所以在導入的時候會有異常。這邊可以直接把 /wp-content/plugins/rss-importer/rss-importer.php 這個路徑中發生錯誤的第 72 行程式碼直接註釋掉即可。
set_magic_quotes_runtime(0);

整理文章圖片、文字排版

由於之前用 Hexo 寫的文章內的圖片會全部跑掉,所以這邊要重新設置圖片。建議用網路圖床,避免 WordPress 肥大,這邊可以參照「Hexo 優化:新增圖片圖床、更換文章閱讀計數器服務」這篇文章,來申請網路圖床。

這邊要費的功夫最大,建議可以搭配 Yoast SEO 這個外掛來順便檢視自己的文章是否有良好的 SEO 結構。

將舊文章網址導向新文章網址

之前在 Hexo 的文章網址跟現在在 WordPress 的文章網址結構如果是不一樣的話,那麼便需要進行重新導向的動作,避免遺失掉舊有文章的流量,畢竟舊有文章網址還是能帶來一定的 SEO 流量。

我這邊是使用 Redirection 這個外掛,來將文章網址一篇篇的做 301 重新導向的動作。

使用 Ridirection 設定網站文章轉址


結論

網站搬家的過程是非常辛苦的,所以一開始選擇適合自己的產品真的很重要啊!

當然如果之後怕自己又突然不喜歡 WordPress 想換回 Hexo 的話,也可以繼續同步在 Hexo 上發表文章,雖然這樣會比較麻煩一點,但不失為一個作法!

如果你對搬家的過程有什麼疑問或是對 Hexo 或 WordPress 有什麼心得都歡迎在下方留言與我討論或分享,希望這篇文章能夠幫助到你。

參考資料

2 thoughts on “Hexo 遷移至 WordPress,個人部落格搬家全紀錄”

  1. 您好,謝謝您的文章,
    可以請教一個問題嗎,
    我申請好了後,要登入時,但卡在wordpress登入頁,
    輸入他給的user和密碼,點login ,網頁沒動作耶,
    登不進去,請問您知道怎麼解決嗎?謝謝~
    還有,那個沒辦法使用bitnami 的話,那個付費的可以退費嗎?這是安裝ㄧ次收一次費用嗎?
    不好意思,初學者問題比較多。

    1. 您好,不好意思比較晚回覆。
      想問一下你也是使用Google Cloud Platform的服務架站嗎?
      剛剛看了一下他的服務條款,現在$300美元好像改成90天內有效了,這樣的話90天內沒有爆量的話是不會被收費的
      如果擔心的話可以去Google Cloud Platform後台的Compute Engine裡的VM執行個體把你的虛擬主機關閉

      另外登入的網頁沒動作他有出現帳號密碼錯誤嗎?

發表迴響

%d 位部落客按了讚: