使用 Hugo 发布博客
使用 Hugo 发布博客
从零开始搭建 Hugo 博客并部署到个人服务器的完整流程
背景
Hugo 是由 Go 语言编写的静态网站生成器,以其超快的构建速度著称。使用 Hugo 搭建个人博客的优势:
- 速度快:Go 语言编写,构建速度极快
- 无需运行时:生成的纯静态文件,部署简单
- 主题丰富:有大量免费和付费主题可供选择
- Markdown 支持:内容创作简单高效
1. 环境准备
安装 Hugo
在 macOS 上使用 Homebrew 安装:
brew install hugo
验证安装:
hugo version
# hugo v0.146.0+extended darwin/arm64 BuildDate=unknown
建议安装 extended 版本,支持更多主题功能。
安装 Git
Hugo 站点通常使用 Git 进行版本控制:
brew install git
2. 博客目录初始化
初始化博客目录
hugo new site yzchen.space
创建新文章
cd yzchen.space
hugo new posts/20260214-hugo-blog-guide.md
Hugo 会自动在 content/posts/ 目录下创建文件,并添加基本的 front matter。
---
title: "文章标题"
date: 2026-02-14
draft: false
tags: ["标签1", "标签2"]
categories: ["分类"]
---
正文内容...
目录结构如下:
yzchen.space/ # Hugo 站点源码
├── content/
│ └── posts/ # 博客文章目录
│ └── 20260214-hugo-blog-guide.md
├── static/
│ └── images/ # 图片资源
├── themes/ # 主题目录
├── hugo.toml # 站点配置
└── public/ # 构建输出(部署用)
3. 本地预览
在开发过程中,可以使用 Hugo 的开发服务器进行实时预览:
hugo server -D
# 参数说明
# -D, --buildDrafts 包含草稿
# -w, --watch 文件变更自动刷新
# -p, --port 指定端口(默认 1313)
- 访问
http://localhost:1313即可实时预览。 - Hugo 的开发服务器支持热重载,修改文件后浏览器会自动刷新,非常方便。
常用命令
| 命令 | 说明 |
|---|---|
hugo new posts/<title>.md |
创建新文章 |
hugo server |
本地预览 |
hugo |
构建 production 版本 |
4. 图片管理
在文章中使用图片:
- 将图片放入
static/images/目录 - 在文章中引用:

5. 发布到服务器
构建生产版本
hugo
执行后,生成的静态文件会放在 public/ 目录下。
如果需要手动部署:
rsync -avz --delete public/ your-host:/var/www/hugoblog/public/
参数说明:
-a:保留文件属性-v:显示详细输出-z:压缩传输--delete:删除服务器上不存在于本地的文件
同步后,配置 Ngnix 或者 Caddy 来 serve 这个目录即可
6. 访问量统计
如果你不想在网页里插入任何第三方脚本,也不想把数据给别人,直接分析 Caddy 生成的 Access Log 是最方便的方法。
在 Caddyfile 中开启日志:
yourdomain.com {
root * /var/www/hugo
file_server
log {
output file /var/log/caddy/access.log
}
}
安装 GoAccess:
sudo apt install goaccess # Ubuntu
运行命令生成报告:
grep -v '"uri":"/admin' /var/log/caddygaa/access.log | \ # 过滤不必要的前缀
goaccess - -o /var/log/caddy/access.html \ # 输出到文件
--log-format=CADDY \ # 使用 Caddy 的日志格式
--ignore-crawlers # 过滤爬虫
7. 常见问题
403 Forbidden
问题:部署后访问网站返回 403 错误
解决:SSH 到服务器检查目录权限
ssh yzchen@yzchen.space
ls -la /var/www/hugoblog/
sudo chown -R www-data:www-data /var/www/hugoblog/
sudo chmod -R 755 /var/www/hugoblog/
浏览器缓存问题
问题:发布后看到的是旧内容
解决:强制刷新浏览器(Ctrl+Shift+R 或 Cmd+Shift+R),或清除浏览器缓存。
参考资源: