blog

1 部署

  1. 安装 git、node.js,参考 hexo 官网,windows、linux 有区别。git 设置 sock5 代理,见 git
  2. github 创建 username.github.io 仓库,实测要用官方的流程设置一下主题才能开通。添加 ssh 密钥
  3. 安装 hexo 、主题、插件,主题可根据star 排名来选择
1
2
3
4
5
6
7
8
9
10
11
12
npm install hexo
npx hexo init blog
cd blog
npm i hexo-theme-icarus hexo-generator-sitemap hexo-relative-link hexo-mermaid-lastest hexo-filename-title
# 要在 config 中添加配置
npm i hexo-auto-category hexo-feed hexo-extract-excerpt hexo-deployer-git
# source 目录下,关联笔记
mklink /J _posts D:\Documents\Dropbox\notes\blog

# 还有一个 footnote 插件从 hexo-theme-fluid 移植过来
# 还有 add_assets_url.js 添加下载图标
# 所有插件可通过 hexo --debug 选项看到

1.1 Google 收录

  • 先创建 Google Analytics,添加 tracking_id 到主题配置文件,注意广告拦截和浏览器拦截
  • 再创建 Google Search Console,用 Google Analytics 验证所有权
  • 在 Google Analytics 选择媒体资源,Search Console 关联,进行两个产品的关联
  • 在 Search Console 中提交站点地图 sitemap.xml

2 使用

  • 原则是避免手动配置 front-matter,尽量自动生成,保持界面简洁易用
  • 常用命令
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 启动 server 预览
    npx hexo clean && npx hexo s --p 10000
    # 生成(只在确认生成文件时会用到)
    npx hexo g
    # 部署
    # 不加 --generate 会导致修改不推送
    # 下划线 _ 开头的文件永远不会被推送
    # 此外对于 exclude 的文件,clean 后首次不推送,再执行一次就可以推送了
    # 所以保险起见每次执行两次这个命令
    npx hexo deploy --generate
    # 可清除博客的更新历史记录,会导致全量部署
    rm -rf .deploy_git
  • 后期,如果流量大,图片和 asset 放到 github 其它 repo 上,避免超过 github pages 流量 100G/月 的限制

2.1 编写插件

  • 插件的 优先级 值越低越先处理原始 md 文件,因此低优先级可避免被其它插件的处理结果影响

3 维护

  • 备份:hexo 目录下所有内容(文章除外) git 记录修改,push 到 github 上
  • 还原:
    • 装 git、node
    • 从 github clone,linux 环境要卸载原 hexo,重新安装(不清楚为何不跨平台),其它插件看起来没问题
      • db.json 报错:手动创建 blog\node_modules\mime-db\db.json,文件内容空 object{}`
      • 这个 linux 环境作为 linux branch push 到 github 来备份
  • 更新博客
    • 通过 rclone 挂载 GoogleDrive,再 ln -s 创建软链接到 source/_posts
      • rclone 从官网下载 arm 版本,配置按照官网和向导走就可以,很全面
      • sudo apt install fuse3,rclone mount 需要
        • rclone 退出而没自动 umount 的情况(文件被占用),手动 sudo umount 一下
      • 按 rclone config 提示,获得 GoogleDrive API 相关参数
      • 创建 gd 文件夹,只读挂载 ./rclone --cache-dir=rc_cache --temp-dir=rc_temp mount gd: gd --vfs-cache-mode full --read-only
    • rclone 放到 screen 里面运行,.zshrc 添加 screen -x,登录后就恢复上次的环境
    • 配置 cron 每两小时自动 npx hexo deploy --generate 更新博客