引言
hugo 是一个用 Go 语言实现的静态网站生成器。把符合规则的 markdown 文档转为静态网站的 html、css 等文件的工具, 即将 markdown 文档转为博客。
提供三个版本可供安装,版本区别如下所示,推荐安装 extend 版本。
版本 | 说明 |
---|---|
standard | 基础版本,适用于一般的静态网站生成 |
extend | 包含 standard 的所有功能,额外支持 SCSS/SASS 编译和 resources 处理功能 |
extended/deploy | 包含 extend 的所有功能,额外包含 hugo 内置的 hugo deploy 功能,可以将网站部署到云存储服务(AWS S3、Google Cloud Storage 等) |
也可以直接从 GitHub 中下载压缩包后解压
注意:需要将解压后的路径地址添加到系统环境变量(PATH)!!!
创建站点
初始化:在本地创建
quickstart
文件夹,并在文件夹中生成 hugo 模板和默认配置。1 2
hugo new site quickstart cd quickstart
修改内容:
quickstart
设置为项目根目录并 git 初始化,通过git submodule
方式将 gohugo-theme-ananke 主题下载到quickstart/themes/ananke
路径下,修改hugo.toml
文件设置主题为ananke
。1 2 3
git init git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke echo "theme = 'ananke'" >> hugo.toml
主题名需要与 themes 文件夹下的目录名称保持一致
主题 ananke 文件夹结构与 quickstart 结构基本相同,可以理解为 quickstart 中为默认配置, 选择 ananke 主题后,ananke 中的配置替换掉默认配置,因此可以轻松替换网站主题
本地部署:运行如下命令后可以打开浏览器输入
localhost:1313
查看网站效果。1
hugo server
hugo server 运行后会生成 public 和 resources 目录,其中 public 才是网站的本体。
可以在 here 选择不同的 hugo 主题。
当然也可以自己设置主题,并将其发布。
自动化部署
写博客不仅仅是为方便自己,有时候也希望帮助他人。那么怎么样才能将博客分享到互联网上? 这里提供一个简单方便的做法:github pages(gh-pages)。
gh-pages
gh-pages 是 GitHub 推出的一项服务。它支持将 Git 仓库中的静态页面转为一个网站,完美契合我们的需求。
需要注册一个 GitHub 账号
- 创建仓库,仓库名为
{user}.github.io
(user 为创建账号时填写的用户名,创建时要求此名称唯一)。 git clone {user}.github.io
到本地。- 将
quickstart
项目生成的 public 文件夹复制到{user}.github.io
项目中。 - 在
{user}.github.io
中添加项目变更并推送到远程仓库。
回顾上述流程,不难发现操作过于复杂,且博客经常更新,有没有简单点的方式呢?
答案是可以,GitHub Actions
就能解决此问题。
GitHub Actions
GitHub Actions 是 GitHub 提供的 DevOps 功能,可以按需执行自动化流程。
上述操作简化如下:
- 在
quickstart
中变更博客内容 - 提交
quickstart
项目,自动运行hugo server
命令并生成public
目录 - 将
public
目录复制到{user}.github.io
项目中
简化后我们只需要专心致志写博客即可(quickstart
)。
要将 quickstart 中的 public 写入到
{user}.github.io
中,就要求获取{user}.github.io
仓库的写权限。 因此需要配置{user}.github.io
的 Deploy key。 即在{user}.github.io
的Deploy keys
中配置公钥,在quickstart
的Secrets and variables/Actions
中配置私钥(变量名为 DEPLOY_PRIVATE_KEY)。
GitHub Actions
的 CI/CD 流程通过 YAML 文件配置,需要放在项目的 .github/workflows
目录中,下面是我配置的 deploy.yml
文件,仅供参考。
|
|