Hugo 静态博客部署到 VPS:又快又省
Hugo 静态博客部署到 VPS:又快又省。博客不需要数据库也能跑:Hugo 把 Markdown 编译成纯静态页面,Nginx 直接托管,1核1G 跑得飞起,还没有被黑的风险。小够讲本地写作、两种部署方式和静态博客的边界。
我是小够,只推够用的 VPS。
不是所有网站都需要 WordPress。纯博客、文档站,静态生成是更优解:Hugo 把 Markdown 编译成纯 HTML,Nginx 直接托管——没有数据库、没有 PHP,速度飞起,还天然免疫 99% 的 Web 攻击。今天讲从本地写作到 VPS 上线的完整流程。
为什么选 Hugo
- 快:生成上千篇文章只要几秒;访客打开的是纯静态文件,TTFB 极低,1 核 1G 的小 VPS 毫无压力。
- 省:不需要数据库、不需要 PHP,服务器资源占用忽略不计——博客这种场景,买大配置纯属浪费。
- 安全:没有动态执行环境,SQL 注入、文件上传漏洞、插件漏洞这些攻击面直接不存在。WordPress 三天两头爆插件漏洞,静态站可以安心睡觉。
代价也有:没有后台管理界面,写文章要在本地编辑器里写 Markdown;评论、搜索这类动态功能要靠第三方服务补。能接受这两点,静态就是满分答案。
本地写作流程
本地装 Hugo,建站:
hugo new site myblog && cd myblog
挑个主题放 themes/ 目录(Hugo 官方主题站很多,选个看着顺眼的),hugo new posts/hello.md 写文章,hugo server 本地实时预览。写完 hugo 一编译,public/ 目录就是整个网站——写作和发布是分离的:本地写、编译、只传静态文件上服务器,服务器上连 Hugo 都不用装。
这个流程有个巨大好处:你的博客内容就是一堆 Markdown 文件,Git 管理、备份、迁移都极其简单。想换服务器?把 public/ 传过去就行,10 分钟搞定。
部署方式一:手动传
把 public/ 的内容 rsync/scp 到服务器的网站目录,Nginx 配个静态站点:
server {
listen 80;
server_name your-domain.com;
root /var/www/myblog/public;
index index.html;
}
简单直接,适合更新不频繁的站。缺点是每次更新都要手动传——文章写得勤的人会烦。
部署方式二:Git 自动部署(推荐)
服务器上建个裸仓库,加个 post-receive hook:收到 push 自动拉代码、跑 hugo 编译、输出到网站目录。以后你本地写完文章,git push,网站自动更新——写博客变成"写完 push 就完事",体验接近有后台的系统。
hook 脚本的核心逻辑就三行:checkout 代码 → hugo --minify 编译 → 同步到网站目录。配一次,终身受益。
SSL、评论和搜索
SSL 和普通站点一样,certbot 一把梭。评论用 Giscus(基于 GitHub Discussions,免费)或 Waline,一段 JS 嵌入就行。站内搜索可以用 Hugo 自带的 JSON 索引+前端 JS 实现,不依赖后端——静态站的"动态功能",都是靠前端 JS + 第三方服务拼出来的,这是它的哲学。
静态博客的边界
诚实地说,静态博客不适合:
- 需要用户登录、会员系统的站
- 电商、订单这类强交互业务
- 内容每天更新几十篇的资讯站(编译和部署流程会成为瓶颈)
个人博客、文档、技术笔记、作品集——静态是满分答案。别拿着锤子找钉子,先看场景。
主题选择建议
Hugo 主题站里有几百个主题,选的时候看三点:最近更新时间(一年没更新的别碰)、是否支持中文(有些主题对中文排版不友好)、功能别贪多(要评论、搜索、暗色模式,想清楚再选,功能越多越难维护)。
小够的建议:先选个简洁的默认主题跑起来,写 20 篇文章之后,你自然知道自己想要什么功能,那时候再换主题——内容比主题重要,别在选主题上花一周。
小够总结
Hugo + VPS 是"够用主义"的典范:最低的成本、最快的速度、最小的攻击面。如果你建站只是为了写东西,别上 WordPress——静态博客香得多,还不用操心插件更新和安全加固。等哪天你真需要动态功能了,再迁移也不迟。先跑起来,再谈扩展。