Caddy + Hexo 實現自動化部署

之前博客使用在 VPS 設置 git server 來解決 Hexo 博客發佈到 VPS 問題,見文章 使用 VPS 讓 Hexo 博客快的飛起,但依然不夠方便:

  1. 配置繁瑣,需要在 VPS 設置 git 賬戶,還要做好與本地 SSH 通信
  2. 不夠自動,每次發佈時需要手動 git push 到 VPS 的倉庫

用上 Caddy 後,發現了個令人驚喜的插件 http.git, 可以輕鬆通過 GItHub webhooks 實現監聽 GitHub 倉庫 git push 實現自動更新 VPS 內容,甚至還能寫其他的部署命令。使用此配置方案,比原方案更加簡單,也更省心。以下爲配置步驟。


一、準備工作

  1. 首先要有臺 VPS 服務器,並且安裝好 Caddy Server,並且正常運行。教程參考:用 Caddy 替代 Nginx 邁入 HTTPS 時代
  2. 有 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 "[email protected]" # 生成 ssh key 一路回車即可
tail /.ssh/id_rsa_pub # 輸出 public key,然後複製 key 內容

四、配置 GitHub webhooks

  1. 訪問 https://github.com/settings/keys 將 id_rsa_pub 添加到 SHH key。

  2. 進入倉庫,進入 Setting/Webhooks ,點擊 Add webhook

  3. Payload URL 填寫 網址/webhooks ,Secret 與 Caddyfile 中 password 保持一致。Content type 選 application/json 其他保持默認,點擊完成。

五、重啓 Caddy Server

進入 VPS,執行

sudo systemctl restart caddy.service # 重啓
sudo systemctl status caddy.service # 查看

會看到,第一行自動從 master pull 成功。以後每次提交,Caddy 便會自動拉取代碼 到 /var/www/so.wenboz.com # 網站存放目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章