使用 Hugo 发布博客

使用 Hugo 发布博客

从零开始搭建 Hugo 博客并部署到个人服务器的完整流程

背景

Hugo 是由 Go 语言编写的静态网站生成器,以其超快的构建速度著称。使用 Hugo 搭建个人博客的优势:

  1. 速度快:Go 语言编写,构建速度极快
  2. 无需运行时:生成的纯静态文件,部署简单
  3. 主题丰富:有大量免费和付费主题可供选择
  4. 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)

常用命令

命令 说明
hugo new posts/<title>.md 创建新文章
hugo server 本地预览
hugo 构建 production 版本

4. 图片管理

在文章中使用图片:

  1. 将图片放入 static/images/ 目录
  2. 在文章中引用:
![图片描述](/images/your-image.png)

5. 发布到服务器

构建生产版本

hugo

执行后,生成的静态文件会放在 public/ 目录下。

如果需要手动部署:

rsync -avz --delete public/ your-host:/var/www/hugoblog/public/

参数说明:

同步后,配置 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),或清除浏览器缓存。


参考资源