Contents

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/目录下的configcontent复制到我们的博客根目录下。 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构建和部署我们的代码。

/uploads/github-action1.png

/uploads/github-action-2.png

3. 后台管理

后台管理采用的是 forestry.io 提供的 CMS 博客管理功能,可以在线编辑。 引入后台管理的目的是为了偶尔不在自己的电脑上写文章,可以快速完成,不需要搭建typora+picgo的环境。

总结

作者的博客样式调整了多次,可以说是生命不息,折腾不止。当初选择脱离CSDN也是因为在CSDN发文章要经过审核乱七八糟的流程,然后页面定制还要付费,干脆就自己动手搞一个。这些年也明白了一个博客的核心还是内容,这一次折腾之后,回归到内容,多输出一些好文章。