从博客平台到放弃

折腾博客也有不少年了,从最开始的csdn,到博客园,简书,以及开源的hexo,hugo,最终稳定在了Hugo上,也算是不少时间的折腾吧。

国内的一些博客平台吧,现在问题都挺多的,csdn就不说了,各种垃圾转发文章,还贴各种广告,贴广告能理解,到处都是广告,严重影响阅读体验,而且垃圾文章特别的多,有时候就一句话一个链接就结束了,特别的恼火。

博客园倒挺好的,没有广告,而且很多文章的质量还行,但是我感觉编辑器有点老旧,不大喜欢在上面写文章,但是博客园用来看还是挺好的,另外说一句,用爱发电果然不靠谱,博客园都能倒闭的,太难了。

简书倒是挺好的,广告适中,文章样式也符合我的审美,而且编辑器也挺好使的,不过里面有些限制也挺严重的,被判违规之后,文章就被锁了,而且不能贴公众号图片去倒流,想蹭点流量的路又被堵死了。

自建个人博客

上述平台都有各种各样的问题,那么一个符合自己审美和心意的个人博客,就非常的有必要了。

我也看过不少的开源博客工具,首先是 barretlee,我非常的喜欢他的样式,但是博客的安装介绍没有太多,就放弃了,这个博客是真的好看呀。

后来又看了一些开源的博客系统,比如halo,wordpress等,但是这些需要额外安装进程,对于我这种不想买机器的人来说,有点费劲。

最终把目光放在了基于github pages的静态博客系统上面,文章的源文件和发布页都通过github实现,静态博客网站比较出名的有hexo和hugo。

我一开始在少数派上冲浪,发现了有个作者基于github pages自己折腾了一个博客出来,我也照着折腾了一下,不得不说,真的折腾出来了,但是可能作者自己也放弃了维护,我折腾完之后也没有后续了,也搁置了,git地址如下: Blog-With-GitHub-Boilerplate

一段时间之后,又开始手痒,重新折腾博客,试过Hexo,后来也放弃了,在最后一回,终于确定用github action+github pages+hugo搭建我的静态资源博客了。

稳定的博客版本-Hugo

可能是累了,也可能是想稳定的写点东西,肯定是要用静态资源博客的,所以选了个比较有知名度的hugo。

另外为了不用买机器,所以选择了使用github仓库作为文件存储和发布工具

不得不说,搞定了用哪种博客系统之后,博客更新也稳定了,可以写点自己想写的东西了,纯粹作为自己的碎碎念保留在互联网上吧。

最终的最终,经过了2,3次主题的切换,从zozo到coder到even,最终主题定在了even,其他的主题稍后有空再试吧。

目前我的博客,使用hugo+github pages+github action,主题用even,目前已经稳定的在更新和运行了。

hugo折腾记

安装Hugo

首先是hugo的安装,我的电脑是mac,用的是brew安装的,具体安装的过程比较简单,可以搜索一下。

在本地新建一个hugo项目,然后和github仓库关联。

github actions

我使用的是使用github actions自动构建部署和发布博客。

可以在提交文章的时候,自动触发构建,可以指定监听哪个分支的变化,构建出静态资源之后选择另外一个分支进行部署。

参考如下文章实现的自动部署 github actions实现hugo自动部署

为了解决每次部署都会丢失自定义域名的问题,需要在static目录新增一个CNAME文件, 里面添加自己的自定义域名

贴一下我的构建脚本,从别的博客看到然后改成了自己的github配置。

name: GitHub Pages

on:
  push:
    branches:
      - main  # Set a branch name to trigger deployment
  pull_request:
  schedule:
        # Runs everyday at 8:00 AM
        - cron: "0 0 * * *"

jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    concurrency:
      group: ${{ github.workflow }}-${{ github.ref }}
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: recursive  # 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: true

      - name: Build
        run: hugo --minify

      - name: Deploy on Github
        uses: peaceiris/actions-gh-pages@v3
        # If you're changing the branch from main,
        # also change the `main` in `refs/heads/main`
        # below accordingly.
        if: ${{ github.ref == 'refs/heads/main' }}
        with:
          personal_token: ${{ secrets.PERSONAL_TOKEN }}
          publish_branch: gh-pages
          publish_dir: ./public
          commit_message: ${{ github.event.head_commit.message }}

主要是监听的分支和发布的分支需要改一下,其他的涉及权限,需要在github上配置一下,需要添加一个PERSONAL_TOKEN的key-value,具体路径如下,打开你的repo,点击settings,然后选择左侧的security->security and variables->actions->new respository secret新增一个PERSONAL_TOKEN即可

![image-20230711222017528](/Users/since/Library/Application Support/typora-user-images/image-20230711222017528.png)

主题

博客可能最重要的就是主题了,hugo社区有大量免费好用的主题,我一开始冲浪的时候,发现了一个叫coder的主题,感觉逼格满满的

不过用了一阵之后,发现没有tag功能,而且实际相比说明少了一条黑白分明的线,自己折腾tag又折腾不明白,所以又换了主题。

挺喜欢,但可惜,coder地址如下: hugo-coder

换成了中文的主题even,even相比之前的多了标签分类的功能,虽然整体上感觉少了些什么,不过现在也能将就用着,后面有需求再换吧。

主题的说明都是中文的,使用体验好了不少。

hugo的even主题地址如下:

hugo-even

为博客添加评论

使用了even之后,想着为我的博客添加评论系统,刚好也支持评论,然后就接了一下,用的工具是 utteranc

使用的是github仓库存储博客信息,在utteranc上关联github账号,在config.toml里配置一下owener和repo名称即可接入

 [params.utterances]       # https://utteranc.es/
    owner = ""             # Your GitHub ID
    repo = ""              # The repo to store comments

为博客添加访问统计

使用的是google analytics服务,需要在config.toml里配置googleAnalytics ="",value是在google统计中获得的一个唯一key

然后需要添加一个html页面layouts/_internal/google_analytics_async.html,这个页面粘贴从google统计那获取到的脚本,

最后将这个页面编译进所有的文章页面,even应该是对这个做了支持

config.toml里设置如下值

googleAnalytics = "G-GZV-XX"      # G-XXXXXXXX-X

layouts/_internal/google_analytics_async.html页面内容

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-GZV-XX"></script>
<script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());

    gtag('config', 'G-GZV-XX');
</script>

even中处理analysis的地方

themes/even/layouts/partials/scripts.html
<!-- Analytics -->
{{- if (in (slice (getenv "HUGO_ENV") hugo.Environment) "production") | and .Site.GoogleAnalytics -}}
  {{ template "_internal/google_analytics_async.html" . }}
{{- end -}}

后记

博客更新说明先到这里,后续再补充