遷移起因
原來的博客
其實從很久以前就想要寫博客,但總是斷斷續續的,一直都沒有認真地開始,
最終,決定使用靜態博客工具作為自己博客的承載體,在多種工具的比較下,最終選擇了 Hugo 并部署到 Github Pages 上,并同時部署到騰訊云的 CloudBase 以供國內用戶訪問,
自此,2022 年 5 月 15 日,翔仔的個人博客終于部署到公網上了,
出現了變故
但是,才經過大概 2 個月的時間,收到了騰訊云發送的 CloudBase 計費模式變更的訊息,

簡單來說,CloudBase 出了一個最低消費,像我這樣的,原本從幾毛錢的無感消費要升級到幾十塊,這個變動對于我來說還是挺大的,
思路變更
此處要趕爺,爺自有去處,
突然想到,曾經自己用 299 買的云服務器一直荒廢沒有使用,畢竟還有好幾個月的期限呢,一定要利用起來,
就決定是你了,我的博客暫時先放置在云服務器上,順便了解一下如何部署靜態博客到云服務器上,
第一版方案
不可否認,現在流行的自動化部署真的是用一次就愛上了,尤其是,還有 Github Action 這樣的免費資源可以薅,哈哈哈,
Github Pages 部署
將 Hugo 通過 Github Action 部署到 Github Pages 非常簡單,在網上也有很多教程可用,這里就簡單地列舉一下吧,
第一步,通常就是要建立一個私有庫存盤博客的源檔案,再建立一個 Github Pages 庫存盤 Hugo 構建后的檔案,
第二步,自然就是在 Hugo 博客專案下撰寫 workflow 檔案,這里有使用到 Checkout、Hugo setup、GitHub Pages action 三種 Action 步驟,當時的配置如下:
on:
push:
branches:
- master
pull_request:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# 切換分支
- name: Checkout
uses: actions/checkout@v3
# 安裝 Hugo 程式
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
extended: true
# Hugo Build
- name: Build
run: hugo --minify --gc
# 部署到 Github Pages 上
- name: Deploy Github Pages
uses: peaceiris/actions-gh-pages@v3
if: ${{ github.ref == 'refs/heads/master' }}
with:
deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
external_repository: fatedeity/fatedeity.github.io
publish_branch: master
cname: fatedeity.cn
在這一步,需要配置一個 Actions secrets 以解決安全性問題,可以通過 GitHub Pages action 了解更多,
經過上述兩個配置步驟,基本上是已經完成了,之后 Hugo 博客檔案再 push 到 Github 時就會自動觸發部署,期間基本上能在 20s 左右完成,
CloudBase 部署
使用 Github Action 部署 Github Pages 非常簡單,畢竟也算是同出一家,基本上不會出現什么問題,
因為想要通過部署到 CloudBase 以加速國內 IP 訪問博客的速度,也不得不研究一下怎么通過 Github Action 部署到 CloudBase 上,
仔細查找了一下,基本上就兩種方案:通過 CloudBase CLI 使用命令列部署;通過官方提供的 Tencent CloudBase Github Action 工具部署,
最終,決定使用 Action 工具,相信與 Github Action 更配(實際操作起來并沒有??),下面是簡單的一個配置步驟:
第一步,添加 CloudBase Action v2 所需的組態檔,由于我只使用了 CloudBase 的靜態博客部署,配置起來也不麻煩,主要是需要在專案根目錄下創建 cloudbaserc.json 檔案,填入以下配置:
{
"envId": "{{ENV_ID}}",
"region": "ap-guangzhou",
"$schema": "https://framework-1258016615.tcloudbaseapp.com/schema/latest.json",
"framework": {
"name": "x-blog",
"plugins": {
"client": {
"use": "@cloudbase/framework-plugin-website",
"inputs": {
"outputPath": "public",
"cloudPath": "/"
}
}
}
}
}
第二步,更新之前的 workflow 檔案,將 Cloudbase Action 的步驟配置進去,當時的配置如下:
on:
push:
branches:
- master
pull_request:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# 切換分支
- name: Checkout
uses: actions/checkout@v3
# 安裝 Hugo 程式
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
extended: true
# Hugo Build
- name: Build
run: hugo --minify --gc
# 部署到 Github Pages 上
# 部署到 CloudBase 上
- name: Deploy Tencent CloudBase
uses: TencentCloudBase/[email protected]
if: ${{ github.ref == 'refs/heads/master' }}
with:
secretId: ${{ secrets.SECRET_ID }}
secretKey: ${{ secrets.SECRET_KEY }}
envId: ${{ secrets.ENV_ID }}
通過上述的步驟,基本上也算是完成了 Github Action 到 CloudBase 的配置,
但是,使用起來并不是很順利,經常性地出現 Github Action 運行超時的情況,應該是 Github Action 機器在美國,而 CloudBase 服務器在國內的原因,
當時也沒有找到什么好的解決辦法,只能通過每次報失敗之后再手動去運行一遍(從自動化部署變成了半自動化??),
第二版方案
云服務器部署
將專案部署到自己的云服務器上,方法就變得更多了,既有使用 SSH Remote Commands 通過 ssh 工具運行命令,也有使用 SCP、Rsync、SFTP 等工具將檔案直接上傳,還有更多其他的辦法等等,
對比之后,還是采用了理解起來最簡單的辦法,通過 SSH Remote Commands 連接到云服務器上執行命令,這個命令也很容易理解,就是通過 Git 命令拉取 Github Pages 的代碼,
第一步,先在云服務上做好準備,安裝好 Git 程式,確定能手動拉取到 Github Pages 的代碼,
第二步,當然還是要更新 workflow 檔案,將 SSH Remote Commands Action 的步驟替換掉原來的 CloudBase Action 的步驟,具體的配置如下:
on:
push:
branches:
- master
pull_request:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# 切換分支
- name: Checkout
uses: actions/checkout@v3
# 安裝 Hugo 程式
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
extended: true
# Hugo Build
- name: Build
run: hugo --minify --gc
# 部署到 Github Pages 上
# 部署到 Server 上
- name: Deploy Tecent Server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: ${{ secrets.PORT }}
script: rm -rf fatedeity.github.io/ && git clone https://ghproxy.com/https://github.com/fatedeity/fatedeity.github.io.git
這里有個小技巧,將 Github 通過 GitHub Proxy 代理加速 訪問,原本比較慢的拉取代碼步驟變得飛快,綜合下來,這個靜態博客部署完成只需花費 30ms 左右的時間,
第三步,代碼被自動拉取到服務器上之后,還需要配置一個反向代理的服務器以供外網訪問,最常用的自然就是 Nginx 服務器了,安裝 Nginx 的步驟就直接忽略吧,下面是我這邊訪問靜態博客的反向代理配置:
log_format main escape=json '{"remote_addr":"$remote_addr","timestamp":"$time_iso8601","request":"$request","size":$body_bytes_sent,"status":$status,"request_time":$request_time,"referer":"$http_referer","user_agent":"$http_user_agent"}';
server {
listen 80;
listen [::]:80;
server_name fatedeity.cn;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name fatedeity.cn;
# 證書
ssl_certificate cert/fatedeity.cn_bundle.crt;
# 私鑰
ssl_certificate_key cert/fatedeity.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root /home/fatedeity/fatedeity.github.io/;
index index.html;
}
error_page 404 /404.html;
access_log /var/log/nginx/x-blog-access.log main;
}
日志統計
經過上述的操作記錄,基本就完成了 Hugo 到 Github Pages 和 Cloud Server 的配置,其實到這里也就結束了,
但是,突然想要看一下自己服務器的訪問量,之前都沒有搞過這些東西,都是在公司有現成的工具可以使用,發現自己的服務器配置并不是很高,搞不來 ELK 那一套,只能另辟蹊徑,
還好,簡單一搜,發現有 GoAccess 這樣的開源實時日志工具可用,非常適合我這樣簡單看看日志的用戶,
第一步,自然就是安裝 GoAccess 工具啦,也很簡單,使用 apt install goaccess 命令安裝一下即可,
第二步,配置好 .goaccessrc 檔案,我這邊的配置很簡單,只是需要配置好日志格式、輸入輸出檔案即可:
time-format %H:%M:%S
date-format %Y-%m-%d
log-format %^:"%h",%^:"%dT%t+%^",%^:"%r",%^:%b,%^:%D,%^:"%R",%^:"%u"
log-file /var/log/nginx/x-blog-access.log
output /home/fatedeity/logs/x-blog.html
第三步,這邊主要是想要通過瀏覽器訪問一下日志,每次想訪問的時候使用下面的命令生成一下,也不麻煩,當然也可以定時更新:
goaccess -p /home/fatedeity/.goaccessrc
這樣就大功告成了,展示一下 GoAccess 的空頁面:

首發于翔仔的個人博客,點擊查看更多,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/499470.html
標籤:其他
上一篇:不安全的服務權限配合MSF提權
下一篇:深入剖析多重背包問題(下篇)
