动态博客(WordPress/Typecho)功能全但要数据库、要 PHP、要防扫描;纯写作 + 展示的场景,静态博客是降维打击:无数据库、无后端、兆级带宽都压不垮、Git 即后台。Hugo 是其中的速度之王。平台选型全景见个人博客平台怎么选。
一、静态博客 vs 动态博客:先想清楚再选
| 静态(Hugo 等) | 动态(WordPress/Typecho) | |
|---|---|---|
| 组成 | 纯 HTML 文件 + Nginx | PHP + MySQL + Web 服务 |
| 速度 | 极致(无渲染无查询) | 取决于优化 |
| 安全面 | 几乎没有(没有可执行入口) | PHP/数据库/插件全是攻击面 |
| 后台 | 本地 Markdown + Git | Web 后台 |
| 评论/搜索 | 接第三方或静态方案 | 插件即得 |
| 服务器要求 | 任意能放文件的地方 | 要 PHP + 数据库环境 |
| 适合 | 技术博客、文档、作品集 | 要后台编辑、多人协作 |
判断标准:内容是"写给人看"的(文章、文档)→ 静态;需要"读者参与"(评论、投稿、会员)→ 动态。本站(z0w.cn/wiki)本身就是 Typecho 动态站,但技术文档类子站完全可以用 Hugo——两者可以并存。
二、Hugo 是什么:为什么是它
静态博客生成器(SSG)里 Hugo 的特点是快——几百篇文章毫秒级构建,其他生成器要几秒到几十秒。单二进制、无依赖、跨平台:
# 安装(以 Linux amd64 为例,去 GitHub Releases 下对应版本)
wget https://github.com/gohugoio/hugo/releases/download/v0.140.0/hugo_0.140.0_linux-amd64.tar.gz
tar -xzf hugo_0.140.0_linux-amd64.tar.gz hugo
mv hugo /usr/local/bin/
hugo versionWindows/Mac 也有对应二进制,或用包管理器(brew install hugo)。
三、建站:五分钟从零到首页
# 1. 建站(会生成完整目录结构)
hugo new site myblog
cd myblog
# 2. 装主题(以 PaperMod 为例,社区主题最全的一类)
git init
git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod
# 3. 配置主题
echo 'theme = "PaperMod"' >> hugo.toml
# 4. 写第一篇文章
hugo new posts/hello.md
# 编辑 content/posts/hello.md,把 draft: true 改成 false
# 5. 本地预览
hugo server -D # 打开 http://localhost:1313
# 6. 构建发布
hugo # 生成 public/ 目录,全是静态文件就这些。public/ 目录就是完整网站,扔到任何 Web 服务器都能跑。
常用命令
hugo new posts/新文章.md # 新建文章(用主题的 archetype 模板)
hugo server -D # 本地预览(含草稿,改文件自动刷新)
hugo --minify # 构建并压缩 HTML/CSS/JS
hugo new theme my-theme # 进阶:自己搓主题(一般用现成的)四、主题与配置速查
主题去哪找:themes.gohugo.io,几百个任选。中文博客推荐 PaperMod、Stack、DoIt;文档类推荐 Book、Relearn。
hugo.toml 核心配置项:
baseURL = 'https://blog.yourdomain.com' # 必改,影响绝对链接
languageCode = 'zh-CN'
title = '我的博客'
theme = 'PaperMod'
[params]
author = '你'
description = '写代码和生活的的地方'
[menu]
[[menu.main]]
name = '首页'
url = '/'
weight = 1
[[menu.main]]
name = '归档'
url = '/archives/'
weight = 2文章头部(front matter):
---
title: "文章标题"
date: 2026-10-19
tags: ["技术", "教程"]
categories: ["博客"]
draft: false # true = 草稿,hugo server -D 才可见
---五、部署:三种方式按需选
方式 1:自己的服务器 + Nginx(本文推荐)
# 本地构建后 rsync 到服务器
rsync -avz --delete public/ root@服务器IP:/var/www/blog/
# 服务器 Nginx 配置极简(静态站没有 PHP 那一套)
server {
listen 443 ssl;
server_name blog.yourdomain.com;
root /var/www/blog;
index index.html;
ssl_certificate /etc/nginx/ssl/blog.yourdomain.com.pem;
ssl_certificate_key /etc/nginx/ssl/blog.yourdomain.com.key;
location / {
try_files $uri $uri/ =404;
}
}Nginx 基础见Nginx 安装与配置,HTTPS 证书见SSL 证书完全指南。
成本彩蛋:静态站资源消耗约等于零,2核2G 轻量服务器能挂十几个静态站——每个站一个 Nginx server 块 + 一个目录的事。想更省,直接上 CDN/对象存储,源站钱都省了,见静态网站 CDN 部署。
方式 2:GitHub Pages / Vercel / Netlify
代码推 GitHub,平台自动构建发布,零服务器成本。适合不想维护机器的场景,缺点是国内访问速度看脸,自定义域名要会配 DNS(DNS 记录指南)。
方式 3:CI 自动部署
git push → 自动构建 → 自动发布到服务器,懒人终极形态。用 GitHub Actions 或自建 CI,完整流水线见CI/CD 自动化部署指南。核心就三步:装 Hugo → hugo --minify → rsync public/ 到服务器。
六、静态站的 Swiss Army Knife
没数据库不代表没功能,全都有替代方案:
| 需求 | 静态方案 |
|---|---|
| 评论 | Giscus(GitHub Discussions)/ Disqus / Waline |
| 搜索 | 页面内 JS 搜索(fuse.js)/ Pagefind |
| 统计 | Umami 自托管 |
| 图片 | 压缩后提交,或对象存储 + CDN(图片优化) |
| 域名/HTTPS | acme.sh 自动续期(SSL 指南) |
| 备份 | Git 就是备份,push 即异地 |
评论用 Giscus 的方案额外红利:评论数据在 GitHub,无广告、无追踪、静态站最后的"动态"拼图。
七、常见问题排查
| 症状 | 原因 | 解决 |
|---|---|---|
| 页面 404 | baseURL 错 / 文件名大小写 | 检查 hugo.toml 的 baseURL;Linux 大小写敏感 |
| 主题不生效 | submodule 没拉 / theme 名错 | git submodule update --init;核对目录名 |
| 本地好着线上样式丢 | CSS 相对路径 / baseURL | 用绝对路径引用资源 |
| 构建越来越慢 | 图片全在仓库里 | 大图挪对象存储 + CDN |
| 草稿意外发布 | draft: false 忘了改 | 发布前 hugo 后检查 public/ |
| 文章顺序乱 | date 字段问题 | 检查 front matter 的 date |
八、和 Typecho 的分工建议
如果你像本站一样已有一个动态站,Hugo 的定位建议:
- Hugo 放:技术文档、API 文档、更新日志、作品集——写完即发、要速度、不怕没后台
- Typecho/WordPress 放:需要后台随时改、多人协作、评论互动的主站
- 两个站之间互相内链,SEO 互补;静态文档站还可以直接用 MkDocs/VuePress(文档专用 SSG,比 Hugo 更开箱即用)
结语
Hugo 把博客还原到本质:Markdown 进,HTML 出,Git 管版本,Nginx 只负责发文件。没有数据库要备份、没有 PHP 要打补丁、没有后台要被扫——对于"我只是想安静写字"的人,这就是最优解。五分钟建站,然后把时间花在内容上。
需要放静态站的服务器,可以看看财富云计算:NAT 型云服务器低配就够、SSD 系统盘,一台机器挂多个静态站毫无压力,价格比独立 IP 机型省一半以上——"吃带宽不吃公网 IP"的纯展示场景,NAT 型刚好对症。
延伸阅读
- Homepage 个人仪表盘:把散落各处的服务收进一个首页
- SSL 证书完全指南:免费证书、自动续期与不过期监控
- 数据备份体系完全手册:从随手拷到 3-2-1,让数据永远丢不了
- 压测与容量规划:上线前就知道你的服务器能扛多少人
- AdGuard Home 内网 DNS:全家去广告、防劫持、内网解析一站解决
- 安全应急响应完全手册:服务器被入侵后,按这个流程走
- 游戏服运营完全手册:从开服到停服,把一台服务器运营成百年老店
- Loki 日志体系搭建:轻量级日志聚合,Grafana 里查遍所有服务器

[...]netsh advfirewall firewall add rule name="GameRange" dir=in action=allow protocol=UDP localport=26901-26903完整的 Windows 环境准备(远程桌面连接、运行库安装、SteamCMD 用法、开机自启、8 个常见坑)见:《Windows 云服务器开服通用前置教程》→ htt[...]
2026-10-19 回复