從WordPress到Halo:飛致云技術(shù)博客成功遷移,升級用戶體驗
2023年3月23日,中國領(lǐng)先的開源軟件公司FIT2CLOUD飛致云宣布,正式將原有基于WordPress構(gòu)建的技術(shù)博客站點遷移至基于開源建站工具Halo構(gòu)建的新站點(https://blog.fit2cloud.com)。
Halo(github.com/halo-dev)是飛致云旗下的開源建站項目,該項目創(chuàng)立于2017年11月,截至2023年3月15日,Halo已經(jīng)在Docker Hub獲得了超過150萬次下載,GitHub Star數(shù)超過26,300個,F(xiàn)orks數(shù)超過8,300,Docker pulls數(shù)高達(dá)45萬。

飛致云技術(shù)博客是FIT2CLOUD飛致云官方內(nèi)容發(fā)布平臺,提供包括飛致云旗下三款核心開源產(chǎn)品(JumpServer開源堡壘機、DataEase開源數(shù)據(jù)可視化分析平臺和MeterSphere開源持續(xù)測試平臺)、飛致云創(chuàng)始產(chǎn)品(CloudExplorer多云管理平臺)、X-Lab孵化器產(chǎn)品(Halo開源建站工具、1Panel開源Linux面板等),以及公司新聞在內(nèi)的官方博文匯總。
自上線至今,飛致云技術(shù)博客已經(jīng)累計發(fā)布了近500篇文章,涉及產(chǎn)品更新日志、操作教程、案例研究、行業(yè)觀點、社區(qū)活動等類別。技術(shù)博客是飛致云重要的官方知識庫之一,為廣大用戶多角度展現(xiàn)相關(guān)產(chǎn)品與技術(shù)的一手信息,以及官方教程、經(jīng)典案例等內(nèi)容。
飛致云技術(shù)博客站點由原來的WordPress平臺切換至Halo,旨在更好地滿足站點在樣式設(shè)計、運營人員使用體驗等各方面的實際需求。
遷移工作主要包括主題開發(fā)和數(shù)據(jù)遷移兩個過程,操作簡單且耗時較短,不到半天就順利完成了主要的遷移過程。在后續(xù)試運行期間,也根據(jù)運營需求進(jìn)行了頁面細(xì)節(jié)的調(diào)整。
下面我們將具體介紹本次遷移的完整流程,希望能夠給有類似遷移需求的用戶帶來幫助。
主題開發(fā)
主題開發(fā)方面,Halo提供了內(nèi)容全面的主題開發(fā)文檔,且開發(fā)過程中也可以參考功能完整的Earth默認(rèn)主題,減少了主題開發(fā)過程中遇到的阻礙,加速開發(fā)過程。
新版飛致云技術(shù)博客的主題設(shè)計主要參考了Halo 2.0的Earth默認(rèn)主題與舊版本技術(shù)博客所使用的WordPress主題。為了保持整體風(fēng)格的一致性,技術(shù)博客的新主題在頁面布局、配色等方面基本與原主題保持了一致性,只是在其基礎(chǔ)上增加了一些實用功能,并對部分區(qū)域進(jìn)行了樣式優(yōu)化。
1. 首頁Logo更新
① 技術(shù)博客的首頁Logo新增“Powered by Halo”字樣;
② 新增首頁Logo點觸鏈接,點擊Logo即可返回技術(shù)博客首頁。

2. UI頁面優(yōu)化
① 調(diào)整了頁面各版塊的間距,并設(shè)置不同底色的背景,使得版塊劃分更加清晰;
② 優(yōu)化了文章卡片的樣式;

③ 手機端頁面UI優(yōu)化,使界面設(shè)計更加符合手機閱讀習(xí)慣。

3. 分類索引設(shè)計優(yōu)化
① 首頁將二級分類隱藏于對應(yīng)的一級分類之下,界面更加簡潔;
② 點擊導(dǎo)航欄一級菜單即可顯示各二級分類下的文章總數(shù);
③ 規(guī)范分類名稱;

④ 優(yōu)化點擊進(jìn)入二級分類頁面后所顯示的文章路徑。

4. 文章分類標(biāo)簽顯示優(yōu)化
新版技術(shù)博客文章中,可同時顯示該文章的所有分類標(biāo)簽。


5. 搜索功能優(yōu)化
新技術(shù)博客除前端頁面提供便捷的站內(nèi)關(guān)鍵詞搜索功能以外,后臺也新增了強大的全局搜索能力。


主題基本開發(fā)就緒后,就可以準(zhǔn)備遷移數(shù)據(jù)了。頁面的部分細(xì)節(jié)也可以在數(shù)據(jù)遷移之后,在實際使用場景中進(jìn)行調(diào)整優(yōu)化。
數(shù)據(jù)遷移
本次技術(shù)博客的數(shù)據(jù)遷移主要使用了Halo開源社區(qū)的WordPress遷移插件(https://github.com/halo-sigs/plugin-wordpress)。按照插件中的提示步驟進(jìn)行操作,即可順利完成數(shù)據(jù)遷移。
需要注意的是,由于基于WordPress的舊版技術(shù)博變更過訪問地址,會存在導(dǎo)出后的圖片鏈接站點地址不統(tǒng)一的問題,需要在導(dǎo)入Halo之前進(jìn)行預(yù)處理。
1. 部署Halo服務(wù)
Halo的部署使用了官方文檔(https://docs.halo.run/getting-started/prepare)推薦的PostgreSQL數(shù)據(jù)庫,通過Docker Compose文件進(jìn)行快速部署(https://docs.halo.run/getting-started/install/docker-compose)。部署過程簡單且耗時極短(大約5到10分鐘),操作時間主要花費在安裝Docker和下載鏡像方面。
部署中修改的參數(shù)如下:
■?halo.external-url:外部訪問地址,改成實際的博客地址:https://blog.fit2cloud.com;
■?spring.r2dbc.password:數(shù)據(jù)庫密碼,根據(jù)實際配置的數(shù)據(jù)庫密碼進(jìn)行修改;
■?halo.security.initializer.superadminpassword:控制臺管理員初始化密碼,根據(jù)實際需求修改。
2. 從WordPress中導(dǎo)出XML文件
在WordPress管理后臺選擇“工具”→“導(dǎo)出”,選擇導(dǎo)出“所有內(nèi)容”選項,下載導(dǎo)出的文件后,即可得到一個XML文件。
3. 批量替換XML文件中的站點地址
前面提到,舊版本基于WordPress的站點中途變更過站點地址,導(dǎo)致文章中的附件鏈接也存在多個站點地址。如果不對此進(jìn)行修改的話,會導(dǎo)致使用舊地址的圖片等附件在Halo中不能正常訪問。
使用文本編輯器打開XML文件,批量查找舊地址字符串,將其替換為新的站點地址字符串“https://blog.fit2cloud.com”,選擇“保存”按鈕。
不存在這種情況的用戶則可以忽略這一步驟。
4. 打包遷移附件
舊版本技術(shù)博客中的附件主要是文章封面以及文章內(nèi)容中的各種配圖。由于配圖數(shù)量較多,占用的存儲空間也較大,如果通過控制臺導(dǎo)入的方式進(jìn)行遷移,會導(dǎo)致花費時間過多。所以,本次遷移就直接采用了服務(wù)器后臺拷貝的遷移方式。
在WordPress部署服務(wù)器后臺,找到附件存儲目錄,例如“/wordpress_path/blog.fit2cloud.com/wp-content”,打包該目錄下的uploads目錄。
通過以下命令將uploads目錄打包為uploads.tgz文件:
tar -czvf uploads.tgz uploads/
將得到的uploads.tgz文件拷貝到新的Halo服務(wù)器上,并在Halo工作目錄下的attachments目錄中創(chuàng)建migrate-from-wp子目錄。
mkdir -p {halo-work-dir}/attachments/migrate-from-wp
將uploads.tgz中的文件解壓到上述目錄中。
cd {halo-work-dir}/attachments/migrate-from-wp
tar --strip-components 1 -zxvf /path/to/uploads.tgz
操作完成后,在Halo服務(wù)器上的{halo-work-dir}/attachments/目錄,會得到如下目錄結(jié)構(gòu):
{halo-work-dir}/attachments
├── migrate-from-wp
│ ? ├── 2015
│ ? ├── 2016
│ ? ├── 2017
│ ? ├── 2018
│ ? ├── 2019
│ ? ├── 2020
│ ? ├── 2021
│ ? ├── 2022
│ ? ├── elementor
│ ? ├── wpforms
│ ? └── wp-import-export-lite
└── upload
??
?└── local
5. 在Halo中增加轉(zhuǎn)發(fā)規(guī)則
將附件上傳到Halo服務(wù)器以后,暫時還不能通過Halo提供的鏈接訪問到附件。接下來,需要在Halo的工作目錄中創(chuàng)建一個application.yaml配置文件,并在配置文件中增加如下配置:
halo:
?
?attachment:
?? resource-mappings:
? ? ?- pathPattern: /wp-content/uploads/**
??
? ?? ??locations:
? ? ? ?
? ? ? ?- migrate-from-wp
通過該配置,用戶就可以使用{HALO_EXTERNAL_URL}/wp-content/uploads/{文件名}形式的鏈接訪問到這個文件,與WordPress中的附件鏈接規(guī)則一致。這樣文章內(nèi)容導(dǎo)入后,仍然可以使用原本的圖片鏈接正常顯示該圖片。
6. 在Halo中導(dǎo)入XML文件
上述工作都完成后,就可以使用WordPress導(dǎo)入插件來導(dǎo)入XML文件了。
從Halo的插件GitHub倉庫中(https://github.com/halo-sigs/awesome-halo)下載最新WordPress 導(dǎo)入插件(plugin-wordpress),在Halo控制臺安裝并啟用該插件。
安裝完成后,控制臺左側(cè)導(dǎo)航菜單工具欄出現(xiàn)“WordPress導(dǎo)入”選項。點擊“WordPress導(dǎo)入”選項,進(jìn)入導(dǎo)入頁面,點擊“選擇文件”選項,并將在WordPress中導(dǎo)出的XML文件進(jìn)行上傳。WordPress導(dǎo)入插件會自動解析XML文件中所包含的內(nèi)容。
確認(rèn)無誤后點擊頁面下方的“執(zhí)行導(dǎo)入”按鈕,等待導(dǎo)入完成即可。
7. 安裝并配置新的博客主題
在控制臺安裝新的博客主題。安裝完成后,需要對博客主題及主題引入的一些分類相關(guān)的元數(shù)據(jù)進(jìn)行設(shè)置。




8. 驗證并調(diào)整
至此所有遷移操作都已經(jīng)完成,剩下的工作就是在控制臺和博客頁面進(jìn)行的驗證和調(diào)整了。主要驗證內(nèi)容包括文章、標(biāo)簽、分類的數(shù)量,文章所屬的分類及標(biāo)簽是否正確,文章能否正常訪問、圖片能否正常顯示,以及菜單條目及跳轉(zhuǎn)地址是否正常等。
9. DNS變更
由于新建的博客和原博客的域名保持了一致,直接通過域名訪問還是會進(jìn)入到舊博客中。在新博客測試調(diào)整階段,可以通過修改本地域名解析記錄的方式,將博客域名解析到新博客服務(wù)器的IP地址。等到遷移工作確認(rèn)完成后,再在域名服務(wù)商處變更域名的解析地址。
總結(jié)
本次飛致云技術(shù)博客遷移是一次非常成功的站點遷移,除去主題開發(fā)和遷移之后持續(xù)性的細(xì)節(jié)調(diào)整工作,整個遷移操作簡單快捷,不到半天時間就可以完成。遷移之后的技術(shù)博客頁面也變得更加美觀,相較于舊的技術(shù)博客更加富有邏輯性。
作為一款強大易用的開源建站工具,Halo已經(jīng)更新至v2.3.2版本。在最新的版本中,Halo采用更加易于部署的程序與用戶配置分離的方式,同時擁有靈活可擴展的插件機制,可以在相對輕量級的系統(tǒng)基礎(chǔ)上,依據(jù)用戶自身需求來選擇性地新增所需要的功能。此外,Halo還擁有完善的模板系統(tǒng),用戶可以直接應(yīng)用,也可以進(jìn)行模板的自定義設(shè)置和主題的個性化開發(fā)。
考慮搭建或遷移自己的技術(shù)博客的用戶,也可以關(guān)注Halo官方公眾號,并留言“博客主題”獲取同款站點主題。
希望大家能夠持續(xù)關(guān)注FIT2CLOUD飛致云技術(shù)博客(https://blog.fit2cloud.com),我們會持續(xù)為您輸出高質(zhì)量的內(nèi)容,與我們的用戶共同進(jìn)步。