Skip to main content

Web:使用Hugo和Github Page创建个人博客

Feishiko
Author
Feishiko
Programming Avali
Table of Contents

前言
#

很久一段时间没有写博客了,或者说今年只写了几篇。和一个哥们聊了一会发觉要把所做的事情给记录下来,能发网上当赛博遗产也不错。其中比较受这篇文章影响如何搭建知识库

又由于觉得不应该依赖于国内主流网站如知乎,所以决定要自己搭建一个Github Page。

哥们推荐了Hugo,就去看了一下。

搭建过程
#

首先要安装Hugo,我用的是scoop包管理器安装的,官网也有其他包管理器以及其他的安装方法。https://gohugo.io/getting-started/quick-start/

因为要挑选一个theme,我便从支持的列表里面找了一个好看的,最后相中了Blowfish

所幸的是Blowfish非常的方便有个CLI工具可以快速搭建不用修改文件。https://blowfish.page/docs/installation/

按照Hugo官方的quick-start教程走完并且用git submodule的方法安装了Blowfish主题后,试着跑了一下,虽然什么都没有但是有Blowfish的theme了。

之后把素材之类的东西从Blowfish theme的目录下复制过来才能用,比如config和assets。

为了方便本地调试复制过来后根目录下的baseURL先不用填,会自动定位本地根目录下的资源文件,如果填了编译之后将无法获取本地资源而是还没搭建好的远程资源。

由于这是一个github page的子项目,url大概类似feishiko.github.io/feishiko-blog-page

hugo指令打包后,发布的版本位于项目根目录的public文件夹,进入public文件夹并git init,完成git仓库初始化,然后上传到远程仓库,我用的是github,并且用了github desktop,非常方便非常简单非常快捷的就上传好了。

这里做一个提醒,你可以直接把项目文件上传到github并且用hugo的action在线编译,由于theme是submodule并不会上传到你的github仓库而是作为一个指针远程参与编译。https://gohugo.io/hosting-and-deployment/hosting-on-github/

上面的链接步骤到第四步是一样的

因为我是打包的静态网页,所以action用了static一开始。嗯,就算用hugo的action好像也不用像官网那样自己写一个,现在的github似乎是有hugo的预设的。

workflow写好或生成好后,等待部署就能看到自己的网页了。

现在还有一个问题,就是要把实际的网页链接复制到baseURL上,不然会出现资源定位错误的情况。

目前我不知道要怎么把图像资源定位到博客项目的仓库,可能和我图像地址写的../assets/img/xxx.png有关,不过暂时懒得去考虑了。

所以有点麻烦的我现在图像资源在feishiko.github.io所属仓库也放了几张,通过F12查看项目文件应该能定位到博客项目的img资源。

Blowfish主题自带的搜索没法用,我想应该和github page没有提供相关支持有关,之后换了这个action想看看能不能支持搜索依然不行。https://github.com/marketplace/actions/upload-github-pages-artifact

关于创建文章而言没什么好说的,博客统一的资源定位在content/posts,使用Blowfish的CLI工具或Hugo创建一个文章,同时拟定文件名以及标题(标题可以在里面继续改),会在文件开头生成一些metadata,通过修改日期等数据可以控制网站达到预期的效果。draft设置成true的时候在正式打包并不可见,预览的时候可以通过hugo server -D将draft可见。正式打包可将draft改成false以正式发布。

如果看不到自己创建的博客,需要让博客显示出来,创建menus或显示最近博客都行。

踩坑
#

其实上面或多或少都讲到了可能的坑,毕竟我一路做下来确实没那么顺利。

顺便一说飞鱼子用的shell是NuShell,在设置环境变量上有点小问题,后面发现可以直接pwsh -command使用powershell的指令。

如上面说的我确实遇到了资源定位的问题,一开始用的也是static的workflow,但之后重新部署了反而就正常了这一点还不是很清楚。

每次push后要等待几分钟,效果不会那么快显现出来。

jpeg格式的图片可能有问题,如果不行就用ffmpeg把格式改成png的即可。

最后效果:https://feishiko.github.io/feishiko-blog-page/ 并且把知乎之前写的文章也搬了上来,有几个早期文章用的github的图床但仓库被我删了,不知道会不会补回来。