之前尝试手动部署博客到服务器,感觉好麻烦()索性不想写博客了。前阵子受社团一位积极更博的同学感染,终于下决心
抽出摸鱼时间整个自动化部署博客,鼓励自己进行每日产出
怎么会有人买服务器一年多了才会用 workflow 啊,哦不好意思原来是我鸣谢逸哥的神级指导,逸哥永远的神!qaq
部署时的主要参考教程:Github Actions 自动部署 hexo 博客到阿里云,本文在参照该教程的基础上加了一些细节
创建 Hexo 博客仓库并上传 Hexo 项目
不是本文重点,暂且略过。网上一搜教程一大堆(
建立 Bucket
打开阿里云 OSS 管理控制台,点击Bucket列表
并创建Bucket
,只需填写Bucket名称
并将读写权限
改为公共读
建立成功后,在基础设置
中找到静态页面
,将子目录首页设置为已开通
在传输管理
中找到域名管理
,进行绑定域名
点传输加速
,点设置
开启传输加速并保存
此时出现传输加速访问域名
,将其复制
在阿里云控制台打开云解析DNS
,在域名解析
中点击当前要部署的域名
点击添加记录
在记录类型
中选择CNAME
,在主机记录
中填写想设置的三级域名名字,在记录值
中粘贴刚刚复制的传输加速访问域名
,点击确认
。记住这里设置的主机记录的名字,和域名合起来就是最终部署的网站地址啦
创建 AccessKey
打开阿里云 AccessKey 管理控制台,创建用户,并勾选OpenAPI操作权限
。建议使用子用户
开启 ACK 权限
打开阿里云 ACK 管理控制台,点击刚刚创建的用户,在身份管理
->用户
找到权限管理
->个人权限
->新增授权
,选择AliyunOSSFullAccess
将 AccessKey 添加到 Github Secrets
打开博客所在仓库,点击Settings
->Secrets
->Actions
->New repository secret
,创建KEY
和SECRET
,分别填入刚刚创建的用户的AccessKey ID
和AccessKey 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.yaml
中root
的值一开始设置为/blog
,所以初次部署时 css 路径出现问题无法正常显示,后来将root
改为/
,重新部署后正常显示