成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

我的博客發(fā)布上線方案 — Hexo

yangrd / 2202人閱讀

摘要:首發(fā)于樊浩柏科學(xué)院之前一直在使用推薦的發(fā)布方案,缺點(diǎn)是本地依賴環(huán)境,無法隨時(shí)隨地地更新博客。為了擺脫環(huán)境約束進(jìn)而高效寫作,有了下述的發(fā)布方案。我的寫作環(huán)境為,博客發(fā)布在阿里云的上,文章托管在。

首發(fā)于 樊浩柏科學(xué)院

之前一直在使用 Hexo 推薦的發(fā)布方案,缺點(diǎn)是本地依賴 Hexo 環(huán)境,無法隨時(shí)隨地地更新博客。為了擺脫 Hexo 環(huán)境約束進(jìn)而高效寫作,有了下述的發(fā)布方案。

本文的發(fā)布方案中,Git 倉(cāng)庫(kù)只是托管 md 文件,通過 Webhook 通知服務(wù)器拉取 md 文件,然后執(zhí)行構(gòu)建靜態(tài)文件操作,完成一個(gè)發(fā)布過程。

我的寫作環(huán)境為 Typora(Win10),博客發(fā)布在阿里云的 ECS(CentOS)上,文章托管在 GitHub。

需求迭代

隨著時(shí)間成本的增高,只能利用碎片時(shí)間來進(jìn)行寫作。因此,我的寫作場(chǎng)景變成了這樣:

習(xí)慣使用 MarkDown 寫原稿,有 MarkDown 編輯器就行;

寫作場(chǎng)地不限定,有電腦就行;

寫作時(shí)間不確定,有靈感就寫;

新的問題

之前(包括 Hexo 推薦)的發(fā)布方案,都是先本地編寫 MarkDown 源文件,然后本地構(gòu)建靜態(tài)文件,最后同步靜態(tài)文件到服務(wù)器。發(fā)布流程圖如下:

顯而易見,若繼續(xù)使用之前的發(fā)布方案,那么每當(dāng)更換寫作場(chǎng)地時(shí)都需要安裝 Hexo 環(huán)境,寫作場(chǎng)地和時(shí)間都受到限制,不滿足需求。

新的方案

問題主要是,本地受制于構(gòu)建靜態(tài)文件時(shí)需要的 Hexo 環(huán)境,那么是否可以將構(gòu)建靜態(tài)文件操作放到服務(wù)器端?

發(fā)布流程

首先,看下新方案的發(fā)布流程圖:

如流程圖所示,整個(gè)發(fā)布系統(tǒng)共涉及到 3 個(gè)環(huán)境,分別為本地(寫作)、Git 倉(cāng)庫(kù)(托管 md 源文件)、服務(wù)器(Web 服務(wù))環(huán)境。在服務(wù)器環(huán)境構(gòu)建靜態(tài)文件,因此只需要在服務(wù)器端安裝 Hexo 環(huán)境。

一個(gè)完整的發(fā)布流程包含 3 個(gè)部分:

流程 ① :寫作流程;

流程 ② :發(fā)布流程;

流程 ③ :構(gòu)建流程;

寫作流程

采用按分支開發(fā)策略,當(dāng)寫作完成后,只需要 push 修改到對(duì)應(yīng)分支即可。只要有 MarkDown 編輯器,以及任何文本編輯器,甚至 馬克飛象 都可以隨時(shí)隨地寫作。

當(dāng)然,你可能說還需要 Git 環(huán)境呀?好吧,如果你是一名合格的 Coder,竟然沒有 Git,你知道該干嘛了!再說沒有 Git 環(huán)境,還可以通過 GitHub 來完成寫作。

發(fā)布流程

采用 master 發(fā)布策略,當(dāng)需要發(fā)布時(shí),需要將對(duì)應(yīng)開發(fā)分支 merge 到 master 分支,然后push master分支,即可實(shí)現(xiàn)發(fā)布。

構(gòu)建流程

這里使用到 Webhook 機(jī)制,觸發(fā)服務(wù)器執(zhí)行構(gòu)建操作,構(gòu)建腳本見 Webhook 腳本 部分。

當(dāng)流程 ① 和 ② 結(jié)束后,Git 倉(cāng)庫(kù)都會(huì)向服務(wù)器發(fā)起一次 HTTP 請(qǐng)求,記錄如下:

當(dāng)收到構(gòu)建請(qǐng)求后,執(zhí)行構(gòu)建操作。構(gòu)建流程圖如下:

首先檢查當(dāng)前變更分支,只有為 master 分支時(shí),執(zhí)行 pull 操作拉取 md 文件更新,然后再執(zhí)行 hexo g完成靜態(tài)文件的構(gòu)建。

Webhook腳本

Webhook 腳本使用 PHP 實(shí)現(xiàn),代碼如下:

主流程方法如下:

public function run()
{
    //校驗(yàn)token
    if ($this->checkToken()) {
        echo "ok";
    } else {
        echo "error";
    }
    fastcgi_finish_request();       //返回響應(yīng)
    if ($this->checkBranch()) {     //校驗(yàn)分支
        $this->exec();              //執(zhí)行操作邏輯
    }
}

這里使用 shell 腳本實(shí)現(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ù)集成。本文只是提供一個(gè)發(fā)布思路,在項(xiàng)目的生成環(huán)境中,我們也很容易應(yīng)用上這種發(fā)布思路,開發(fā)出自己的發(fā)布系統(tǒng)。

相關(guān)文章 ?

啟用Hexo開源博客系統(tǒng)(2017-03-01)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31102.html

相關(guān)文章

  • 我的博客發(fā)布上線方案Hexo

    摘要:首發(fā)于樊浩柏科學(xué)院之前一直在使用推薦的發(fā)布方案,缺點(diǎn)是本地依賴環(huán)境,無法隨時(shí)隨地地更新博客。為了擺脫環(huán)境約束進(jìn)而高效寫作,有了下述的發(fā)布方案。我的寫作環(huán)境為,博客發(fā)布在阿里云的上,文章托管在。 首發(fā)于 樊浩柏科學(xué)院 之前一直在使用 Hexo 推薦的發(fā)布方案,缺點(diǎn)是本地依賴 Hexo 環(huán)境,無法隨時(shí)隨地地更新博客。為了擺脫 Hexo 環(huán)境約束進(jìn)而高效寫作,有了下述的發(fā)布方案。 show...

    Michael_Lin 評(píng)論0 收藏0
  • Hexo 博客終極玩法:云端寫作,自動(dòng)部署

    摘要:配置觸發(fā)方式一般會(huì)得到這么個(gè)語雀配置配置一個(gè)倉(cāng)庫(kù)的可以選擇所有更新觸發(fā)或者主動(dòng)觸發(fā),主動(dòng)觸發(fā)的意思即發(fā)布需要勾選一個(gè)選項(xiàng)才會(huì)觸發(fā)。 Hexo + Github + 語雀 + yuque-hexo +travis-ci+severless 打造全自動(dòng)持續(xù)集成個(gè)人博客,云端寫作,自動(dòng)部署,完美體驗(yàn)~ 一、Hexo+Github 的痛點(diǎn) 1.為啥要用hexo+github? 作為一個(gè)程序猿,...

    AlphaWallet 評(píng)論0 收藏0
  • Hexo 博客終極玩法:云端寫作,自動(dòng)部署

    摘要:配置觸發(fā)方式一般會(huì)得到這么個(gè)語雀配置配置一個(gè)倉(cāng)庫(kù)的可以選擇所有更新觸發(fā)或者主動(dòng)觸發(fā),主動(dòng)觸發(fā)的意思即發(fā)布需要勾選一個(gè)選項(xiàng)才會(huì)觸發(fā)。 Hexo + Github + 語雀 + yuque-hexo +travis-ci+severless 打造全自動(dòng)持續(xù)集成個(gè)人博客,云端寫作,自動(dòng)部署,完美體驗(yàn)~ 一、Hexo+Github 的痛點(diǎn) 1.為啥要用hexo+github? 作為一個(gè)程序猿,...

    EsgynChina 評(píng)論0 收藏0
  • 為什么我選擇用 Github issues 來寫博客

    摘要:為什么不選擇其他方案在文章的開頭我有提到,我曾經(jīng)嘗試過用,,自行搭建服務(wù)等途徑去嘗試維護(hù)博客。但這些嘗試的結(jié)果均不合我意,最后無疾而終。我們使用作為博客平臺(tái),也就是相當(dāng)于管理后端。showImg(https://user-gold-cdn.xitu.io/2019/5/22/16adf79473dbdf59); 對(duì)于愛寫東西的人來說,挑一個(gè)合適的博客平臺(tái)是非常重要的。而作為一個(gè) Web 開發(fā)...

    gnehc 評(píng)論0 收藏0
  • 為什么我選擇用 Github issues 來寫博客

    摘要:為什么不選擇其他方案在文章的開頭我有提到,我曾經(jīng)嘗試過用,,自行搭建服務(wù)等途徑去嘗試維護(hù)博客。但這些嘗試的結(jié)果均不合我意,最后無疾而終。我們使用作為博客平臺(tái),也就是相當(dāng)于管理后端。 showImg(https://segmentfault.com/img/remote/1460000019265125?w=700&h=420); 對(duì)于愛寫東西的人來說,挑一個(gè)合適的博客平臺(tái)是非常重要的。...

    Scliang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<