Hugo 博客搭建流程

概述

博客由两部分组成,互相独立:

  • mycontent/ — Obsidian 笔记,存放所有文章
  • myblog/ — Hugo 框架,负责生成网站

写完文章后,运行 sync.py 同步内容,再用 hugo 构建,最后上传到服务器。


本地

安装 Hugo

winget install Hugo.Hugo.Extended

安装后重启终端,验证:

hugo version

目录结构

A67_boke/
├── mycontent/       ← Obsidian 笔记
│   └── 主题/
│       ├── 文章.md
│       └── files/   ← 文章配图
└── myblog/          ← Hugo 框架
    ├── hugo.toml
    ├── sync.py      ← 同步脚本
    ├── themes/
    └── content/     ← 由 sync.py 生成,不要手动修改

同步内容

sync.pymycontent/ 转成 Hugo 格式,自动处理:

  • 添加 front matter(标题、日期)
  • 图片重命名(去掉空格)并复制到文章目录
cd myblog
python sync.py

本地预览

hugo server

打开 http://localhost:1313 查看效果。

构建

hugo

生成的静态文件在 myblog/public/ 目录。


服务器

服务器系统:Debian,Web 服务器:Nginx。

安装 Nginx

apt update && apt install nginx -y

创建站点目录

mkdir -p /var/www/blog

配置 Nginx

新建配置文件:

nano /etc/nginx/sites-available/blog

写入以下内容,替换 yourdomain.com 为你的域名:

server {
    listen 80;
    server_name yourdomain.com;
    root /var/www/blog;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

启用配置:

ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

上传文件

本地构建后,用 rsync 上传 public/ 目录:

rsync -avz --delete public/ user@yourdomain.com:/var/www/blog/

--delete 会删除服务器上多余的旧文件,保持同步。


发布流程总结

每次写完新文章:

apt install rsync -y
cd myblog
python sync.py          # 同步 Obsidian 内容
hugo                    # 构建静态文件
rsync -avz --delete public/ user@yourdomain.com:/var/www/blog/
# /mnt/c/Users/20881/vscode/A67_boke/myblog/public/


# 申请证书
apt install certbot python3-certbot-nginx -y
certbot --nginx -d yourdomain.com  # 输入到期提醒(90天有效期)邮箱, 同意条款

三条命令,完成发布。