目录

使用hugo搭建博客

hugo是什么

Hugo 是一个快速且现代的静态网站生成器,采用 Go 编程语言开发,Hugo 的设计目标是让创建网站重新变得有趣。 Hugo 是一个通用的网站框架。从技术上讲,Hugo 是一个静态站点生成器。与动态构建页面的系统不同,Hugo 在创建或更新内容时构建页面。由于网站的浏览频率远高于编辑频率,因此 Hugo 旨在为您的网站最终用户提供最佳的浏览体验,并为网站作者提供理想的写作体验。

使用 Hugo 构建的网站非常快速和安全。Hugo 构建的网站可以托管在任何地方,包括 Netlify、Heroku、GoDaddy、DreamHost、GitHub Pages、GitLab Pages、Surge、Aerobatic、Firebase、Google Cloud Storage、Amazon S3、Rackspace、Azure, 和 CloudFront,并且与 CDN 更配。Hugo 网站在运行时不需要数据库或依赖于诸如 Ruby、Python 或 PHP 等昂贵的运行时环境。

我们认为 Hugo 是一个理想的网站创建工具,具有几乎即时的构建时间,能够在网站修改时即刻重建。

以上内容是hugo官网对hugo的定义,简而言之,hugo是一个静态网站生成器,非常利于我们使用它去搭建博客、企业官网等等静态网站

安装hugo

下面以mac平台为例,我们使用brew安装hugo

安装brew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装hugo

brew install hugo

创建空白博客

hugo new site demo -f yml

-f yml表示config使用的格式,hugo默认使用的toml格式,因为我对yml更熟悉,所以指定为yml格式

https://qiniu.ckfear.cn/blog/254654.png

运行hugo服务

首先进入我们的hugo目录中,cd demo

启动hugo服务hugo server

https://qiniu.ckfear.cn/blog/3546902.png

默认端口是1313,打开http://127.0.0.1:1313,内容是空白的,因为我们没有添加内容

自定义主题

hugo提供了非常多的主题供我们使用,我们可以通过https://themes.gohugo.io找到我们喜欢的主题。
下面我们来安装paperMod

使用git submodule安装我们的主题

在demo目录下执行以下命令

git init # 初始git,否则submoudule无法使用
git submodule add --depth=1 https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod
git submodule update --init --recursive

这时我们已经成功安装了paperMod的主题

修改config.yml让我们的hugo使用paperMod主题

编辑config.yml添加theme配置

https://qiniu.ckfear.cn/blog/7012889.png

我们再打开http://127.0.0.1:1313可以看到我们的主题已经成功加载了

创建第一篇博客

下面我们来创建我们的第一篇博客
hugo new posts/fisrt.md
我们设置draft的值为false,否则他不会出现在我们网站中
https://qiniu.ckfear.cn/blog/9058257.png

这时候我们打开http://127.0.0.1:1313,发现我们编辑的第一篇博客已经出现在我们的网站中了 https://qiniu.ckfear.cn/blog/9607861.png

部署我们的网站

手动部署

使用hugo命令生成网站,这时候public目录会生成我们的网站代码。我们可以通过nginx或者其他web服务器部署我们的网站,再此不做详细说明。

https://qiniu.ckfear.cn/blog/5517120.png

通过github action部署到github pages

上传我们的代码到github

为了不暴露我们的源码,我们单独的创建了一个私有仓库存储我们的hugo网站源代码。

https://qiniu.ckfear.cn/blog/3536587.png

创建githubPages仓库

我们创建部署github page的仓库,仓库名必须要符合[username].github.io的规则,[username]替换成你的github用户名即可,比如我的github用户名 是ckfear,那么创建的仓库名即为ckfear.github.io

https://qiniu.ckfear.cn/blog/7499776.png

添加我们的workflow

在我们的项目目录下创建.github/workflows/hugo-auto-deploy.yml文件,并且添加如下内容:

配置我们的accessToken

personal_token: ${{ secrets.ACTION_ACCESS_TOKEN }}需要我们去配置token到action中的secret中 因为workflow需要我们提供认证信息,从而可以上传代码到其他仓库中。

点击头像打开settings,接着点击红色圈标志的位置

https://qiniu.ckfear.cn/blog/9271719.png

https://qiniu.ckfear.cn/blog/7857126.png

点击Generate new token,勾选一下图片勾选的内容

https://qiniu.ckfear.cn/blog/5914922.png

https://qiniu.ckfear.cn/blog/780905.png

生成新的token,我们保存我们生成的token。

https://qiniu.ckfear.cn/blog/3712202.png

根据图示,依次操作,name使用我们之前在workflow中使用的ACTION_ACCESS_TOKEN, 在value中填入我们刚才保存的token。

https://qiniu.ckfear.cn/blog/7485063.png

上传我们的workflow代码

这时候,将我们新增的.github目录下的代码提交到github中,然后github会自动的生成 静态网站并且自动部署到我们的gh仓库中。我们打开我么网站代码仓库中的action,会发现已经在自动构建了,如下图所示。

https://qiniu.ckfear.cn/blog/7141625.png

我们再次打开我们之前创建的yourusername.github.io仓库,发现我们的workflow已经将构建好的网站推送到我们的仓库中了。

https://qiniu.ckfear.cn/blog/4583232.png

这时候在浏览器中打开yourusername.github.io,发现我们的网站已经成功部署到githubpage上了。 以后我们想更新我们的网站,只需要在本地编辑内容,提交到github即可,不用担心网站的部署问题了。

https://qiniu.ckfear.cn/blog/3657065.png