摘要:首發(fā)于樊浩柏科學(xué)院之前一直在使用推薦的發(fā)布方案,缺點是本地依賴環(huán)境,無法隨時隨地地更新博客。為了擺脫環(huán)境約束進(jìn)而高效寫作,有了下述的發(fā)布方案。我的寫作環(huán)境為,博客發(fā)布在阿里云的上,文章托管在。
首發(fā)于 樊浩柏科學(xué)院
之前一直在使用 Hexo 推薦的發(fā)布方案,缺點是本地依賴 Hexo 環(huán)境,無法隨時隨地地更新博客。為了擺脫 Hexo 環(huán)境約束進(jìn)而高效寫作,有了下述的發(fā)布方案。
本文的發(fā)布方案中,Git 倉庫只是托管 md 文件,通過 Webhook 通知服務(wù)器拉取 md 文件,然后執(zhí)行構(gòu)建靜態(tài)文件操作,完成一個發(fā)布過程。
我的寫作環(huán)境為 Typora(Win10),博客發(fā)布在阿里云的 ECS(CentOS)上,文章托管在 GitHub。
需求迭代隨著時間成本的增高,只能利用碎片時間來進(jìn)行寫作。因此,我的寫作場景變成了這樣:
習(xí)慣使用 MarkDown 寫原稿,有 MarkDown 編輯器就行;
寫作場地不限定,有電腦就行;
寫作時間不確定,有靈感就寫;
新的問題之前(包括 Hexo 推薦)的發(fā)布方案,都是先本地編寫 MarkDown 源文件,然后本地構(gòu)建靜態(tài)文件,最后同步靜態(tài)文件到服務(wù)器。發(fā)布流程圖如下:
顯而易見,若繼續(xù)使用之前的發(fā)布方案,那么每當(dāng)更換寫作場地時都需要安裝 Hexo 環(huán)境,寫作場地和時間都受到限制,不滿足需求。
新的方案問題主要是,本地受制于構(gòu)建靜態(tài)文件時需要的 Hexo 環(huán)境,那么是否可以將構(gòu)建靜態(tài)文件操作放到服務(wù)器端?
發(fā)布流程首先,看下新方案的發(fā)布流程圖:
如流程圖所示,整個發(fā)布系統(tǒng)共涉及到 3 個環(huán)境,分別為本地(寫作)、Git 倉庫(托管 md 源文件)、服務(wù)器(Web 服務(wù))環(huán)境。在服務(wù)器環(huán)境構(gòu)建靜態(tài)文件,因此只需要在服務(wù)器端安裝 Hexo 環(huán)境。
一個完整的發(fā)布流程包含 3 個部分:
流程 ① :寫作流程;
流程 ② :發(fā)布流程;
流程 ③ :構(gòu)建流程;
寫作流程采用按分支開發(fā)策略,當(dāng)寫作完成后,只需要 push 修改到對應(yīng)分支即可。只要有 MarkDown 編輯器,以及任何文本編輯器,甚至 馬克飛象 都可以隨時隨地寫作。
當(dāng)然,你可能說還需要 Git 環(huán)境呀?好吧,如果你是一名合格的 Coder,竟然沒有 Git,你知道該干嘛了!再說沒有 Git 環(huán)境,還可以通過 GitHub 來完成寫作。
發(fā)布流程采用 master 發(fā)布策略,當(dāng)需要發(fā)布時,需要將對應(yīng)開發(fā)分支 merge 到 master 分支,然后push master分支,即可實現(xiàn)發(fā)布。
構(gòu)建流程這里使用到 Webhook 機(jī)制,觸發(fā)服務(wù)器執(zhí)行構(gòu)建操作,構(gòu)建腳本見 Webhook 腳本 部分。
當(dāng)流程 ① 和 ② 結(jié)束后,Git 倉庫都會向服務(wù)器發(fā)起一次 HTTP 請求,記錄如下:
當(dāng)收到構(gòu)建請求后,執(zhí)行構(gòu)建操作。構(gòu)建流程圖如下:
首先檢查當(dāng)前變更分支,只有為 master 分支時,執(zhí)行 pull 操作拉取 md 文件更新,然后再執(zhí)行 hexo g完成靜態(tài)文件的構(gòu)建。
Webhook腳本Webhook 腳本使用 PHP 實現(xiàn),代碼如下:
主流程方法如下:
public function run() { //校驗token if ($this->checkToken()) { echo "ok"; } else { echo "error"; } fastcgi_finish_request(); //返回響應(yīng) if ($this->checkBranch()) { //校驗分支 $this->exec(); //執(zhí)行操作邏輯 } }
這里使用 shell 腳本實現(xiàn)構(gòu)建所需的所有操作,方便擴(kuò)展。執(zhí)行操作方法如下:
public function exec() { //shell文件 $path = $this->config["bash_path"]; $result = shell_exec("sh $path 2>&1"); $this->accessLog($result); return $result; }
構(gòu)建 shell 腳本如下:
#!/usr/bin/env bash export NODE_HOME=/usr/local/node export PATH=$NODE_HOME/bin:$PATH pwd="/data/html/hexo" cd $pwd/source git pull cd $pwd $pwd/node_modules/hexo/bin/hexo g總結(jié)
新發(fā)布方案與之前方案的區(qū)別是:前者只需本地編寫 md 文件,博客服務(wù)器構(gòu)建靜態(tài)文件;后者本地編寫 md 文件后,需要本地構(gòu)建靜態(tài)文件,然后博客服務(wù)器只同步靜態(tài)文件。
當(dāng)然,有很多辦法可以解決當(dāng)前問題,比如可以使用 持續(xù)集成。本文只是提供一個發(fā)布思路,在項目的生成環(huán)境中,我們也很容易應(yīng)用上這種發(fā)布思路,開發(fā)出自己的發(fā)布系統(tǒng)。
相關(guān)文章 ?
啟用Hexo開源博客系統(tǒng)(2017-03-01)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/11988.html
摘要:首發(fā)于樊浩柏科學(xué)院之前一直在使用推薦的發(fā)布方案,缺點是本地依賴環(huán)境,無法隨時隨地地更新博客。為了擺脫環(huán)境約束進(jìn)而高效寫作,有了下述的發(fā)布方案。我的寫作環(huán)境為,博客發(fā)布在阿里云的上,文章托管在。 首發(fā)于 樊浩柏科學(xué)院 之前一直在使用 Hexo 推薦的發(fā)布方案,缺點是本地依賴 Hexo 環(huán)境,無法隨時隨地地更新博客。為了擺脫 Hexo 環(huán)境約束進(jìn)而高效寫作,有了下述的發(fā)布方案。 show...
摘要:配置觸發(fā)方式一般會得到這么個語雀配置配置一個倉庫的可以選擇所有更新觸發(fā)或者主動觸發(fā),主動觸發(fā)的意思即發(fā)布需要勾選一個選項才會觸發(fā)。 Hexo + Github + 語雀 + yuque-hexo +travis-ci+severless 打造全自動持續(xù)集成個人博客,云端寫作,自動部署,完美體驗~ 一、Hexo+Github 的痛點 1.為啥要用hexo+github? 作為一個程序猿,...
摘要:配置觸發(fā)方式一般會得到這么個語雀配置配置一個倉庫的可以選擇所有更新觸發(fā)或者主動觸發(fā),主動觸發(fā)的意思即發(fā)布需要勾選一個選項才會觸發(fā)。 Hexo + Github + 語雀 + yuque-hexo +travis-ci+severless 打造全自動持續(xù)集成個人博客,云端寫作,自動部署,完美體驗~ 一、Hexo+Github 的痛點 1.為啥要用hexo+github? 作為一個程序猿,...
摘要:為什么不選擇其他方案在文章的開頭我有提到,我曾經(jīng)嘗試過用,,自行搭建服務(wù)等途徑去嘗試維護(hù)博客。但這些嘗試的結(jié)果均不合我意,最后無疾而終。我們使用作為博客平臺,也就是相當(dāng)于管理后端。showImg(https://user-gold-cdn.xitu.io/2019/5/22/16adf79473dbdf59); 對于愛寫東西的人來說,挑一個合適的博客平臺是非常重要的。而作為一個 Web 開發(fā)...
摘要:為什么不選擇其他方案在文章的開頭我有提到,我曾經(jīng)嘗試過用,,自行搭建服務(wù)等途徑去嘗試維護(hù)博客。但這些嘗試的結(jié)果均不合我意,最后無疾而終。我們使用作為博客平臺,也就是相當(dāng)于管理后端。 showImg(https://segmentfault.com/img/remote/1460000019265125?w=700&h=420); 對于愛寫東西的人來說,挑一個合適的博客平臺是非常重要的。...
閱讀 1231·2021-11-24 11:16
閱讀 3456·2021-11-15 11:38
閱讀 1981·2021-10-20 13:47
閱讀 582·2021-09-29 09:35
閱讀 2230·2021-09-22 15:17
閱讀 1049·2021-09-07 09:59
閱讀 3411·2019-08-30 13:21
閱讀 2929·2019-08-30 12:47