新手搭建Hogo静态博客教程(四):使用优化

本教程为系列文章,点击右下角的 #Hugo 可以查看全部。

在上一篇,我们已经将博客发布到了网络上,但是这只是个开始,我们每次写了新的文章之后,都要生成静态网页、上传到git仓库。

有没有什么办法能简化操作呢?当然是有的。下面我们一步一步说。

设定博客使用规范

目前阶段博客刚刚起步,等到写了几年之后,content文件夹是不是会非常乱套?所以我给自己规定了一些做法。

  • 文章按照年份存档,比如说今年是2018年,我在content\post中新建了一个2018 的文件夹,专门放今年的文章。
  • 文章的图片资源按照文章名存档,因为一个文章可能会有多个图片,放一个文件夹里可以避免冲突。
  • 使用gif高压缩图片,即便给了1g的空间,我仍然不想浪费,图片尽量压缩高一点,节省流量。

当然说自己的规范是有原因的,下一步就用到了。

快速新建文章

Hugo自带的命令可以新建文章;也可以手动创建md文件,然后把front matter贴上去。我个人倾向于前者。

Hugo默认的命令生成的md文件的front matter如下所示

---
title: "Yyyyy"
date: 2018-02-20T17:21:52+08:00
draft: true
---

我觉得不太合适,我还需要加上一个tag,后来在官网查了一下,要修改的话,需要把修改默认的生成模版。

默认的生成模版是archetypes\default.md,我修改成了如下的内容。

---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
tags: []
draft: true
---

如果需要更多的内容,请结合官网查看。

手动输入命令创建Hugo博客太累了,所以我按照我的规范写了一个脚本,脚本内容如下

echo "example:2018/aaa-xxx-yyy"
read -p "Enter :" name
fullname=${name}.md
Hugo new post/${fullname}
cd static/img/posts
mkdir ${name}
echo "pic folder created"

这个脚本需要放在xxxxxx的根目录执行。命名为new.sh

脚本含义是先问用户文件名是啥。然后根据文件名创建博客文件,同时也创建同名的图片目录。


注意,这里我解决了一个问题,shell脚本主要都是linux平台的,但是我现在是windows平台,怎么办呢?

git在安装的时候,自带了 git-bash,可以执行大部分基础的shell脚本。

所以我在windows平台建立了 *.sh 文件和 git-bash 的文件关联。shell脚本都由git-bash来执行。


快速发布博客

快速发布博客的命令和上面的脚本类似,脚本内容如下。

echo '----------------------generate static blog page'
Hugo  --cleanDestinationDir
echo '----------------------push to github'
cd public
git add .
git commit -m "some change"
git push  origin master

脚本也是放在网站的根目录下面,我命名为post.sh

脚本的含义就是构建博客,然后推送到git仓库中。

Hugo官方也给出了类似的脚本,名为deploy.sh

对博客进行统计

由于目前使用的主题Hugo-dusk内置了Google Analytics 相关的代码,所以目前只需要在config中配置上Google Analytics生成的ID就可以了。

关于Google Analytics如何使用,这里不做讲解了。

在config配置上之后,就启用网站分析了。

切换到HTTPS

这部分内容,我考虑了一下,但是没有做。本身就是静态博客,HTTPS意义实在是不大。

HTTPS是更安全的一种方式,避免数据传输过程中进行篡改。

想要启用HTTPS的话,首先要有一个SSL证书,证明你没有问题,然后才进行加密的链接。

如果使用 Github pages 且没有用自定义域名的话,直接在setting中勾选HTTPS就可以了。

如果使用 Github pages 且设置了自定义域名,就需要用曲线的方式来实现HTTPS,因为 Github Pages 不支持上传证书做配置。

目前常见的做法是使用 CloudFlare 代理来实现HTTPS。原理如下

用户访问 zhaogaz.com 的时候经过 CloudFlare 代理,然后由 CloudFlare 请求 Github pages。 用户与 CloudFlare建立的是HTTPS链接。 但是 CloudFlare 与 Github pages 建立的仍然是http链接。

以上方式的证书就是CloudFlare自己的证书。

另外一个免费的做法是使用GitLab pages替代Github pages

有一种说法是说GitLab的创始人觉得Github这个不好用,然后针对Github的痛点推出了GitLab Pages 业务。

GitLab pages支持上传SSL证书,常见的做法是使用 GitLab pages+Let’s Encrypt免费证书。


到目前位置的教程,基本能让普通人开心的写博客了。

本篇到这里就要结束了,下一篇会说出来目前博客遇到的问题和注意的点,也会顺便说一下Hugo的部分内容,有兴趣的话,可以继续看下一篇。