Hexo學習筆記 —— 多端同步、Github Pages部署、更改主題、評論功能(四)

關於多端同步依然還有一些東西可以略微分享。我們可以使用Github的webhook功能,對儲存源碼和文章md文件的repo進行pull操作后,自動將網頁輸出然後push到博客端。

講實話,這玩意真的挺麻煩,我折騰了特別久,結果還是最最最簡單的辦法:http訪問就推送,最爲方便。

在VPS上安裝hexo的運行環境

這方面已經在第一篇文章詳細講過,無非就是安裝nodejs, hexo-cli等等。

這裏不重複闡述

給VPS設置在Github上的通用SSH授權

輸入以下代碼創建一個ssh key

1
ssh-keygen -t rsa -C "[email protected]"

然後複製~/.ssh/id_rsa.pub文件内的所有内容,打開github的setting中的SSH and GPG keys

添加SSH Key即可

在VPS上克隆自己創建的庫

在第二篇文章中我們創建了一個同步庫,裏面存放著hexo的源碼,用來進行多端同步。現在將他克隆到vps上

1
2
3
4
5
6
mkdir auto
cd auto
git clone [email protected]:yourname/blog.git
cd blog
npm install
git pull

然後安裝pm2管理後臺應用

1
npm install -g pm2

之後,在本地創建一個deploy.js,用nodejs寫一個監聽http請求的脚本

1
2
3
4
5
6
7
8
9
10
11
var http = require('http');
var port = 3000; //監聽端口
var command = 'sh ./deploy.sh' //運行指令

http.createServer(function(req, res){
res.writeHead(200, {'content-type': 'text/plain'});
deploy = require('child_process').exec(command,{},function(err,stdout,stderr){
console.log('deploy.')
});
res.end('It works');
}).listen(port);

再創建一個deploy.sh進行pullhexo g -d操作。

1
2
3
4
#!/bin/bash
git pull
hexo clean
hexo g -d

這時候監聽服務應該可以運作了。先在別的設備更改一下hexo源碼並push到github,然後試著運行以下代碼。

1
node ./deploy.js

訪問vps的http://ip:3000。若你的ip為100.100.100.100,則訪問http://100.100.100.100:3000,不出意外網頁會返回It works,vps控制臺會輸出deploy.

按下Ctrl+C關閉node,輸入pm2 start deploy.js將服務運行在後臺,然後開始配置github

Github端的配置

進入你的同步代碼倉庫,點擊上方的Setting。

然後點擊左方的Webhooks,添加新的webhook

進入后,

  1. 在Payload URL中填入你剛剛訪問的網址(包括端口
  2. 直接點擊Add webhook。

然後使用另一臺機器,更改一下你的文章,將blog文件夾更新到github,觀察博客頁面有沒有變化。