Building a Blog with Hexo and Meow — Methods and Lessons

经过三天的摸索调试,新溯月馆网站终于正式上线了。

这次我是认真地想把博客好好做起来,不能再像之前那样长期拖更了。那么首先呢,分享一下建站过程中用到的方法与踩过的坑。

注意: 博主非 CS 专业,本文所用工具均为轮椅,coding 含量极低,适合想建漂亮博客但又不想自己写代码的懒人。


前置技能

建站前需要的技能储备不多,基本都能快速上手:

其实以上都是 21 世纪智人大学生应知应会内容,有不会的缺啥补啥:


环境配置

本教程所需的本地开发环境如下(括号内是我的选择):

按文档指引操作即可。

最轮椅的做法是用 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
2
npm install hexo-renderer-pug --save
npm install hexo-renderer-stylus --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 还是需要亲手编辑两个配置文件中的每一项,过程类似于填表。各配置项的作用与可选值参见官方文档:

关于 YAML 文件格式的语法,可以参考:YAML 入门教程 | 菜鸟教程


网页部署

网页部署包括本地部署(localhost)与 GitHub Pages 部署。由于博主未尝试服务器部署,该部分请参考 官方文档。

本地部署

用于在本地预览博客页面。

在博客根目录下依次执行以下命令:

1
2
3
4
hexo clean
hexo generate
hexo deploy
hexo server

然后浏览器会自动打开 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 部署流程:

  1. 创建 GitHub Pages 仓库

    参照官方文档:GitHub Pages 快速入门

  2. 在博客根目录下初始化 Git 并配置用户信息

    1
    2
    3
    4
    5
    git init

    git config user.name "你的用户名"
    git config user.email "你的邮箱"
    git remote add origin 仓库的 Git 链接
  3. 新建 .gitignore 文件,写入:

    1
    public/
  4. 推送本地项目文件到仓库

    1
    2
    3
    git add .
    git commit -m "Update"
    git push -u origin master

    如果使用 HexoHub,可以直接点击 推送 按钮(有时仍需要手动 git push)。

  5. 配置 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
    51
    name: 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
  6. 再次提交,此时应能成功触发 GitHub Actions 的构建与部署流程。

部署过程中遇到任何问题,请将仓库 Actions 中的日志信息复制粘贴给 AI,它通常能帮你定位问题。


额外功能

如果使用 MEOW 主题,官方文档已提供了各种额外功能的详细配置说明。这里仅对主题作者没有详细说明的部分作一些补充。

点击展开评论功能说明

MEOW 的评论功能基于 Waline。官方文档提供了多种部署方案,但实际能跑通的并不多。以下是我最终验证可行的方案:

1. 编辑 _config.meow.yml 相关配置项

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
comment:
enable: true
display: true
type: waline
lazyload: true
waline:
server_url: https://comment.yourdomain # 你的 Waline 服务域名
lang: zh-CN
emoji:
- 'https://registry.npmmirror.com/@waline/emojis/1.3.0/files/qq'
- 'https://registry.npmmirror.com/@waline/emojis/1.3.0/files/tw-emoji'
reaction:
- 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@14.0.0/img/google/64/2764-fe0f.png'
- 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@14.0.0/img/google/64/1f92f.png'
- 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@14.0.0/img/google/64/1f4a5.png'
- 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@14.0.0/img/google/64/1fae1.png'
- 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@14.0.0/img/google/64/1f602.png'
- 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@14.0.0/img/google/64/1f914.png'
- 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@14.0.0/img/google/64/1f97a.png'
- 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@14.0.0/img/google/64/1f6a8.png'
- 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@14.0.0/img/google/64/1f921.png'
option:
locale:
placeholder: '欢迎评论~'
reactionTitle: '点赞支持我吧!'
commentSorting: 'hottest'
requiredMeta: ['nick', 'mail']

以上 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
2
waline:
server_url: https://comment.yourdomain

配置完成后,访问 https://comment.yourdomain/ui 即可管理博客的评论。

This work is published by 瞳观幻域 at 2026-08-08 00:00:00
Link: Building a Blog with Hexo and Meow — Methods and Lessons
This work is licensed under CC BY-NC-SA 4.0. Please indicate 溯月馆 when reprinting.
Logo
Previous postAn Untimely Flash in the Long Night of History<br>— Leftist Narratives in Hathaway and Their Relevance TodayNext post《率月纪元》Series Hub