Hexo 博客搭建全过程及我踩过的坑
从零搭建博客和踩坑记录
耗费了整整三天,终于成功搭建好了自己的个人技术博客。从零基础环境配置、主题安装美化,到最终部署上线到 GitHub Pages,遇到了新手大概率会遇到的各类问题。
这篇博客记录了自己亲自的搭建经历以及踩过的坑。
一、搭建前的准备
搭建 Hexo 博客只要提前装好两个核心环境,绝大多数启动报错都是环境缺失、版本不匹配导致的。
1. 必须安装的软件
Node.js:Hexo 运行核心环境,最好安装 LTS 稳定版,最新测试版容易出现兼容报错
官网链接:https://nodejs.org/Git:用于本地博客初始化、远程仓库部署
官网链接:https://git-scm.com/
安装完成后,要重新打开新的终端窗口,输入一下命令,验证环境是否配置成功:
1 | node -v |
能正常输出版本号即为安装成功,若提示“不是内部或外部命令”,大概率是环境变量未配置。
二、Hexo 基础搭建流程
前期环境配置无误后就可以开始初始化博客。
1. 全局安装 Hexo
1 | npm install -g hexo-cli |
如果下载很慢,可以切换国内镜像:
1 | npm config set registry https://registry.npmmirror.com |
2. 初始化博客文件夹
1 | hexo init blog |
blog 就是我们的博客根目录,路径不要带空格和中文,否则可能出现命令报错或构建异常。
3. 安装依赖包
1 | npm install |
4. 本地启动测试
1 | hexo s |
终端启动成功后,浏览器打开 localhost:4000,即可看到 Hexo 默认初始页面,代表基础博客搭建完成。
按 Ctrl + C 可以停止本地服务。
三、主题安装与配置
Hexo 默认主题样式简陋,我选择了热门主题 Butterfly。
1. 下载主题到根目录
执行:
1 | git clone https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly |
2. 启用主题
打开博客根目录的 _config.yml 全局配置文件,找到 theme 配置项,修改为:
1 | theme: butterfly |
YAML 语法严格,冒号后面必须加空格,不能用中文标点,否则会报错。
3. 主题依赖安装
Butterfly 主题需要额外依赖,很多新手跳过这一步,导致页面空白、功能失效。在根目录执行:
1 | npm install hexo-renderer-pug hexo-renderer-stylus --save |
本地预览测试:
1 | hexo clean && hexo s |
四、我踩过的坑
以下所有问题均为我搭建过程中亲身遇到、逐一排查解决的真实报错。
1. 环境安装成功,终端依然提示命令不存在
问题原因:软件安装时未勾选自动配置环境变量,或手动配置路径错误,系统无法识别 hexo、node 等命令。
解决方案:重新安装 Node.js 和 Git,务必勾选自动配置环境变量;若已安装,手动找到软件安装路径,添加到系统环境变量后,重启终端再测试。
2. hexo s 启动失败,终端报错、页面无法访问
问题原因:博客文件夹依赖缺失、npm 缓存冲突、初始化文件残缺。
解决方案:依次执行清理、重装依赖、重启服务命令:
1 | hexo clean |
3. 更换 Butterfly 主题后,网站样式错乱、纯白空白
问题原因:99% 是未安装主题专属渲染依赖,这是新手最容易遗漏的步骤,默认主题无需这些依赖,Butterfly 必须单独安装。
解决方案:执行上文的 pug、stylus 渲染依赖安装命令,清理缓存后重启服务即可恢复正常样式。
4. 配置文件修改后不生效,改了白改
问题原因:两个核心误区:一是混淆全局配置和主题配置文件,二是修改配置后未清理缓存、未重启服务。
核心区分:
- 根目录
_config.yml:全局配置(网站标题、描述、部署仓库) themes/butterfly/_config.yml:主题配置(侧边栏、图标、美化样式)
解决方案:修改任意配置后,固定执行 hexo clean && hexo s,确保新配置生效。
5. Markdown 文章无法渲染、图片不显示
问题原因:文章命名不规范、图片路径错误、特殊符号冲突。
解决方案:文章文件名尽量只用英文、数字、下划线,避免中文和空格;图片使用正确路径,存放到规范文件夹,避免路径识别失败。
6. 部署 GitHub Pages 失败,网页加载空白
这个放到 GitHub 部署部分详细讲解。
五、GitHub Pages 部署 Hexo 博客
作用:把本地博客上传到 GitHub,生成公开网址,任何人都能访问你的博客。
前置准备:
- 注册 GitHub 账号:https://github.com/
- 记住你的 GitHub 用户名(username,区分大小写)
- 已经安装 Git,并且配置 Git 用户名和邮箱(和 GitHub 账号保持一致)
1. 本地配置 Git
打开终端,任意位置执行:
1 | git config --global user.name "你的GitHub用户名" |
2. GitHub 创建仓库
登录 GitHub 主页,右上角点击 New 新建仓库
仓库名称:部署到个人主页时必须是
你的用户名.github.io;部署到项目页时仓库名可以自定义例:如果你的 GitHub 用户名是 zhonghai2006,部署到个人主页时仓库名就填
zhonghai2006.github.io仓库名或发布分支设置错误,都可能导致网页无法访问
Description 描述随便写
勾选 Public(公开仓库,免费)
不要勾选 Add README file,直接点 Create repository 创建仓库
3. 安装 hexo-deployer-git 部署插件(博客根目录执行)
进入你的 blog 博客根目录,终端运行:
1 | npm install hexo-deployer-git --save |
这个插件就是一键自动推送博客静态文件到 GitHub 仓库。
4. 修改 Hexo 根目录 _config.yml 的部署配置
打开根目录的 _config.yml,拉到最底部,找到 deploy 配置,改成下面内容:
1 | deploy: |
示例:
1 | deploy: |
注意:冒号后面必须有空格,YAML 语法严格,中文标点会直接部署失败!
如果部署的是项目页,还需要同步修改根目录
_config.yml的 url 和 root,否则页面样式和链接会 404。例如仓库名为boke-github.io时:
1
2 url: https://zhonghai2006.github.io/boke-github.io
root: /boke-github.io/
5. 生成静态文件 + 一键部署(每次更新博客都要执行这三步)
在博客根目录终端依次执行:
1 | # 清理旧缓存文件 |
hexo g=hexo generate,生成网页hexo d=hexo deploy,部署推送
第一次执行
hexo d前需要先配置好 GitHub 凭据:用 SSH 密钥推送(repo写成git@github.com:用户名/仓库名.git),或在 HTTPS 地址下使用 Personal Access Token 登录。
6. 访问你的博客
等待 1 至 3 分钟(GitHub 需要时间构建页面):
- 部署到个人主页:https://你的用户名.github.io
- 部署到项目页:https://你的用户名.github.io/你的仓库名/
我在 GitHub Pages 部署时踩过的坑
1. 仓库名字写错,网站打不开
- 部署到个人主页时,仓库名必须是
用户名.github.io,大小写严格匹配 - 部署到项目页时,仓库名可自定义,但访问路径要带上仓库名
2. hexo d 报错,提示权限不足
- 确认
repo地址是否正确,是否多复制了空格 - SSH 方式:确认已生成 SSH 密钥并添加到 GitHub 账号
- HTTPS 方式:使用 Personal Access Token 代替账号密码登录
3. 部署成功,但打开网页 404
- 查仓库发布分支是不是
main - 项目页还要检查
url和root是否和仓库名一致 - 等待几分钟再刷新
- 确认
hexo g生成了 public 文件夹
4. 每次更新文章,网页不变
每次写完文章,必须执行 hexo clean && hexo g && hexo d,清理缓存再重新生成 + 部署
搭建复盘
这次从零搭建 Hexo 博客,看似是简单的工具部署,实则让我收获很多。所有报错和 bug,基本都源于细节遗漏、配置混淆、文件存放不规范,而非操作难度过高。
踩坑的过程,也是快速学习、积累经验的过程,不仅熟练掌握了 Hexo 博客的搭建、配置、排错方法,也对前端静态网站、Git 部署、环境配置有了更清晰的认知。



