之前尝试手动部署博客到服务器,感觉好麻烦()索性不想写博客了。前阵子受社团一位积极更博的同学感染,终于下决心抽出摸鱼时间整个自动化部署博客,鼓励自己进行每日产出

怎么会有人买服务器一年多了才会用 workflow 啊,哦不好意思原来是我

鸣谢逸哥的神级指导,逸哥永远的神!qaq

部署时的主要参考教程:Github Actions 自动部署 hexo 博客到阿里云,本文在参照该教程的基础上加了一些细节

创建 Hexo 博客仓库并上传 Hexo 项目

不是本文重点,暂且略过。网上一搜教程一大堆(

建立 Bucket

打开阿里云 OSS 管理控制台,点击Bucket列表创建Bucket,只需填写Bucket名称并将读写权限改为公共读

bucket创建

建立成功后,在基础设置中找到静态页面,将子目录首页设置为已开通

基础设置-静态页面设置

传输管理中找到域名管理,进行绑定域名

传输管理-域名绑定

传输加速,点设置开启传输加速并保存

传输管理-传输加速

此时出现传输加速访问域名,将其复制

在阿里云控制台打开云解析DNS,在域名解析中点击当前要部署的域名

传输管理-传输加速

点击添加记录

传输管理-传输加速

记录类型中选择CNAME,在主机记录中填写想设置的三级域名名字,在记录值中粘贴刚刚复制的传输加速访问域名,点击确认。记住这里设置的主机记录的名字,和域名合起来就是最终部署的网站地址啦

创建 AccessKey

打开阿里云 AccessKey 管理控制台,创建用户,并勾选OpenAPI操作权限。建议使用子用户

开启 ACK 权限

打开阿里云 ACK 管理控制台,点击刚刚创建的用户,在身份管理->用户找到权限管理->个人权限->新增授权,选择AliyunOSSFullAccess

ack

将 AccessKey 添加到 Github Secrets

打开博客所在仓库,点击Settings->Secrets->Actions->New repository secret,创建KEYSECRET,分别填入刚刚创建的用户的AccessKey IDAccessKey Secret

点击博客仓库的Actions->set up a workflow yourself。以下是本人参考文首博客小改之后的 workflow 文件,仅供参考

# workflow name
name: Hexo Blog CI

# 在main分支上有push命令时触发该流程
on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository master branch
        uses: actions/checkout@master

      - name: Setup Node.js 14.x
        uses: actions/setup-node@master
        with:
          node-version: '14.x'

      - name: Setup node Dependencies
        run: npm install |
          npm install -g hexo-cli
      - name: Setup Hexo Dependencies
        run: hexo clean |
          hexo generate
      - name: setup aliyun oss
        uses: manyuanrong/setup-ossutil@master
        with:
          endpoint: oss-cn-hangzhou.aliyuncs.com
          access-key-id: ${{ secrets.KEY }} # 刚刚配置过的AccessKeyId
          access-key-secret: ${{ secrets.SECRET }} # 刚刚配置过的AccessKeySecret
      - name: cp files to aliyun
        run: ossutil cp -rf public oss://xxxxxx # 将xxxxx改成建立的Bucket名称,-rf表示覆盖

完成后点击Start commit,然后静等 CICD 结果吧。祝部署顺利!

配置 HTTPS

能正常访问网站之后,我们可以试着给网站配个 HTTPS

由于阿里云不会泛域名解析,所以每次创建二级域名都要重复一遍这个过程(

Bucket列表传输管理域名管理中,选择之前绑定的域名,点击证书托管

传输管理-证书托管

点击上传SSL证书

传输管理-证书托管

点击创建证书后,点击证书申请

传输管理-证书托管

证书绑定域名填好域名,点下一步、验证、提交审核,等待审核通过(一般很快

此时再回到 oss 管理控制台,点击证书托管,会发现证书名称已经有可选的选项了。勾选后点击上传

踩坑

由于博客根目录下_config.yamlroot的值一开始设置为/blog,所以初次部署时 css 路径出现问题无法正常显示,后来将root改为/,重新部署后正常显示