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