基于Github Pages&Action自动化部署Hexo blog
现如今,部署一个博客是最简单不过的事情之一了,谷歌一搜能找到大片如Wordpress、Hexo等相关的博客部署教程。只是互联网是发展迅速的,短短的时间过去很多东西就发生了变化。本文简单记录下该博客此次的部署历程。
一、确定博客部署方案
1. 动态与静态的选择
考虑到部署动态博客,维护起来太麻烦了,需要准备服务器、域名等等乱七八糟的东西,遂选择部署静态博客。
这里我选择的是hexo。
2. 部署位置选择
既然选择了静态博客,肯定是首选部署在Github Pages上了。后面为了优化国内的访问体验再说,比如套CDN,或者部署到Gitee,再或者搞个VPS。
3. 部署方式的选择
唉,越活越懒,尽管hexo d
部署的方式也很方便,但能自动化自然就选择自动化了。非常开心的是Github提供了Github Actions服务。
二、搭建历程
1. 构建基础环境
安装Node.js环境和npm命令。
1 | brew install node |
全局安装hexo。
1 | npm install hexo-cli -g |
创建一个博客站点。
1 | hexo init blog |
以git submodule形式添加Next主题。(选择Next主要是图个方便)
1 | cd blog/ # 切到 |
截止到2021-09-13,Next主题有三个repo,分别是
最新的是第一个。关于此原因,可以看这个Issue:【必读】更新说明及常见问题 · Issue #4
再修改下站点的_config.yml文件。
1 | theme: next |
自Hexo 5.0版本后,推荐使用
$BLOG_ROOT/_config.[theme-name].yml
来替代旧的方式。这样做的好处是更新主题不会遇到冲突问题。
2. 客制化
预先声明:
- 站点配置文件:
$BLOG_ROOT/_config.yml
- 主题配置文件:
$BLOG_ROOT/_config.next.yml
(因为选用了next主题)
开启暗黑模式
next主题在v7.7.2
支持了暗黑模式,可以在启用深色模式的系统下使用,默认关闭。
1 | darkmode: true |
添加百度&谷歌收录,方便SEO。
1 | baidu_site_verification: <you-baidu-identify-code> # 替换成自己的 |
添加百度站点统计
1 | baidu_analytics: <you-baidu-analytics-app-id> |
添加文章访问量统计
基于leancloud统计文章访问量。
由于一个安全问题,现在添加较为麻烦,可以参考以下两篇博文:
注意:这里需要安装插件hexo-leancloud-counter-security,请不要直接用https://github.com/theme-next/hexo-leancloud-counter-security,因为它存在bug。建议使用这个:https://github.com/799953468/hexo-leancloud-counter-security。
Github Action自动化部署
可以抄我这里的配置:HJHL.github.io/hexo-deploy.yml at main · HJHL/HJHL.github.io
它会在每次main
分支有新提交时,自动触发部署操作。
博客部署到当前Repo的blog
分支,因此需要在Repo的pages中,将branch设为blog
。
主题,需要在repo的settings中,添加以下三个secrets
。
- SSH_PRIVATE_KEY:你的Github或当前Repo的私钥,需要具有写权限
- GIT_EMAIL:部署博客时,提交commit用到的email
- GIT_NAME:部署博客时,提交commit的name
评论系统
鉴于Valine已经不再维护,这里选择的是新出的Twikoo
部署用到了[MonoDB](MongoDB Atlas | MongoDB)和Vercel。前者用于存储,后者作为静态网站与存储之间的桥梁(保证数据库密码不外泄)。
TBD……