Building a Blog with Hexo and Meow — Methods and Lessons
经过三天的摸索调试,新溯月馆网站终于正式上线了。
这次我是认真地想把博客好好做起来,不能再像之前那样长期拖更了。那么首先呢,分享一下建站过程中用到的方法与踩过的坑。
注意: 博主非 CS 专业,本文所用工具均为轮椅,coding 含量极低,适合想建漂亮博客但又不想自己写代码的懒人。
前置技能
建站前需要的技能储备不多,基本都能快速上手:
在本地 IDE 部署 Agent(核心出装)
博主当时用的是 VS Code 的 Claude 插件,搭配 DeepSeek 的 API,性能一般但够用了。
参考文档:
基本的命令行操作(就是黑客嘉豪喜欢玩的那个)
Markdown 写作
一点点 Git 知识(会提交就行)
知道怎么用 GitHub(默认有梯子)
其实以上都是 21 世纪智人大学生应知应会内容,有不会的缺啥补啥:
环境配置
本教程所需的本地开发环境如下(括号内是我的选择):
集成了 Agent 的 IDE(VS Code,配置方式见上文)
Markdown 文本编辑器(Obsidian)
Hexo 博客框架
官方文档:文档 | Hexo
想省事也可以用这个项目提供的 GUI:HexoHub
主题模板
官方主题库:Themes | Hexo
我选用的是 MEOW
按文档指引操作即可。
最轮椅的做法是用 HexoHub 把 Hexo 安装、博客目录初始化等流程全部包办。该项目还提供了 Hexo 常用指令(清理、生成、部署、启动服务器)和 Git 推送的快捷按钮。
主题配置
我使用的主题模板作者 chanwj(小橘猫) 提供了详细的配置文档,可以直接参考:MEOW - 简洁可爱的响应式 Hexo 主题 🐱
安装主题
首先进入博客项目根目录(以我本地环境为例:D:\Hexo\blog):
1 | cd blog |
然后将主题仓库 clone 到本地(以 MEOW 为例):
1 | git clone -b main https://github.com/chanwj/hexo-theme-meow.git themes/meow |
或者手动下载项目文件再解压到目标目录。
总之,要确保主题文件安装在 /themes/meow 下。meow 是你的主题名称,可自行替换。
此外,部分主题需要安装额外的依赖项,按主题作者提供的文档在根目录下执行即可。以 MEOW 为例:
1 | npm install hexo-renderer-pug --save |
这里的 npm install [插件名] --save 是 Hexo 框架下安装插件 的常用命令,后续会频繁用到。
应用主题
安装完成后,在博客根目录下找到 _config.yml 配置文件,找到并编辑 theme 项:
1 | theme: meow |
这里填你之前定义的主题名称即可。
配置主题
此时博客项目中有两个配置文件:
/_config.yml:博客本体配置/themes/meow/_config.yml:主题配置
根据 Hexo 官方文档与模板作者的 配置建议,为便于后续更新主题,建议将 /themes/meow/_config.yml 复制到根目录下并重命名为 _config.meow.yml,此后仅编辑 _config.meow.yml 作为主题配置文件。
HexoHub 为 _config.yml 提供了部分配置项的 GUI 编辑功能,但真正的 DIY 还是需要亲手编辑两个配置文件中的每一项,过程类似于填表。各配置项的作用与可选值参见官方文档:
- 本体配置(
_config.yml):配置 | Hexo - 主题配置(
_config.meow.yml):Meow 主题文档 - 主题配置
关于 YAML 文件格式的语法,可以参考:YAML 入门教程 | 菜鸟教程
网页部署
网页部署包括本地部署(localhost)与 GitHub Pages 部署。由于博主未尝试服务器部署,该部分请参考 官方文档。
本地部署
用于在本地预览博客页面。
在博客根目录下依次执行以下命令:
1 | hexo clean |
然后浏览器会自动打开 localhost 页面,里面就是你的博客。
如果使用 HexoHub,依次点击 清理→生成→部署→启动服务器 即可,下次测试前别忘了点击 关闭服务器。
注意: hexo deploy 之所以能将生成的 /public 目录部署到本地服务器,前提是 _config.yml 中 deploy 项保持默认设置。如果 deploy 配置了 git,则该命令会触发 GitHub 远程部署。
GitHub Pages 部署
使用 GitHub Pages 的好处是不用买服务器和域名,但也带来了一些问题:
- 服务稳定性:在特定时段可能抽风,导致
Update与Deploy异常。如遇此情况,请关注 GitHub Status 的最新动态,耐心等待官方修复。 - 构建兼容性:GitHub Pages 的默认构建方案(Jekyll)不适用于 Hexo 项目,需要自行配置 GitHub Actions 完成构建与部署。参考 Hexo 官方指南:在 GitHub Pages 上部署 Hexo
以下是经过亲身(惨痛)实践总结出的 Hexo 博客 GitHub Pages 部署流程:
创建 GitHub Pages 仓库
参照官方文档:GitHub Pages 快速入门
在博客根目录下初始化 Git 并配置用户信息
1
2
3
4
5git init
git config user.name "你的用户名"
git config user.email "你的邮箱"
git remote add origin 仓库的 Git 链接新建
.gitignore文件,写入:1
public/
推送本地项目文件到仓库
1
2
3git add .
git commit -m "Update"
git push -u origin master如果使用 HexoHub,可以直接点击
推送按钮(有时仍需要手动git push)。配置 GitHub Actions
此时 GitHub 仓库会显示构建失败——因为 GitHub 默认使用 Jekyll 构建,而我们用的是 Hexo。需要前往仓库的
Settings→Pages,将Build and deployment来源改为GitHub Actions,然后按照官方指南在/.github/workflows/pages.yml新建工作流文件。以下是我用 AI 优化后的版本:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51name: Pages
on:
push:
branches:
- master
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
submodules: recursive
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: "26.3.1"
- name: Cache NPM dependencies
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.OS }}-npm-cache-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-npm-cache
- name: Install Dependencies
run: npm install
- name: Build Hexo
run: |
npm install -g hexo-cli # 关键:全局安装 hexo-cli
hexo clean
hexo generate # 直接运行,无需 npm run build
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./public
deploy:
needs: build
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4注意: 工作流文件中
node-version的值需要与你本地开发环境的 Node.js 版本一致。查看本地版本:1
node --version
再次提交,此时应能成功触发 GitHub Actions 的构建与部署流程。
部署过程中遇到任何问题,请将仓库 Actions 中的日志信息复制粘贴给 AI,它通常能帮你定位问题。
额外功能
如果使用 MEOW 主题,官方文档已提供了各种额外功能的详细配置说明。这里仅对主题作者没有详细说明的部分作一些补充。
点击展开评论功能说明
MEOW 的评论功能基于 Waline。官方文档提供了多种部署方案,但实际能跑通的并不多。以下是我最终验证可行的方案:
1. 编辑 _config.meow.yml 相关配置项
1 | comment: |
以上 9 个 reaction 表情链接可替换为自定义的 emoji 图片链接。
配置的关键在于 server_url 项,其值需要完成以下步骤后才能确定。
2. 获取一个域名
推荐在 ClouDNS 申请一个免费的二级域名,格式为 xxx.yyy.zzz,下文统一简写为 yourdomain。
注意: 该网站对部分地区的访问有限制,建议使用代理切换不同地区尝试。
3. 在第三方平台部署 Waline 服务
推荐使用 Railway 部署 Waline 服务,参考官方文档。
造化弄人的是 Railway 更新后,官方文档的某些部分已经过时,需要额外操作:
- 项目创建:点击官方文档中的按钮新建项目后,直接部署会失败。需要手动将
Postgres中的环境变量值复制到app的环境变量列表中,再执行部署。 - 数据库初始化:新版 Railway 的 GUI 没有独立的 Query 面板,而是移到了
Postgres→Database选项卡的搜索框中。将官方文档中的 SQL 代码复制粘贴到该搜索框内执行即可。 - 配置域名:在
app的Deployments选项卡下新建Custom Domain,填入comment.yourdomain即可触发验证。 - 域名验证:按照提示,在 ClouDNS 中添加两条 DNS 解析记录(通常是
comment.yourdomain和_railway-verify.comment.yourdomain),点击Update等待修改在全球各大服务器生效,稍后验证便会通过。
4. 回到 _config.meow.yml 填入 server_url
1 | waline: |
配置完成后,访问 https://comment.yourdomain/ui 即可管理博客的评论。
