博客域名沒有備案,而自己有香港的伺服器,可以用來同步 Github 倉庫的靜態文件。
這樣就可以讓 Gridea 的博客內容,同步到 Github 後,再被寶塔面板的 webhook 拉取到本地目錄。
域名國外解析到 Github,國內解析到自己的伺服器,實現網站的訪問加速。
首先伺服器上需要已經安裝了寶塔面板,我習慣用這個面板,其他方式安裝 webhook 也沒問題。
寶塔面板安裝 webhook 插件後,創建一個 hook,添加下面的腳本,只需要修改 git 地址,其他的不用改。
#!/bin/bash
echo ""
#輸出當前時間
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判斷寶塔WebHook參數是否存在
if [ ! -n "$1" ]; then
echo "param參數錯誤"
echo "End"
exit
fi
#git項目路徑
gitPath="/www/wwwroot/$1"
#git 網址
gitHttp="https://github.com/xxxxx.git" #只需要修改成倉庫的git地址,其他地方默認不修改
echo "Web站點路徑:$gitPath"
#判斷項目路徑是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判斷是否存在git目錄
if [ ! -d ".git" ]; then
echo "在該目錄下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo rm -rf gittemp
fi
echo "拉取最新的項目文件"
sudo git reset --hard origin/master
sudo git pull
echo "設置目錄權限"
sudo chown -R www:www $gitPath
echo "End"
exit
else
echo "該項目路徑不存在"
echo "新建項目目錄"
mkdir $gitPath
cd $gitPath
#判斷是否存在git目錄
if [ ! -d ".git" ]; then
echo "在該目錄下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo rm -rf gittemp
fi
echo "拉取最新的項目文件"
sudo git reset --hard origin/master
sudo git pull
echo "設置目錄權限"
sudo chown -R www:www $gitPath
echo "End"
exit
fi
保存後,點擊查看密鑰,如下:
寶塔WebHook使用方法:
GET/POST:
http://伺服器ip:端口/hook?access_key=HOOK密鑰¶m=aaa
@param access_key string HOOK密鑰
@param param string 自定義參數(在hook腳本中使用$1接收)
== 注意粘貼前把網址最後的 aaa 換成你的寶塔對應靜態博客的網站的目錄名 ==
例如我的網站路徑 wwwroot/blog,就把 ==aaa== 替換成 ==blog==
如果不替換的話,會在你的伺服器根目錄創建一個 aaa 目錄,你把站點目錄修改為 aaa 目錄,也可以。
複製上面自動生成的鏈接,粘貼到 Github 的 webhook 設置
內容類型選擇 ==json==,secret 就是 webhook 的一串密鑰,複製過去粘貼,其他默認,保存提交。
然後去 Gridea 提交更新博客,再看 Webhook 的日誌,再檢查目錄下有沒有文件就能看到是否同步成功了。
當 Github 的版本庫代碼更新時,通過 git 的 webhook(git web 鉤子)觸發 push 事件。用戶提交代碼(git push)伺服器的寶塔 webhook 插件拉取當前 git 最新代碼(git pull)
== 注意:== 阿里雲國內伺服器使用 webhook 拉取 github 倉庫經常失敗。