美好時光
之前博客使用在 VPS 設置 git server 來解決 Hexo 博客發布到 VPS 問題,見文章 使用 VPS 讓 Hexo 博客快的飛起,但依然不夠方便:
- 配置繁瑣,需要在 VPS 設置 git 賬戶,還要做好與本地 SSH 通信
- 不夠自動,每次發布時需要手動
git push
到 VPS 的倉庫
用上 Caddy 后,發現了個令人驚喜的插件 http.git
, 可以輕松通過 GItHub webhooks 實現監聽 GitHub 倉庫 git push
實現自動更新 VPS 內容,甚至還能寫其他的部署命令。使用此配置方案,比原方案更加簡單,也更省心。以下為配置步驟。
一、準備工作
- 首先要有臺 VPS 服務器,并且安裝好 Caddy Server,并且正常運行。教程參考:用 Caddy 替代 Nginx 邁入 HTTPS 時代
- 有 GitHub 倉庫托管的 Hexo 博客。教程參考:Hexo + GitHub 搭建個人博客及反思
二、配置 Caddyfile
如果你參考了第一步的教程,那么 Caddy 是自動安裝了 http.git 插件的,那么我們只需要更新 Caddyfile。
vim /etc/caddy/Caddyfile # 使用 Vim 編輯器編輯 Caddyfile
以我的網站為例子,關注 git 里的配置
https://so.wenboz.com:443 {
root /var/www/so.wenboz.com
gzip
log /var/log/caddy/so.wenboz.com.log
tls /var/www/certificates/ca.pem /var/www/certificates/key.pem
git {
repo https://github.com/boboidream/so.wenboz.com.git # 倉庫地址
path /var/www/so.wenboz.com # 網站存放目錄
hook /webhooks password # password 為自定義密碼
key /.ssh/id_rsa # ssh private key 地址
}
}
三、 VPS 上生成 ssh key
mkdir /.ssh # 創建 /.ssh 文件夾
ssh-keygen -t rsa -f /.ssh/id_rsa -C "yourmail@xxx.com" # 生成 ssh key 一路回車即可
tail /.ssh/id_rsa_pub # 輸出 public key,然后復制 key 內容
四、配置 GitHub webhooks
訪問 https://github.com/settings/keys 將 id_rsa_pub 添加到 SHH key。
-
進入倉庫,進入 Setting/Webhooks ,點擊
Add webhook
。
創建 webhook -
Payload URL 填寫
網址/webhooks
,Secret 與 Caddyfile 中 password 保持一致。Content type 選application/json
其他保持默認,點擊完成。
配置 webhook
五、重啟 Caddy Server
進入 VPS,執行
sudo systemctl restart caddy.service # 重啟
sudo systemctl status caddy.service # 查看
會看到,第一行自動從 master pull 成功。以后每次提交,Caddy 便會自動拉取代碼 到 /var/www/so.wenboz.com # 網站存放目錄
。