前言
搭建个人博客一直是我想做的事情。经过对比Hexo、Hugo等主流静态博客框架后,我选择了 Hugo —— 以其极快的构建速度和灵活的配置脱颖而出。本文记录了从零开始搭建博客并部署到 Cloudflare Pages 的完整流程。
环境准备
安装 Hugo
macOS 上使用 Homebrew 安装:
brew install hugo
安装完成后验证:
hugo version
创建站点
hugo new site blog
cd blog
初始化 Git 并添加主题
git init
git submodule add --depth=1 https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod
使用 git submodule 管理主题的好处是后续更新主题非常方便,直接 git submodule update 即可。
站点配置
编辑 hugo.toml,核心配置如下:
baseURL = "/"
locale = "zh-cn"
title = "我的博客"
theme = "PaperMod"
PaperMod 主题提供了丰富的参数配置,我开启了以下功能:
- 自动主题切换(亮色/暗色)
- 文章目录(TOC)
- 阅读时间估算
- 代码高亮与复制按钮
- 全文搜索(通过 JSON 输出)
搜索功能需要在 outputs 中启用 JSON:
[outputs]
home = ["HTML", "RSS", "JSON"]
本地开发
hugo server
访问 http://localhost:1313 即可实时预览,修改内容后自动热更新。
写文章
新建文章:
hugo new content posts/my-new-post.md
Hugo 使用 TOML 前置元数据,文章模板定义在 archetypes/default.md 中:
+++
title = "文章标题"
date = 2026-06-14
draft = true
tags = ["标签"]
categories = ["分类"]
summary = "摘要"
+++
默认 draft: true,写完后改为 false 才会发布。本地预览时加上 -D 参数可以查看草稿:
hugo server -D
构建站点
hugo
构建产物输出到 public/ 目录,这就是需要部署的全部静态文件。
部署到 Cloudflare Pages
为什么选 Cloudflare Pages
- 免费额度充足:无限站点、无限请求、无限带宽
- 全球 CDN:自动就近分发,国内访问速度也不错
- 自动部署:关联 Git 仓库后,push 即部署
- 自定义域名:支持绑定自己的域名,免费提供 HTTPS
部署步骤
- 将代码推送到 GitHub 仓库
- 登录 Cloudflare Dashboard,进入 Pages
- 点击 “Create a project”,选择 “Connect to Git”
- 选择 GitHub 仓库,配置构建设置:
- Build command:
hugo - Build output directory:
public - Hugo version: 选择最新版本
- Build command:
- 点击 “Save and Deploy”
自定义域名
在 Cloudflare Pages 项目设置中添加自定义域名,按照提示配置 DNS 记录即可。Cloudflare 会自动处理 HTTPS 证书。
完整工作流
日常写文章的流程非常简单:
# 1. 新建文章
hugo new content posts/article-title.md
# 2. 编辑文章内容
# 3. 本地预览
hugo server -D
# 4. 确认无误后,提交推送
git add .
git commit -m "新文章: article-title"
git push
推送后 Cloudflare Pages 自动构建部署,几分钟内即可在线访问。
遇到的问题
- 子模块拉取:克隆仓库时需要加
--recurse-submodules,否则主题目录为空 - Hugo 版本:Cloudflare Pages 支持的 Hugo 版本可能不是最新的,构建时注意选择兼容版本
- 中文路径:Hugo 默认会对中文标题做 slug 处理,建议在 front matter 中显式设置
slug
总结
整个搭建过程不到一个小时,Hugo 的开发体验非常流畅,Cloudflare Pages 的部署也足够简单。对于想要拥有个人博客的技术人来说,这是一套低成本、高效率的方案。