Hexo博客部署-使用github作為保存中轉倉庫

来源:http://www.cnblogs.com/guodq/archive/2017/05/31/6922380.html
-Advertisement-
Play Games

本篇是在VPS上搭建Hexo靜態博客的第一篇博文,寫本篇的目的一是紀念一下,二是作為一個部署文檔保留。 "博客地址" 相關描述 VPS環境是在 "搬瓦工" 上安裝的centos6(x86),1核,512MB,10GB,1000GB/月的配置($19.99/年,可用支付寶支付),主要的功能是搭個梯子, ...


本篇是在VPS上搭建Hexo靜態博客的第一篇博文,寫本篇的目的一是紀念一下,二是作為一個部署文檔保留。

博客地址

相關描述

VPS環境是在搬瓦工上安裝的centos6(x86),1核,512MB,10GB,1000GB/月的配置($19.99/年,可用支付寶支付),主要的功能是搭個梯子,只做梯子好像有點浪費,於是買了個功能變數名稱,搭建了這個博客。

Hexo好早之前有聽說了,尤其喜歡next主題,簡潔大方,考慮到VPS環境的不穩定問題,所以使用github作為博文的中轉及保存的倉庫,利用github的webhooks,當有push操作時直接發送請求,VPS監聽該請求並執行更新操作,這樣即使VPS環境掛了,博文信息還在github上,重新部署一遍就可以了。

具體過程

主要的步驟有:Hexo本地環境搭建、github倉庫創建、webhooks創建、VPS伺服器Hexo下載安裝、VPS監聽和更新腳本。

Hexo本地環境搭建

關於Hexo本地環境搭建比較簡單,直接參考Hexo,這裡只做簡單的記錄:

npm install -g hexo-cli

hexo init hexoblog

cd hexoblog

npm install

# 新增文章
hexo new <title> 

# 生成靜態文件
hexo generate

# 簡寫
hexo g

# 啟動服務,查看博文
hexo server

有關Hexo主題,本人比較喜歡next,最近好像有點樣式的調整,不是特別喜歡,所以使用的還是原有的舊版。

github倉庫創建

github遠程倉庫創建so easy,直接進入github倉庫tab頁面,點擊創建即可。為了提交本地hexo相關文件的方便,我在github上配置了本地環境的ssh公匙信息,以達到不用輸入用戶名密碼即可使用git命令將更改的文件提交到github相關倉庫上。

具體配置過程

首先在本地環境配置生成秘鑰文件,使用git的命令客戶端

# 檢查本地環境是否已有生成的密匙信息
cd ~/.ssh
# 如果沒有.ssh目錄文件,執行下麵命令,直接一路回車
ssh-keygen -t rsa

生成如下結構

.
├── id_rsa
├── id_rsa.pub
└── known_hosts

直接拷貝id_rsa.pub裡面的內容,併在github-setting-SSH and GPG keys中創建SSH key,粘貼內容到Key中,title可不填,保存後title直接顯示所添加主機的主機名。

webhooks創建

鉤子的創建在github上配置非常簡單,進入到倉庫頁面,點擊Settings-Webhooks,直接Add webhooks,這裡只選擇監聽push事件,push事件發生後github將發送請求到VPS監聽的URL(http://host:監聽埠/webhooks/push/123 ) 上,VPS負責相關的更新操作。

VPS伺服器安裝Hexo

與本地安裝一樣,執行
npm install -g hexo-cli
即可(當然首先需要安裝nodejs環境)

VPS監聽

最近一直研究Nodejs,所以在VPS上使用Nodejs啟動監聽服務,非常簡單:

// hexowebhooks.js

var http = require('http')
var exec = require('child_process').exec

http.createServer(function (req, res) {
    if(req.url === '/webhooks/push/123'){
        exec('sh ./deploy.sh');
    }
    res.end()
}).listen(監聽埠)

其中,deploy.sh為更新腳本,用於更新VPS靜態博文,將監聽埠更換成你要監聽埠即可。這裡使用pm2管理監聽服務。

運行

pm2 start hexowebhooks.js

更新腳本

更新腳本使用shell腳本,主要步驟是:

  • 清除靜態文件
  • 刪除db.json文件(不然pull github代碼有衝突)
  • 拉github上的代碼
  • 生成靜態文件

在執行shell之前,需要先將github倉庫代碼pull下來,設置遠程倉庫信息

git clone https://github.com/tonny0812/hexoblog.git
或者
git clone [email protected]:tonny0812/hexoblog.git

cd hexoblog

git remote add hexo "[email protected]:tonny0812/hexoblog.git"

其中,hexo是遠程倉庫地址的別名。

更新腳本:

// deploy.sh

hexo clean
rm -f ./db.json
git pull hexo master
hexo g

然後訪問博客網址即可,這裡使用nginx反向代理,將靜態網頁內容映射到80埠上,由於VPS在美國,所以不需要備案即可訪問80埠,國內的VPS(如阿裡雲)需要備案,查到使用HTTPS監聽443埠不需要備案可以使用,還沒有去折騰。

總結

這裡的關鍵是使用了github的webhooks鉤子機制,可以利用github這種免費的git數據倉庫保存文章信息,VPS直接拉github上的代碼,然後執行更新腳本,發佈文章,由於使用nginx做代理,所以直接執行完更新腳本之後就可以直接訪問新寫的文章了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • mongoose.connect('mongodb://username:[email protected]:27017/qianxunkefu_db')換成mongoose.connect('mongodb://username:[email protected]:27017/qianxunk ...
  • 《jQuery基礎教程(第4版)》是jQuery經典技術教程的*升級版,涵蓋jQuery 1.10.x和jQuery2.0.x。本書前6章以通俗易懂的方式講解了jQuery的核心組件,包括jQuery的選擇符、事件、動畫、DOM操作、Ajax支持等。第7章和第8章介紹了jQueryUI、jQuery ...
  • 這是Webpack+React系列配置過程記錄的第五篇。其他內容請參考: 第一篇:使用webpack、babel、react、antdesign配置單頁面應用開發環境 第二篇:使用react-router實現單頁面應用路由 第三篇:優化單頁面開發環境:webpack與react的運行時打包與熱更新 ...
  • 一、after()和before()方法的區別 after()——其方法是將方法裡面的參數添加到jquery對象後面去; 如:A.after(B)的意思是將B放到A後面去; before()——其方法是將方法裡面的參數添加到jquery對象前面去。 如:A.before(B)的意思是將A放到B前面去 ...
  • 轉載自:http://blog.csdn.net/lun379292733/article/details/8169807/ <script type="text/JavaScript"> /* * 手機號碼格式 * 只允許以13、15、18開頭的號碼 * 如:13012345678、1592922 ...
  • 使用NodeJS & SocketIO & Express & EJS & MongoDB打造多人線上聊天室。 ...
  • IE6下有不少奇怪的Bug,今天就碰到一個,float:right換行bug,情況是併列的幾個塊級元素如div和span,一些設置了左浮動一些設置右浮動,一行的寬度足夠放下所有的塊級元素,但此時ie6則顯示右浮動的其中一塊換行了,下麵給出實例和解決方法: 實例說明下:html結構如下 <div> < ...
  • 介紹 sChart.js 作為一個小型簡單的圖表庫,沒有過多的圖表類型,只包含了柱狀圖、折線圖、餅狀圖和環形圖四種基本的圖表。麻雀雖小,五臟俱全。sChart.js 基本可以滿足這四種圖表的需求。而它的小,體現在它的體積上,代碼只有 8kb,如果經過伺服器的Gzip壓縮,那就更小了,因此不用擔心造成 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...