我終於擁有自己的獨立博客了。

音樂:No Fear In My Heart朴樹 - 獵戶星座實體專輯版

這是我使用 Hexo 發佈的第一篇博客。

對於不懂技術的我來說,搭建這個博客一波三折,幸好中間有一位熱心網友 @無聲 的相助,這個博客才得以搭建起來。 看着一個博客從 0 到順利誕生,那種感覺可能就像是

  • 產品經理看着自己做的第一個產品順利上線
  • 準備要當媽媽的女人聽到孩子第一聲啼哭的那個瞬間

那種感覺不言而喻,雖累但成就感滿滿,一切值得。 我之前曾寫過兩篇技術小白搭建博客的文章:

可能是最最最最簡單的搭建博客方法
不會代碼,如何零成本搭建個人博客?

這兩篇文章都用到了同一個網站 GitHub,這個網站是世界上最大的代碼託管平臺,可用來託管代碼,也可以用來存放文章數據,作爲託管博客的站點,省去購買域名和租用服務器的錢。

但使用這個方法存在一個弊端:訪問時打開的速度很慢,需要使用網絡代理,才能以正常的速度打開網站。 此外,在沒有購買域名和租用服務器的情況下,搭建的博客網址通常是「GitHub用戶名.github.io」,github.io 後綴的網站以前雖然打開的速度慢,但至少還能訪問。

但在不久前,我想起自己許久沒更新的博客,想打開看一下,發現 github.io 後綴的網站也打不開了。顯而易見的是,它也被加入了大陸屏蔽的列表。

正是這個問題,促使我萌生了再次搭建新博客的念頭,我想搭建一個存在時間儘可能長、且能在國內正常訪問的博客。

搭建博客的流程

購買域名

域名可以理解爲我們平常所說的網址,例如 baidu.com,我購買的域名是 penghh.fun。這個域名是從騰訊雲購買的,網站會提供各式各樣的域名後綴,如.com、.net、.cn 等,在頂部的搜索框輸入你想註冊的域名,下面會返回加上不同後綴的域名及價格。

域名是按年收費的,可只買一年,也可一次性買好幾年,一次性購買多年的價格會划算一些。 如果你像我一樣,不確定一年之後是否有精力維護博客,那最好就只買域名的 1 年使用期。 購買域名時的注意點:不要購買域名後綴爲中文的域名

租用一臺服務器

在進行下一步域名備案之前,我們需要先租用一臺服務器。服務器可以理解爲一臺 24 小時不關機的電腦,如果你將博客的數據存放在上面,它就能隨時隨地被訪問,無需擔心電腦是否處於開機狀態,且服務器能同時接收多個客戶端的請求,因此它可以實現多人同時訪問一個網站。

下圖是我租用的服務器配置,應該是最便宜的服務器,一年的費用爲 99 元。

騰訊雲服務器:
https://cloud.tencent.com/act/double11/go

域名備案

如果你的網站想在國內正常訪問,需要向互聯網管理局提交備案,獲得備案號後才能正常訪問。

我是通過騰訊雲提交備案的,在手機上通過小程序「騰訊雲網站備案」提交網站名稱和網站的備註信息等,網站名稱存在着很多隱藏的限制,例如不能出現「分享」、「工具」等涉及誘導分享或商業性質的字樣,我因爲網站名稱命中敏感詞、描述不清而被駁回了三次。

網站名稱最後還是騰訊的客服根據備註信息幫我起的——「個人電子產品使用心得」,與我最開始想設置的「效率工具指南」相去甚遠。

此外,備案時還需要提交一個緊急聯繫人電話,可以將其設置爲你的對象、家人或朋友,後續騰訊雲客服在審覈的過程中也會聯繫你留的緊急聯繫人電話,因此最好事先與緊急聯繫人打個招呼。

提交的備案信息通過騰訊雲審覈後,客服會將你的信息提交到管局,正常情況下 10 個工作日之後就能收到審覈的結果,順利的話就能拿到網站的備案號。

備案要點:耐心!耐心!耐心!尤其是在我們這個國家。

配置域名解析

之前我對域名的理解是,只要在瀏覽器地址欄中輸入域名 penghh.fun,就能打開我的博客,但後來發現輸入 www.penghh.fun 和 penghh.fun 是不一樣的,在未正確配置域名解析的情況下,penghh.fun 打開失敗,而 www.penghh.fun 則打開正常。

諮詢了網友 @無聲 後,找到了解決方法,需要在服務器的 DNS 解析頁面新增一條值爲 @ 的主機記錄,這裏的 @ 代表直接解析域名 penghh.fun,將其指向與 www.penghh.fun 相同的 IP。

完成配置後,之後無論是否輸入帶有 www. 的網址,都可以正常訪問網站,打開同一個頁面。

安裝 Hexo 框架

搭建博客有兩個比較多人用的框架:Hexo 和 Hugo,我選擇的是 Hexo。關於 Hexo,引用 IIssNan 介紹 Hexo 時說的一段話:

Hexo 是高效的靜態站點生成框架,它基於 Node.js。通過 Hexo 你可以輕鬆地使用 Markdown 編寫文章,除了 Markdown 本身的語法之外,還可以使用 Hexo 提供的 標籤插件 來快速的插入特定形式的內容。

安裝 Hexo 框架之前,需要先安裝其他環境或軟件:

  • Git
  • Node.js

Git,是一個版本控制軟件,後面在將博客 push 到 GitHub 倉庫時會用到。 Node.js 目前已集成到包管理工具 npm 中,因此只要你安裝了 npm,就會附帶安裝 Node.js。

關於如何在本地安裝 Hexo 框架,可以參考 B 站 Up 主 @CodeSheep 的視頻教程,視頻講解得非常詳細,說是一個保姆級教程也不爲過。

教程地址:手把手教你從0開始搭建自己的個人博客 |無坑版視頻教程| hexo

配置服務器

在搭建博客的整個流程中,我覺得配置服務器對我來說是最難的,一方面是配置時需要在服務器和本地之間分別進行操作,你需要分清某個命令是要在服務上還是在本地上操作,但這東西一來二去就把我搞暈了,另一方面,配置服務器時全程用的是黑黢黢的命令行窗口,而不是我們常用的圖形化界面。

爲了弄清在服務器上輸入的某行命令產生了什麼效果,例如是否在正確的路徑下創建了文件夾,我們需要使用一些遠程連接軟件,將本地的電腦與服務器連接起來,通過軟件查看服務器端生成的文件。

Mac 電腦:遠程連接軟件推薦使用 Royal TSX
Windows 電腦:遠程連接軟件推薦使用 Xshell

關於 Royal TSX 的用法,可以查看 B 站 Up 主 @老郭種樹 的視頻:
怎樣在Mac上SSH和FTP?完美替代XShell是哪個軟件?item2嗎?Royal TSX! 沒有比它更好

不一邊輸命令,一邊查看生成的文件,我覺得心裏特沒底,特別沒有安全感。

最終,服務器的配置還是網友 @無聲 幫我弄好的,因此我少了這一步的實踐,想了解的朋友,可以查看 @千古壹號 寫的一篇搭建博客的文章:

hexo+阿里雲搭建博客網站

部署到 GitHub

我的博客不是直接從本地部署到服務器的,它相比前者中間多了一步:部署到 GitHub。後面再通過 GitHub 的 Actions 命令自動部署到服務器。

之所以要加多這一步(指部署到 GitHub),我的理解是,將 GitHub 作爲一個備份的方案,它可能可以解決的問題有:

  • 本地的博客文章數據丟失了
  • 換了新的電腦
  • 服務器欠費未繳清

對於前兩個問題,只需要通過 git pull 或 git clone 命令,就能將之前提交到 GitHub 的博客文章恢復到本地,無需擔心數據丟失或遷移帶來的麻煩。

第三個問題,由於 GitHub 是免費的,即便後面你不想租服務器了,將博客文章暫存到 GitHub 上,其實也是可以正常瀏覽的哈哈哈哈。

使用 GitHub Actions 實現博客自動部署到服務器

GitHub Actions 是 GitHub 提供的一個自動化工作流,它有點類似於 iPhone 上的「快捷指令」。

在 GitHub 倉庫根目錄中創建一個工作流文件,即將博客自動化部署到服務器的配置文件,之後你每次將本地的博客提交到 GitHub,就會自動觸發 GitHub Actions 執行,稍等一小會,它就會將所有更改同步到遠端的服務器。

這時,刷新一下之前停留的博客頁面,就可以看到剛剛更新的博客文章了。

能讓程序自動化的,千萬不要手動操作,正如 Perl 編程語言的作者 Larry Wall 所說的:

程序員的三大美德:懶惰,急切,傲慢。

懶纔是第一生產力。

可能會用到的命令行

查看 Git/Node.js 的版本號

git --version(也可以簡寫成 git --v)
node --version(同理可以簡寫成 node --v)

路徑操作

進入 blog 文件夾:cd blog
進入 blog 文件夾下的子文件夾 posts:cd blog/posts
返回根目錄:cd
返回上一級目錄:cd ..

顯示當前路徑

pwd

在當前路徑下創建一個新的文件夾

mkdir+空格+文件夾名稱

查看當前路徑下所有文件的管控狀態

ls -l
*注:上面的兩個字母是 L 的小寫

獲取 Git 的 ssh 公鑰

cat ~/.ssh/id_rsa.pub

博客 push 到 GitHub

git add .
git commit -m"附帶的信息,例如在某個時間點編輯了博客"
git push

Vim 編輯器模式下的操作 & 命令行

快捷鍵 i:i 是 insert 的縮寫,表示插入
:q——退出
:wq——保存並退出

命令行雖然可能不像我們現在用的圖形化界面那麼直觀,不那麼易於理解,但通過輸入短短的幾行英文,就能實現某個看起來有些複雜的操作,那個感覺有時真的妙不可言,給人一種「我是上帝,正在造物」的錯覺。

寫在最後

搭建這個新的博客,最要感謝的還是我在即刻偶然認識的一位網友 @無聲,他很耐心地幫我解決了大部分問題,如博客服務到服務器、使用 GitHub Actions 實現博客自動化部署,即便他晚上工作到 10 點多才下班,依然很有耐心地幫我解決了遇到的所有問題。

這也讓我看到了一個技術人身上那種不屈不撓、誓要把問題解決的韌勁,他在幫我搭建博客的過程中,同樣會遇到最初不知道怎麼解決的問題,但他沒有因爲這是我的事情就草草地放棄了,反而是愈戰愈勇。

一個人之所以強大,不止是來自於強健的體魄,更重要的可能是擁有一顆「大心臟」,能扛得住各種磨難、不畏難,甚至是主動挑戰困難,這也是我一直以來佩服做技術的人的原因。

原本是想寫一個詳細的搭建 Hexo 博客教程,但寫的時候發現自己還是不夠耐心,就寫了這篇比較籠統的文章,因爲我自己其實也沒有完全理清一些操作的意圖或者命令,有些命令隨着終端的關閉也消失了。。。好吧,這都是我的藉口。

以上,希望有幫助。

參考資料

IIssNan - 開始使用 NexT 主題
老郭種樹 - 怎樣在Mac上SSH和FTP?完美替代XShell是哪個軟件?item2嗎?Royal TSX! 沒有比它更好
千古壹號 - hexo+阿里雲搭建博客網站
Frost's Blog - 使用 GitHub Actions 實現博客自動化部署
知乎 - 如何配置七牛雲圖牀 - OpenWrite
zkqiang - hexo-theme-fluid

本博客使用了優雅的 Fluid 主題,在此對開發這個主題的開發者 zkqiang 表示衷心的感謝。

⬇️ 點擊左下角的「閱讀原文」,可以查看我的博客文章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章