記錄個人博客此次搬家過程。個人博客以前經歷過:css
如今寫博客一直採用 markdown
語法,因此也是本次能夠順利遷移的一大前提。 最近兩年一直用的是 Bitcron ,很是順滑。每次寫完 md 文件,直接保存便可(博客當即更新可見)。不過一直搜索引擎的收錄不是很好,如我直接搜索 "Bob Jiang" 個人博客始終排不到第一個。很奇怪......html
索性如今申請了一年免費的 google cloud,就作個搬遷。git
搬遷以後的博客存儲在 google cloud storage 上,DNS也順便切換到 Cloudfare 上了。 博客系統使用的是 hugo ,主題用的是 Ezhil。博客總體存放於 github上,每次提交到github會自動出發一次 github action,推送到谷歌存儲。github
博客的工做機制以下:json
hugo server
)安裝 hugo 能夠參考我朋友的博客,免費搭建一個靜態博客。搭建完成後,關於主題,這裏我採用的 hugo 主題是 Ezhil,能夠直接用 github fork一份 hugo 主題。具體操做參考 Ezhil。ubuntu
hugo和主題都準備好後,目錄結構以下:markdown
github上須要建立一個新的倉庫 (假設你已經有了github帳號)。而後把本地的博客目錄中,除了 public/
目錄的內容推送到代碼倉庫中。架構
New Repository
README
文件,以下圖:下一步須要建立並配置 谷歌存儲 - Google Cloud Storage,而後再回來配置 github secrets併發
這裏我用的谷歌存儲,也能夠選擇國內的阿里雲,騰訊雲的OSS服務。dom
谷歌存儲 - Google Cloud Storage,須要建立一個存儲。 訪問 Console 以下圖
建立存儲,注意:名字必-須是 www.yourdomain.com
不能設置爲根域名(即這裏須要是 CNAME 的名字設置bucket名字)。 根域名能夠經過 DNS 的設置來實現。
注意存儲分區(bucket)名字必須是 CNAME 域名的名字(必須是徹底一致),如個人分區名字是 www.bobjiang.com。存儲分區不支持直接更名,能夠先建立新名字的存儲分區,而後把數據轉移過去來實現。
訪問權限,能夠修改成"統一"方式,這樣能夠簡單操做。
下面是爲新建的存儲分區(bucket)增長訪問權限,點擊"修改存儲分區權限"點擊"添加成員"
輸入 新成員:allUsers, 角色:Storage Object Viewer (要嚴格檢查這裏的角色權限)
最後能夠檢查一下權限的設置,這裏應該提示以下:"在互聯網上公開"
這裏主要設置 服務帳號 (service account),爲了給其餘的第三方進行服務(如接下來咱們用 github action 鏈接)受權。
下一步配置 github secrets
如圖建立以下的兩個 github secrets:
cat your-json-key.json | base64
Github action的做用是:
新建 github action ,並點擊 "set up workflow yourself"
個人 github action 代碼以下:
# github action的名字,能夠隨意改 name: build hugo and deploy to google cloud platform (storage) # 何時調用 action,這裏是當 master 上有代碼 push 或者 pull request 會觸發 github action on: push: branches: [ master ] pull_request: branches: [ master ] # 環境變量的設置,下面會用到 env: GCP_SA_EMAIL: ${{ secrets.GCP_SA_EMAIL }} GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }} GCP_BUCKET: www.bobjiang.com # 任務的準備,用 ubuntu最新的環境 jobs: setup-deploy: name: Setup and Deploy runs-on: ubuntu-latest steps: # 檢出master分支的代碼 checkout - name: Checkout uses: actions/checkout@v2 # 準備hugo環境 # hugo ready & build - name: Setup Hugo uses: peaceiris/actions-hugo@v2 with: hugo-version: '0.62.2' # extended: true # hugo 編譯生成靜態網頁 public目錄內的內容 - run: hugo --minify # deploy to google storage # 準備 鏈接到 google 雲 - uses: GoogleCloudPlatform/github-actions/setup-gcloud@master with: version: '285.0.0' project_id: ${{ secrets.GCP_PROJECT_ID }} service_account_email: ${{ secrets.GCP_SA_EMAIL }} service_account_key: ${{ secrets.GCP_SA_KEY }} export_default_credentials: true # 檢查 google 雲的鏈接結果 - run: gcloud info # 用 gsutil 推送 public 目錄內容到谷歌雲存儲 - run: gsutil -m rsync -d -c -r public gs://$GCP_BUCKET - run: gsutil -m setmeta -h "Cache-Control:public, max-age=3600" gs://$GCP_BUCKET/**/*.html - run: gsutil -m setmeta -h "Cache-Control:public, max-age=31536000" gs://$GCP_BUCKET/js/*.js - run: gsutil -m setmeta -h "Cache-Control:public, max-age=31536000" gs://$GCP_BUCKET/css/*.css
通過本次梳理後,寫博客徹底是本地操做且能夠本地調試。 寫博客在 hugo 項目的 content 目錄內寫 markdown 文件 調試能夠用 hugo server 本地訪問 http://localhost:1313/
效果滿意後,能夠把 content 目錄內的改動 推送到 github 倉庫 後面就是自動化準備環境編譯、部署(github action)到谷歌雲存儲。
因此做爲一個業餘寫手,須要更加關注的是內容產出。
自動化啦......
本文首發於 Bob Jiang的博客 ,轉載請聯繫 Bob Jiang