从零到一:在Ubuntu上构建你的Hugo静态博客

张开发
2026/4/17 16:37:47 15 分钟阅读

分享文章

从零到一:在Ubuntu上构建你的Hugo静态博客
1. 为什么选择Hugo搭建静态博客作为一个常年折腾博客的老玩家我试过WordPress、Hexo等各种方案最终在2019年遇到Hugo后就再没换过。Hugo这个用Go语言写的静态网站生成器最让我惊艳的是它的编译速度——我500多篇文章的博客完整重建只需要1.2秒。相比之下之前用Hexo要等将近一分钟。对于Linux用户来说Hugo简直是绝配。它不需要像PHP那样配置运行环境也没有数据库依赖就是一个纯粹的二进制文件。我在Ubuntu 20.04上实测从零开始到第一个页面呈现整个过程不超过15分钟。特别适合想要快速搭建技术博客的开发者或者需要轻量级文档站点的团队。Hugo的核心优势可以总结为三点首先是极致的速度得益于Go语言的并发特性其次是简单的内容管理所有文章都用Markdown编写最后是丰富的主题生态官方主题库有超过300款设计。我现在的个人博客就是用PaperMod主题支持暗黑模式、图片懒加载等现代功能。2. 准备Ubuntu环境2.1 系统要求检查在开始之前建议先确认你的Ubuntu版本。打开终端输入lsb_release -a我推荐使用Ubuntu 18.04及以上版本特别是如果你打算用最新版Hugo目前稳定版是0.101.0。旧版系统可能会遇到GLIBC兼容性问题这个坑我去年帮学弟排查过两小时。2.2 安装必要依赖虽然Hugo本身不需要太多依赖但有几个工具会让后续操作更顺畅sudo apt update sudo apt install -y git wget curl特别是git因为大多数Hugo主题都托管在GitHub上。有次我在客户现场演示时发现他们公司的Ubuntu镜像居然没预装git现场翻车记忆犹新。3. 安装Hugo的三种姿势3.1 官方推荐方式Snap安装这是最无脑的安装方法sudo snap install hugo --channelextended注意要加--channelextended参数这样才能获得Sass/SCSS支持。我去年用默认安装后发现主题样式异常排查半天才发现是这个原因。安装后验证版本hugo version应该能看到类似hugo v0.101.0-466fa43extended linux/amd64的输出。3.2 手动下载deb包如果公司内网禁用snap比如某些金融企业可以用wget直接下载wget https://github.com/gohugoio/hugo/releases/download/v0.101.0/hugo_extended_0.101.0_Linux-64bit.deb sudo dpkg -i hugo_extended_0.101.0_Linux-64bit.deb记得选extended版本否则某些主题的高级功能会受限。3.3 源码编译安装对于需要定制化的情况可以从源码编译git clone https://github.com/gohugoio/hugo.git cd hugo go install --tags extended这需要提前安装好Go语言环境适合想要尝鲜最新特性的开发者。4. 创建你的第一个Hugo站点4.1 初始化项目找个喜欢的目录执行hugo new site myblog --force cd myblog这里的--force参数是防止目录非空时报错。我习惯在~/Projects下管理所有项目你可以根据自己习惯调整。4.2 目录结构解析生成的目录结构是这样的myblog/ ├── archetypes/ ├── content/ ├── data/ ├── layouts/ ├── static/ ├── themes/ └── config.toml重点说下几个关键目录content/存放所有Markdown文章themes/主题安装位置static/图片等静态资源config.toml全局配置文件5. 主题安装与配置5.1 选择合适主题官方主题库themes.gohugo.io有300主题新手我推荐从这些开始PaperMod现代简约风功能齐全LoveIt中文优化好支持数学公式Ananke官方示例主题适合学习5.2 安装主题以PaperMod为例git clone https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod --depth1--depth1只克隆最新提交节省时间和空间。有次我没加这个参数结果主题仓库历史提交太大卡了十分钟。5.3 配置主题编辑config.tomlbaseURL http://example.org/ languageCode zh-CN title 我的技术博客 theme PaperMod [params] defaultTheme auto # 自动切换日/夜模式 disableSpecial1stPost true建议至少设置这几点其他配置可以后续慢慢调整。6. 本地运行与调试6.1 启动开发服务器执行hugo server -D --bind0.0.0.0参数说明-D包含草稿文章--bind允许局域网访问你会看到类似输出Web Server is available at http://localhost:1313/按CtrlC停止服务。6.2 常见问题排查如果页面空白检查主题是否正确安装到themes目录config.toml的theme名称是否匹配是否添加了-D参数新文章默认是草稿7. 创作你的第一篇文章7.1 新建文章执行hugo new posts/hello-world.md这会在content/posts下生成模板文件。Hugo支持内容分章节管理比如可以把教程放在tutorials/目录。7.2 Markdown写作技巧打开生成的md文件你会看到前置元数据--- title: Hello World date: 2023-07-20T15:32:4308:00 draft: true ---建议修改为--- title: 我的第一篇Hugo文章 date: 2023-07-20T15:32:4308:00 draft: false tags: [Hugo, 入门] categories: [技术] ---这样能更好地组织内容。8. 部署到生产环境8.1 生成静态文件执行hugo --minify--minify会压缩HTML/CSS/JS提升加载速度。生成的静态文件在public目录可以直接部署到任何Web服务器。8.2 自动化部署脚本我常用的部署脚本deploy.sh#!/bin/bash hugo --minify rsync -avz --delete public/ userserver:/var/www/blog/配合crontab可以实现定时自动构建。9. 进阶技巧与优化9.1 自定义短代码在layouts/shortcodes下创建自定义组件。比如添加一个警告框div classalert alert-warning {{ .Inner }} /div然后在md文件中使用{{ alert }} 这里是重要提示 {{ /alert }}9.2 图片处理优化Hugo支持图片处理管道![示例图片](example.jpg 标题)会自动生成响应式图片和多尺寸版本。10. 日常维护建议建议定期执行hugo mod clean清理不再使用的模块缓存。我的博客曾经因为缓存堆积占用了2GB空间后来设置了每月自动清理。养成内容备份习惯最简单的方案是把整个项目目录用git管理。我遇到过硬盘故障丢失半个月内容的情况现在都是用GitHub私有仓库实时同步。

更多文章