方案制定

  • 使用hugo(笔者使用的是v0.126.1)进行构建

  • 使用PaperMod主题,前言提到的基本需求都能满足

  • 因为hugo是命令行工具,所以使用Linux系统或Win10+wsl比较方便

  • 使用Github Pages,服务器和域名问题就一并解决了,不过代价就是访问速度一言难尽。

  • 使用两个仓库,一个公开仓库用于部署页面,一个私有仓库用于管理源码(内容)

工具准备

安装Git

用于源码(内容、配置)管理,也用于向Githug仓库进行推送。Git的安装、配置请自行解决。

安装hugo

打开hugo下载地址(自行解决科学上网),注意正确选择对应自己操作系统和架构的版本。由于使用的是PaperMod主题,基础版就够了。当然,下载扩展版也没问题,只是听说好像需要go环境,没有验证过。

下载之后解压,只需要一个可执行的hugo即可。

1
tar -xzf hugo_0.126.1_linux-amd64.tar.gz # 适用于linux系统amd64架构的不带扩展的0.126.1版hugo

为了方便使用,可以把hugo放到一个已有的默认搜索路径中,也可以把hugo所在的路径加入环境变量。

Linux环境下,运行hugo completion -h查看如何为hugo添加自动完成功能。

仓库准备

Github

Github账号的,自行申请一个。

目标仓库

目标仓库即将来用于部署页面的仓库,新建名为xxx.github.io的仓库(xxx为用户名),仓库更新后会自动部署,直接访问https://xxx.github.io即可。如果想部署第二或更多的仓库,那就只能新建普通仓库,手动开启Github Pages,通过https://xxx.github.io/yyyxxx为用户名,yyy为仓库名)访问。

源码仓库

源码仓库即将来用于管理*.md的仓库,新建一个普通私有仓库即可,例如名为blog-src

本地仓库

  1. 克隆源码仓库
1
2
git clone https://github.com/xxx/blog-src.git
cd blog-src # 切到仓库根目录,无特殊说明时,所有命令都在该目录下执行
  1. 添加.gitignore
1
2
echo 'public/' > .gitignore
echo '.hugo_build.lock' >> .gitignore
  1. 克隆目标仓库
1
2
mkdir public
git clone git@github.com:xxx/xxx.github.io.git public
  1. 添加部署脚本

新建文本文件pushpage.sh,并赋予执行权限,然后写入以下内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#!/bin/bash

mpath=$(dirname $(readlink -f $0))
spath=$mpath'/public'

cd $spath
# 清空除git版本库外的所有文件
ls | grep -v .git | xargs rm -rf ./*

# 生成页面
cd $mpath && hugo

# 强制提交
cd $spath && git add . && git commit --amend -m 'pages' && git push -f origin master

以后在本地测试没问题后,可直接运行该脚本,实现一键部署。

项目准备

  1. 初始化项目
1
hugo new site . # 注意带上【.】,表示当前目录

生成的默认内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
archetypes
└── default.md
assets
content
data
hugo.toml
i18n
layouts
static
themes
  1. 添加主题仓库
1
git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/hugo-PaperMod
  1. hugo.toml重命名为config.yml,并改为以下内容
1
2
3
baseURL: "https://xxx.github.io"
title: "My blog"
theme: [hugo-PaperMod]
  1. 修改archetypes下的default.md,改为以下内容
1
2
3
4
5
---
title: "{{ replace .File.ContentBaseName "-" " " | title }}"
date: {{ .Date }}
draft: true
---

至此,准备工作就差不多了,运行hugo server -D,然后就可以访问http://localhost:1313/查看效果了,当然,看到的页面几乎没什么内容,因为还没添加内容,更没进行更细致的配置。