Hugo 博客搭建
前言
原先的博客主题 even 用了一段时间,由于想把博客内的一些系列文章整理成一个独立的笔记链接,索性就一起更换了博客的主题,现在使用的这款主题是eureka,这款主题配色简洁,文档丰富,基本的功能都有,在这款主题的基础上,作者参考了怡红院落的改造,增加了归档、搜索的功能。
另外之前一直想用 github action
的自动化来部署博客,一直都没有时间,这次一起做了。
1. Hugo
博客是基于Hugo来构建的。Hugo 的安装十分简单,只要下载 hugo 的二进制文件,解压后放到/usr/local/bin/
目录下即可。
Hugo Release: https://github.com/gohugoio/hugo/releases 完成 Hugo 的安装之后就可以创建博客了,通过
hugo new site myblog
来创建一个博客文件夹。创建后的目录如下:
chenxq@ubuntu /mnt/hgfs/GitRepos/exampleblog ll 1049 11:27:58
总用量 512
drwxrwxrwx 1 root root 0 8月 10 11:27 archetypes
-rwxrwxrwx 1 root root 82 8月 10 11:27 config.toml
drwxrwxrwx 1 root root 0 8月 10 11:27 content
drwxrwxrwx 1 root root 0 8月 10 11:27 data
drwxrwxrwx 1 root root 0 8月 10 11:27 layouts
drwxrwxrwx 1 root root 0 8月 10 11:27 static
drwxrwxrwx 1 root root 0 8月 10 11:27 themes
Hugo 的官方文档有介绍具体的目录结构用途,这里不再赘述。 接下来,我们需要添加一个主题,使用 git submodule 命令添加:
git submodule add https://github.com/wangchucheng/hugo-eureka.git themes/eureka
添加之后删除掉config.toml文件并将themes/eureka/exampleSite/
目录下的config
和content
复制到我们的博客根目录下。
eureka 主题使用的配置是放到config文件夹中的,并且按照不同的功能分开,我们修改config/_default/config.yaml
文件的baseURL
为我们的域名https://ahamoment.cn
,其他的配置可根据需要进行修改。
eureka 主题可以自定义主页,不过作者偏向于传统的左右分栏的博客页面,就按照Hugo 主题 Eureka 自定义这篇博客的内容,做了定制。代码沿用了怡红公子的源代码,文件上做了一点调整,例如搜索功能,需要在content/
文件夹下创建目录,在目录里面添加_index.md
文件,在文件的meta中声明layout为search
。
---
title: 搜索
layout: search
---
在layouts/_default/
中增加搜索的页面search.html
。
最后我们添加一个文章
hugo new posts/hello-world.md
这样,就会在content/posts/
文件夹下增加一篇文章。
完成了博客的主题和内容之后,我们需要把githug pages上,这个过程是用hugo命令生成静态文件public
,然后将public
文件中的内容push到github的yourusername.github.io
这个仓库。这里就是我们在前言说的,可以通过 github action 来完成自动化部署的工作。
2. github action
github action 是Github官方提供的CI/CD工具。可以直接从 GitHub 构建、测试和部署我们的代码。要使用github action,我们需要在博客的根目录下创建 .github/workflows/gh-pages.yml
文件。
name: github pages
on:
push:
branches:
- master # Set a branch to deploy
pull_request:
jobs:
deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
submodules: true # Fetch Hugo themes (true OR recursive)
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
extended: false
- name: Build
run: hugo --minify
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
external_repository: XueqiangChen/XueqiangChen.github.io
publish_branch: master # default: gh-pages
publish_dir: ./public
user_name: 'XueqiangChen'
user_email: '569503960@qq.com'
该文件的内容可以参考hugo的文档Build Hugo With GitHub Action。
这里需要注意的是 ACTIONS_DEPLOY_KEY
, 我们需要在两个地方添加这个key,首先生成ssh key:
sh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""
将生成的私钥放到当前的博客仓库的settings-secrets中,将公钥放到xueqiangchen.github.io
仓库的settings-deploy keys中。
至此,我们完成了自动化部署的配置,后续提交代码到exampleblog中就会触发github action构建和部署我们的代码。
3. 后台管理
后台管理采用的是 forestry.io 提供的 CMS 博客管理功能,可以在线编辑。 引入后台管理的目的是为了偶尔不在自己的电脑上写文章,可以快速完成,不需要搭建typora+picgo的环境。
总结
作者的博客样式调整了多次,可以说是生命不息,折腾不止。当初选择脱离CSDN也是因为在CSDN发文章要经过审核乱七八糟的流程,然后页面定制还要付费,干脆就自己动手搞一个。这些年也明白了一个博客的核心还是内容,这一次折腾之后,回归到内容,多输出一些好文章。