使用 Zola 搭建静态博客
为什么选择 Zola
在 2026 年的今天,静态站点生成器已经多如牛毛。Jekyll、Hugo、Next.js、Astro……每个都有自己的拥趸。但我最终选择了 Zola,原因很简单:
- 单二进制 — 不需要 Node.js、不需要 Ruby、不需要 Python。下载一个可执行文件就能跑。
- 速度快 — Zola 用 Rust 编写,构建几百篇文章也就是毫秒级的事。
- 没有 JavaScript 依赖 — 默认输出纯 HTML + CSS,干净利落。
- 语法高亮内建 — 不用额外配置。
- 模板语言 Tera — 如果你熟悉 Jinja2 或 Django 模板,上手零成本。
安装 Zola
Zola 的安装非常简单。macOS 用户:
brew install zola
Linux 用户可以从 GitHub Releases 下载静态二进制文件:
# 以 x86_64 Linux 为例
wget https://github.com/getzola/zola/releases/latest/download/zola-x86_64-unknown-linux-gnu.tar.gz
tar xzf zola-x86_64-unknown-linux-gnu.tar.gz
sudo mv zola /usr/local/bin/
验证安装:
zola --version初始化项目
zola init my-blog
cd my-blog
这条命令会生成一个基本的目录结构:
my-blog/
├── config.toml # 站点配置
├── content/ # 文章内容 (Markdown)
├── templates/ # Tera 模板
├── static/ # 静态资源
├── sass/ # SCSS 文件
└── themes/ # 主题(可选)
注意:Zola 默认生成
config.toml,但我个人习惯将其命名为zola.toml。实际上 Zola 会同时查找config.toml和zola.toml。
配置站点
编辑 zola.toml,填入基本信息:
base_url = "https://your-domain.com"
title = "我的博客"
description = "记录技术与生活"
default_language = "zh"
taxonomies = [
{ name = "tags", feed = true },
]
compile_sass = true
[extra]
author = "your-name"
配置项说明:
base_url— 站点的最终部署 URL,用于生成 RSS 和 sitemap。taxonomies— 分类法,这里定义了「标签」分类。compile_sass— 开启 SCSS 编译。
编写模板
Zola 使用 Tera 模板引擎。这是博客的最小模板集:
base.html — 基础骨架
<!DOCTYPE html>
<html lang="{{ lang }}">
<head>
<meta charset="UTF-8">
<title>{% block title %}LLS Blog{% endblock %}</title>
<link rel="stylesheet" href="/style.css">
</head>
<body>
<header>
<nav>
<a href="/" class="site-title">LLS Blog</a>
</nav>
</header>
<main>{% block content %}{% endblock %}</main>
</body>
</html>index.html — 首页
首页展示最近的文章列表。通过 get_section 获取博客分区内容,然后用循环显示最新的 5 篇文章。
page.html — 文章页
文章页使用 page.content 来渲染 Markdown 转换后的 HTML。所有 Markdown 内容通过 | safe 过滤器标记为安全的 HTML。
创建第一篇文章
在 content/blog/ 下创建 .md 文件,文件头 (front matter) 使用 TOML 格式:
+++
title = "我的第一篇文章"
date = 2026-01-01
description = "这是一篇示例文章"
[taxonomies]
tags = ["hello", "blog"]
+++
文章内容写在这里…
Zola 会根据文件名生成永久链接,zola-blog-setup-guide.md 的链接就是 /blog/zola-blog-setup-guide/。
构建与预览
# 启动开发服务器(带热重载)
zola serve
# 构建生产版本
zola build
zola serve 会在 http://127.0.0.1:1111 启动一个开发服务器,任何文件修改都会自动触发重建。
zola build 将生成的静态文件输出到 public/ 目录,这个目录可以直接上传到任何静态托管服务。
集成 Pagefind 搜索
Pagefind 是一个静态搜索库,专门为静态站点设计,支持中日韩文字。与 Zola 结合使用非常完美。
安装:
npm install -g pagefind
每次构建后生成搜索索引:
zola build
npx pagefind --site public
Pagefind 会分析 public/ 目录中的 HTML 文件,生成搜索索引。在前端,你只需引入它们的 JS 和 CSS 即可添加搜索框。
关于 Pagefind 的更多细节,我会在后续文章中详细介绍。
部署
部署方式有很多种选择:
- 自托管 — 用 Nginx 或 Caddy 指向
public/目录 - GitHub Pages — 推送到
gh-pages分支 - Netlify / Vercel — 连接 git 仓库,设置构建命令为
zola build - Cloudflare Pages — 类似 Netlify,但有全球 CDN
我的选择是自托管到自己的服务器上,用 Caddy 做反向代理并自动配置 HTTPS。
结语
Zola 是我目前用过最顺手的静态站点生成器。它不需要复杂的构建管道,不需要几十个依赖包,一个二进制文件就能搞定一切。
如果你正在寻找一个轻量、快速、可靠的博客方案,不妨试试 Zola。本博客的完整代码可以在我的 Gitea 上查看。
下一篇我会写如何配置 Zola 的主题和自定义域名,敬请期待。