使用 Hugo 搭建个人博客

使用 Hugo 搭建个人博客 #

你将会获得 #

一个轻巧、漂亮、自定义而且容易部署的静态网页博客;依托于 GitHub Pages 服务,整个过程完全免费。 适用于 Windows、Linux、FreeBSD 和 macOS。

博客的网页(文章内容)使用 Markdown 语法撰写生成,在一般情况下网站的每次生成部署,都需要一台已经做好环境配置和相关准备的电脑。也可以利用 GitHub Actions 达到只需一个浏览器、随写随更新的效果。

关于 Hugo #

Hugo 是由 Go 语言实现的静态网站生成器,简单、易用、高效、易扩展、快速部署。

Hugo 不仅仅可以用来搭建博客,还有可以搭建公司主页、个人简历、项目文档等等非常多类别的主题(Themes,我习惯称之为主题)。你也可以编写或修改主题来搭建自己想要的网站。

Hugo 主页

Hugo Documentation

Hugo 中文文档

准备 #

Git #

过程中需要用到 Git 环境,也可以用 GitHub Desktop。本文以 Git 为例。

GitHub #

注册一个 GitHub 帐号。

确定主题(Themes) #

与 Hexo(另一个静态网页生成工具) 不同的是,Hugo 没有附带默认主题,需要另外加入主题否则无法生成网站。在以下网站或通过搜索引擎、GitHub 找到一个你喜欢的主题。

Hugo Themes

Hugo 皮肤列表

你可以通过主题作者已经搭建好的 Demo 页面(如果有的话)提前体验到成品效果。

如果你想尽可能简单地搭建好网站的话,在选择之初就应检查主题各项功能是否满足你的需要,例如:

  • 是否为响应式
  • 是否对 SEO 友好
  • 是否具备暗色模式
  • 是否具备多语言支持
  • 文章列表是否具备摘要
  • 内容排版、字体是否是你想要的
  • 是否支持你需要的评论系统、网站分析系统、社交网站链接

等等,当然你也可以自己修改主题以达到目的。

同时也要仔细阅读一下主题的文档,有的主题有其他的依赖组件可能需要更多步骤,或者不是标准的 Hugo 主题本文不适用。

选好之后,将主题的文件或 Git 链接保存起来备用。

安装 Hugo #

使用包管理工具安装 #

macOS 可以通过 Homebrew 进行安装

brew install hugo

Windows 可以通过 Scoop 安装

scoop install hugo

或手动下载安装 #

Hugo Releases 下载最对应版本版本并安装。

Windows 需要将程序路径加入系统 PATH

测试 #

输入以下命令确认 Hugo 已经成功安装。

hugo version

若输出相应版本信息则为成功安装。

创建一个网站 #

生成项目文件 #

在你的电脑里面选一个风水宝地,输入以下命令生成一个名为 blog 的网站项目。

hugo new site blog

Hugo 会在该目录下生成一个目录blog,进入该目录。

cd blog

将已经找好的主题文件解压放入 blog/theme 目录内,或通过 Git 克隆仓库。这里以一个名为 Paper 的主题为例,目录命名为 hugo-paper

git clone https://github.com/nanxiaobei/hugo-paper themes/hugo-paper

部分主题会附带一个示例网站,存放在 hugo-paper/exampleSite 中。将这个目录中的内容拷贝到项目根目录 blog 中,覆盖原来的文件。

现在目录结构如下:

blog
├── archetypes
├── content       # 存放网站的内容
│   ├── homepage     # 存放网站的页面
│   ├── post         # 存放网站的文章
│   ├──_index.md
│   ├── about.md
│   └── archives.md
├── data
├── layouts
├── static
├── themes        # 存放主题文件
│   └── hugo-paper   # Paper 主题文件
├── config.toml   # 网站配置文件
└── ...

编辑配置文件 blog/config.toml 确保主题被选用:

theme = "hugo-paper"

theme 的值要和主题目录名一致。

此时 Hugo 网站文件就已经准备就绪了。

启动网站 #

blog 目录下输入命令:

hugo server

看到输出有这样的信息的时候,就说明网站已经成功启动。

...
Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
Press Ctrl+C to stop

Hugo 默认部署在 1313 端口,如果该端口被占用,则会部署在其他端口。

在浏览器输入地址 http://localhost:1313/ 就可以看到网站了。

写一篇文章 #

以 Paper 主题为例,网站的文章存储在 blog/content/post 中,不同主题可能稍有不同;现在这里面已经有了一些主题作者存放的用于展示主题的示例文章,将其删除。

新建一个 my-diary.md 文件,或输入以下命令:

hugo new post/my-diary.md

打开文件,如果是 Hugo 帮你创建的话文件已经自动添加了一些元数据,也可以自己手动添加:

---
title: "my-diary"
date: 2021-01-01T00:00:01+08:00
draft: true
---

你也可以添加更多的内容丰富这篇文章:

---
title: "我的日记"
date: 2021-01-01T00:00:01+08:00
draft: false
description: "我的春游日记"
keywords: 
  - "春游"
tags: 
  - "鸡爪"
  - "火腿肠"
categories: 
  - "日记"
author: "Dangel"
---

文章内容

其中 draft 代表草稿,自动生成时默认为 true 值,表示启动和部署网站时不会包含这篇文章(除非你使用 hugo server -D 命令启动),false 值或没有这一项则会正常显示。

保存文件后,网站内容会自动更新。

部署网站 #

新建 GitHub 仓库 #

在 GitHub 中新建一个名为 <你的用户名>.github.io 的仓库,用于存放网页文件。

这里假设用户名为 monopink 部署好后网站的链接为 monopink.github.io

如果这个仓库你已经使用或者你不想使用,你可以自定义一个仓库名字,假设为 my-blog ,那么你需要推送到这个仓库的 gh-pages 分支,网站链接为 monopink.github.io/my-blog

生成网站文件 #

在生成之前先完善好配置文件 blog/config.toml

baseURL = "https://monopink.github.io/"
# 网站链接

title = "Jianghu Wiki"
# 网站标题

author = "Dangel"
# 文章作者,若文章没有定义以此显示

copyright = "Copyright © 2021 Jianghu Wiki."
# 版权信息

theme = "hugo-paper"
# 主题

除上面这些之外,其他的配置项不同主题各不相同,按具体情况来修改。

完善好后输入命令:

Hugo

网站文件会生成在 blog/public 中。

推送到 GitHub #

进入 public 目录,将这个目录下文件推送到你的 GitHub 仓库。

cd public
git init
git remote add origin https://monopink.github.io/
git add .
git commit -m "First commit"
git push -u origin main

注意将链接替换为你的仓库链接。

待推送完成后,在浏览器输入链接即可访问你的网站。

更新网站 #

在给网站加入了新的改动之后,再一次生成网站文件,并同步到仓库,这样你的网站就会更新这些变化。

Hugo
cd public
git add .
git status
git commit -m "Update blog"
git push

现在你有自己的博客啦。

完成?这只是开始 #

享受创作吧,不要让你的博客荒废😎。