博客1.2版本(多线路访问)

  • ~3.89K 字
  1. 1. 为什么要做多线路访问
  2. 2. 写作入口:Obsidian
  3. 3. 本地图形化工具
  4. 4. 图片和封面
  5. 5. 从源码到线上页面
  6. 6. GitHub Pages
  7. 7. 独立服务器线路
  8. 8. EdgeOne 加速线路
  9. 9. 仓库结构
  10. 10. 删除和下线
  11. 11. 换电脑时需要恢复什么
  12. 12. 这套流程的取舍

这篇文章整理一下本站现在的写作和发布方式。它既是一篇面向读者的技术说明,也是一份公开的维护记录:内容如何从 Obsidian 进入博客,页面如何发布到 GitHub Pages,为什么还会准备独立服务器线路和 EdgeOne 加速入口。

为什么要做多线路访问

这个博客本质上是一套静态网站。静态博客的好处是简单、稳定、容易备份;问题是不同网络环境下,访问 GitHub Pages、境外服务器或国内加速线路的体验可能不一样。

所以本站现在提供一个访问选择页:

1
https://blog.orixx.xyz/

这个页面不是另一套内容,而是同一份博客的入口导航。读者可以按自己的网络环境选择更顺畅的线路:

  • 稳定访问:由独立服务器提供,作为日常推荐入口。
  • 大陆优化线路:通过腾讯云 EdgeOne 做访问加速。
  • 备用镜像:GitHub Pages 上的公开镜像。

这样做的目标很朴素:文章只维护一份,但访问方式可以更灵活。

写作入口:Obsidian

文章最初写在 Obsidian 里。它适合做长期笔记,也适合写 Markdown,所以博客草稿和正式文章都放在同一个写作环境中维护。

当前约定是:

1
2
3
Blog/Posts   # 博客文章
Blog/Assets # 博客素材
Blog/Trash # 删除文章时的回收目录

每篇文章使用 Hexo 兼容的 front matter,例如:

1
2
3
4
5
6
7
8
9
10
---
title: 示例文章
date: 2026-06-19 12:00:00
tags:
- 博客网站
categories:
- docs
cover: /images/theme/default-cover.webp
draft: false
---

其中 draft: true 表示私有草稿,不会同步到博客源码目录;改成 draft: false 后才会进入发布流程。

本地图形化工具

为了减少重复命令,仓库里放了一个本地 GUI:

1
npm run blog

它用 Python + Qt 写成。启动脚本会自动寻找可用的 Qt 环境,例如 PySide6、PyQt6 或 PyQt5。当前机器使用的是 Anaconda 环境里的 PyQt。

GUI 主要做几件事:

  • 新建草稿。
  • 把 Obsidian 文章同步到 Hexo。
  • 执行本地构建检查。
  • 设置本地封面或图床封面。
  • 删除文章并同步下线。
  • 推送源码分支,让 GitHub Actions 自动部署。

如果不打开 GUI,也可以用命令行完成同样的流程:

1
2
3
npm run blog:sync
npm run blog:build
npm run blog:publish

其中 blog:publish 不直接上传所有站点,它只推送博客源码分支。真正的线上部署由 GitHub Actions 统一处理。

图片和封面

文章封面可以使用站内图片,也可以使用外部图床链接:

1
2
cover: /images/posts/example.webp
cover: https://example.com/example.webp

如果不想为每篇文章单独维护封面,可以保留默认值:

1
cover: /images/theme/default-cover.webp

GUI 里有两个辅助按钮:

  • 选择封面:选择本地图片,自动复制到博客图片目录。
  • 封面 URL:把图床链接写入最近修改的文章。

如果图片已经在 Obsidian 中直接写成 URL,也可以保持原样。同步脚本会保留这种写法。

从源码到线上页面

这个博客仓库使用 source 分支维护源码。文章、图片、脚本、主题配置都在这个分支里。推送后,GitHub Actions 会运行:

1
.github/workflows/deploy.yml

发布流程大致是:

  1. 安装 Node.js 和 npm 依赖。
  2. 执行 Hexo 构建。
  3. 把 GitHub Pages 版本发布到 main 分支。
  4. 使用独立配置再构建一份适合 /blog/ 路径的版本。
  5. 通过 SSH 同步到独立服务器目录。

这样,本地电脑不需要分别登录每个发布平台;只要源码进入 GitHub,后续部署就由自动化流程接管。

GitHub Pages

GitHub Pages 是本站的公开镜像之一:

1
https://ori2333.github.io/

它的优点是稳定、透明、和源码仓库绑定紧密。GitHub Actions 会把 Hexo 生成的静态文件发布到 main 分支,因此 source 分支负责维护源码,main 分支负责承载静态页面。

独立服务器线路

除了 GitHub Pages,本站还部署了一份服务器托管版本:

1
https://blog.orixx.xyz/blog/

入口页则是:

1
https://blog.orixx.xyz/

服务器部署脚本在:

1
tools/hk_deploy/

几个关键文件分别负责:

  • deploy_hk.py:构建服务器版本、生成访问选择页、打包并上传。
  • _config.hk.yml:覆盖 Hexo 的 urlrootpublic_dir
  • hk_deploy.config.json:保存域名、远程目录和入口链接配置。
  • nginx-ori2333-blog.conf:Nginx 配置模板。
  • setup_hk_server.py:初始化服务器站点配置和 HTTPS。

服务器上的目录固定为:

1
/var/www/ori2333-blog

部署脚本只同步这个目录,不会接管服务器上的其他服务。旧的 /hk/ 路径会跳转到 /blog/,用于兼容早期测试阶段的地址。

HTTPS 使用 Let’s Encrypt。证书有效期为 90 天,需要服务器保持自动续签任务开启。

EdgeOne 加速线路

为了改善中国大陆网络访问体验,本站还准备了腾讯云 EdgeOne 入口。它不是另一套博客,也不是另一份文章源,而是一条访问加速线路。

日常写作不需要为 EdgeOne 单独做任何操作。文章发布后,GitHub Pages 和服务器版本先更新;EdgeOne 再按照它的源站和缓存策略提供加速访问。

如果某次访问发现 EdgeOne 内容延迟,通常优先检查:

  • GitHub Actions 是否部署成功。
  • 加速线路的源站是否可访问。
  • 是否命中了旧缓存。
  • 当前访问 URL 是否带着过期参数。

仓库结构

仓库里最常用的目录是这些:

1
2
3
4
5
6
7
8
source/_posts/                   # Hexo 文章源文件
source/images/posts/ # 文章配图
source/images/theme/ # 主题图片、头像、背景、默认封面
tools/blog/ # 本地 GUI 和同步工具
tools/hk_deploy/ # 独立服务器部署工具
templates/blog-post.md # 新文章模板
docs/blog-workflow-migration.md # 换电脑和环境迁移说明
.github/workflows/deploy.yml # 自动部署流程

public/ 是 Hexo 构建产物,不需要手动维护,也不应该作为主要修改对象。真正值得维护的是文章、图片、配置和脚本。

删除和下线

删除文章时,最好不要只在一个目录里删文件。GUI 的 删除文章 会同时处理 Obsidian 和 Hexo 源文件:

  • 原文移动到 Blog/Trash
  • source/_posts 中的同名文章被删除。
  • 构建和发布流程会让线上页面同步下线。

这可以避免“本地删掉了,线上还看得到”的情况。

换电脑时需要恢复什么

如果以后换电脑,重点是恢复写作和发布环境:

  1. 安装 Node.js,并在仓库里运行 npm ci
  2. 准备一个带 Qt 的 Python 环境。
  3. 配置 Obsidian 库路径。
  4. 确认可以推送 GitHub 的 source 分支。
  5. 如果需要本地手动部署服务器版本,再恢复 SSH key。

可以先用这条命令检查 GUI 环境:

1
npm run blog:check

它会同时检查 Python/Qt、Git、Node.js、npm、Hexo 依赖、Obsidian 路径和 Git 状态。换电脑后如果缺少 Git 或 Node.js,报告里会给出对应的处理建议。

服务器自动部署所需的密钥放在 GitHub Actions Secrets 中,不写进仓库。相关名称包括:

1
2
3
4
5
HK_HOST
HK_PORT
HK_USER
HK_REMOTE_ROOT
HK_SSH_KEY

这套流程的取舍

这套系统的重点不是追求复杂,而是把容易出错的部分拆开:

  • Obsidian 负责写作体验。
  • GUI 负责减少重复操作。
  • Hexo 负责生成静态页面。
  • GitHub Actions 负责自动部署。
  • 独立服务器和 EdgeOne 负责改善访问体验。

从读者视角看,只需要选择一条顺畅的访问线路;从维护视角看,只需要维护一份文章源。这个边界清楚以后,后续更换域名、迁移服务器或调整加速线路,都不会影响写作本身。

赞助喵
非常感谢您的喜欢!
赞助喵
分享这篇文章
分享链接会先进入线路选择页,读者可选择稳定访问、腾讯云 CDN 或备用镜像。