前言
很多平臺都能寫博客還有創作激勵,為什么我又要搭一個?為什么這次要選擇用Hexo框架?
對應的原因是流量自由和省錢,第一個,很多平臺能寫但不是都有收益,而且平臺有自身的規則,比如會屏蔽一些推廣類信息。如果我哪天做了一產品,是沒辦法直接用平臺博客的方式硬推的,至少放碼和鏈接不行。第二個用Hexo搭到GitHub上,我可以不用買服務器,畢竟現在也還沒有想法要做一個什么樣的東西。
總之,有個獨立博客,相比平臺博客在內容約束上更自由。有想法了就發出來,做了游戲什么的就放出來,md的文章以后要存儲備份可以轉word,更方便在副業的路上輕裝探索。
Hexo介紹
Hexo是一款基于Node.js的開源靜態博客框架,用于快速、簡單且高效地搭建個人或團隊的靜態博客網站。說白了他是一個靜態網站生成器,我們新增文章只需要編輯md文件,通過運行命令再生成像html的靜態文件。其實我挺早聽過Hexo,但一直沒用,直到我cms搭的博客別人掛馬后。我關閉網站全面使用平臺博客,但經種種原因,我又萌生了建獨立博客的想法,并且這次打算走長期路線,第一步先記錄上次Hexo搭建過程僅供參考。
流程
-
本地構建Hexo
-
配置 GitHub
-
代碼上傳與備份
-
個性化域名綁定
環境搭建
Hexo的博客,不管是頁面的添加還是構建都是通過npm命令,所以最基本要把Node安裝了。項目部署和部署的地方又在GitHub,所以Git也要提前裝好。這里強調一下,運行Hexo命令最好在Git的GUI窗口里,不要用Windows的cmd,坑多,關于Node和Git環境安裝就跳過了。
構建Hexo
安裝Hexo
npm install -g hexo
檢驗Hexo是否安裝
hexo -v
項目構建
# 創建一blog項目
hexo init blog
?
# 進入項目
cd blog
?
# 安裝依賴包
npm install
其他操作
#右鍵 Git Bush,用戶項目自動化部署
npm install hexo-deployer-git --save
?
hexo _config.yml中文亂碼問題
用Notepad++等編輯器打開,選擇 “編碼” -> “轉為UTF-8編碼”
項目預覽
# 清理舊的靜態文件
hexo clean
?
# 生成靜態文件
hexo g
?
# 運行預覽項目
hexo s
配置 GitHub
這里雖然只是寫的配置GitHub,其實包含了本地用Git生成SSH密鑰對,和GitHub上公鑰添加,提交Token的獲取,以及Pages服務的開啟。還有倉庫名的建立也有講究,下面就從這些點開始逐一展開。
建立倉庫
倉庫名是個什么講究法呢?就是格式要保持 “github賬號名.github.io”, 比如我的賬戶名是“z11r00”,那么倉庫就要建成 “z11r00.github.io”。如果不這樣,最后等用Hexo部署完畢后,初始的域名可能就是 “github賬號名.github.io/倉庫名”,會在后面多了一個路徑,而且hexo的config沒有設置好連css都加載不出來。
設置SSH
GitHub 的 SSH(Secure Shell)主要用于安全地連接到 GitHub 服務器,其實就是平時Git常用的克隆、拉取、提交、推送等操作。而好處除了安全外,就是提交代碼不用每次都要輸入賬號密碼。如果安裝了hexo-deployer-git的話,只需一個命令就可以完成項目從靜態構建到自動部署。
生成SSH密鑰對
打開Git面板,輸入 “ssh-keygen -t rsa -C GitHub賬戶”, 這里的GitHUb賬戶是你登陸GitHub的郵箱等方式。生成后找到目錄下的id_rsa.pub(公鑰),用編輯器打開并復制。
GitHub中添加SSH公鑰
登陸GitHub網站,點擊個人頭像,找到 “Settings”->"SSH and GPG keys"后,點擊 “New SSH keys”,最后將前面復制的很長的公鑰字符串粘貼到Key文本框中。
驗證設備是否可連接
通過 “ssh -T git@github.com” 命令,驗證當前的設備是否可以連接。
獲取提交的token
雖然說SSH連接不用一直登陸,但是初次還要要的。而且不光要輸入賬號密碼還需要一個提交用的Token,沒有這個,運行hexo d一直提示Logon failed, 這個后面會集中列出報錯事故的。
獲取token,還是進入“Settins”,找到 “Developer settings”->“Personal access tokens”->“Tokens(classic)”, 然后設置備注和過期時間。最主要的權限要勾選 “workflow”、“gist”、“user”,點擊 “Generate”按鈕,生成的"ghp_"為前綴的就是token了,復制并保存下來。
項目部署
項目部署的其實是將Hexo生成的靜態文件提交到github上,后期添加文章也就是markdown文件,繼續重新生成,重新部署。而項目的代碼卻在本地,雖然代碼量不多,但是里面的package.json和_config.yml,以及用到的主題包,還是有必要保存一下。所以我這里的方法是,靜態部署項目放在一個公有倉庫,而項目源代碼單獨提交到一私有倉庫下。
修改配置
打開項目根目錄下的_config.yml,主要添加倉庫的地址,其他的配置下篇再介紹。因為hexo很多玩法更多的是配置和各種依賴,比如可以添加統計、留言、修改主題、站內搜索、甚至廣告位等等。
靜態文件生成
通過 “hexo clean” 先清理,然后執行 “hexo g” 重新生成。
開始部署
通過命令 “hexo d”,開始部署項目,如果第一次運行,就需要前面提到的輸入github賬號密碼。確認Login后會再次彈一個窗口就是輸入Token了,最后完成部署。這里需要注意一下的是,最好用Git面板運行命令,如果是cmd很有可能第二次的窗無法彈出,親測坑點。
訪問測試
部署完成就進入倉庫下,除了查看提交的代碼外,打開倉庫下的 “Settings”,找到 “Pages”。
個性化域名綁定
有一個git域名其實也不錯,為什么還要買一個去綁定呢?一個是我本身這域名就空在這里,第二個是可以給博客增加一點IP點,第三個是更利于某度的爬取。我看其他博主說國內一些搜索引擎屏蔽了github的pages博客,當然我沒有驗證過,下次也要做SEO相關的時候可以測試一下。
獲取IP地址
要想知道當前項目部署的獨立IP地址,只需要ping一下github分配的域名,比如我直接 “ping z11r00.github.io”就可以看到了。
域名解析
進入購買的域名控制臺,給自己的域名添加兩個解析,一個指向舊域名,一個解析到前面獲取到的IP地址。
項目綁定域名
進入倉庫的“Settings”下,點擊 “Pages”,找到 “Custom domain”,將自己的域名粘貼進文本框保存。然后在項目的“source” 新建CNAME(沒有后綴), 打開文件粘貼域名,比如我的zerofc.cn,最后再重新部署項目訪問。
報錯匯總
1.extends includes/layout.pug block content include ./includes/mixins/post-ui.pug #recent-posts.recent-posts +postUI include includes/pagination.pug 項目啟動后報的這個,是因為缺失了一些依賴包,上面的是沒有 pug 以及 stylus 的渲染器,解決方法就是安裝對應的依賴。
npm install hexo-renderer-pug hexo-renderer-stylus --save
2.運行后打開hexo博客上的中文亂碼 解決方法是用Notepad++等編輯器打開,選擇 “編碼” -> “轉為UTF-8編碼”。
3.unable to access ''xxxxxx": Empty reply from server 出現這個報錯的是項目初次部署時,原因就是沒有設置Token,解決方法就是前面“配置 GitHub”的“提交Token獲取”部分。
4.unable to access 'xxxxxxxxxx': The requested URL returned error: 403 出現這個一般就是間接性打開GitHub網站,畢竟是國外網站,多刷新幾下,多請求幾下就可以了。
寫在后面
既然博客已經搭起來了,后面還有分兩步走,湊成三部曲。第一個是Hexo的各種配置和插件的玩法,第二個是Hexo博客SEO相關的內容,如果我那個小游戲軟著下來了,可能博客的事情就會延后一點。