Junyu Xue


如何通过Hugo搭建你的个人学术/博客网站

English Version: [link]

关于这篇教程

本文在个人数次迭代学术主页的基础上总结而来,比较适合想搭建自己的学术主页且希望尽量避免雷同的朋友们。众大佬有直接使用html+css自己来写的(学术/博客主页,特别是学术主页一般都是静态,写起来相对简单)或者使用学校提供的模板。

学术主页只是方便大家了解你的一种手段,有值得展示的内容更加重要。这篇Blog只是为不太熟悉的朋友们提供一种快速入门的方式,从而能够将更多的时间集中在学术和项目当中。

你将会看到:

  • Hugo的基本介绍与安装
  • Git的安装以及Github Pages的使用(可选)
  • 开源Hugo主题的选择与使用
  • 配置Github Action以实现源代码自动编译
  • 自定义域名的方式(可选)

0 为什么选择Hugo?什么是Hugo?

搭建自己的个人学术主页的方式很多,最常见的是Jeklly Academic Pages,以及WordPress、Hexo、Vuepress等引擎。

Hugo是一款用Go语言开发的静态网站生成器,以其轻量化、速度快而闻名,有一定数量的开源并且美观的主题,最重要的是套用主题后雷同的可能性较小。

[Hugo的官方主页]

1 Hugo的安装

在安装Hugo之前,请确保你已经安装Golang(Go语言支持)以及Node.js(JavaScript支持,非必要,部分主题需要),并配置好相应的环境。

[Golang下载] [Node.js下载]

1.1 Mac OS的安装方法

推荐使用homebrew包管理工具,可通过官网下载,或使用指令下载。如果指令下载比较慢,也可以使用国内的镜像。

Homebrew[英文官网] [中文官网]

可通过下方指令安装Homebrew:

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

安装Homebrew后,使用下方指令安装Hugo:

brew install hugo
hugo version

如果hugo version能够正常显示版本,则代表安装成功。

1.2 Windows的安装方法

Windows建议直接从上述的官网下载.exe文件,安装好重启计算机后,同样使用hugo version检查版本即可。由于笔者没有亲自尝试过,有问题建议参考其他的博客。

2 Github仓库与Github Pages的配置

无论是学术/博客主页,都以静态内容为主,一般不需要后端的支持。在这里笔者推荐使用Github Pages来进行网页的部署,因为:

  • 免费,无需单独租用服务器,降低成本。
  • 没有被攻击的风险。
  • 更轻松地和你的项目代码联系起来(如果你有开源的文章)。

你同样可以选择使用Vercel来进行部署,这同样非常迅速。由于Github Pages完全能够满足本项目的要求,故不再展开介绍。

2.1 Github仓库的创建

使用Github Pages来进行部署,一般来说需要创建两个仓库,分别用来存储源代码和Hugo编译后的Public代码(Github Pages代码)。因为你的用来对外展示的Github Pages仓库必须是公开的,这样可以防止别人看到整个网页的源代码。即:

  • 源代码仓库(私有)
  • Github Pages仓库(公开)

首先,我们创建Github Pages仓库,这个仓库必须以username.github.io为名,其中username指的是你Github的用户名。以我的为例,这个就是junrys.github.io(可以忽略大小写)。

Github Pages示意图

接着,我们需要创建存储源代码的仓库,这个名字可以任意,我在此处采用Hugo-junrys。

Source code示意图

2.2 Github仓库克隆到本地

将仓库克隆到本地可以更方便地维护我们代码。在进行这一步之前,请确保你已经安装了Git并且配置好,或者使用Github Desktop(Github的客户端)。

如果你仅仅是为了搭建这个网站,并且没有学过Git的话,笔者建议直接使用Github Desktop,相对来说配置会简单一些,有图形化界面也会更直观。

安装好之后,进入打开终端,进入到你想要将项目仓库克隆到的文件夹,使用Git命令克隆源代码仓库即可,注意这里不需要克隆我们刚刚设置的Github Pages仓库。后面在设置好Github Action之后会自动把代码同步过去。

git clone git@github.com:junrys/hugo-junrys.git
cd hugo-junrys

由于我们没有写任何代码,这时候克隆下来的hugo-junrys文件夹应该是空的(除隐藏的.git文件)。注意,文章后面所指的根目录都是说的Hugo-junrys目录

2.3 Hugo基本网站的创建

接着我们创建对应的Hugo网站。

hugo new site . --force
安装好的示意图

此时文件夹下应该已经有对应的hugo网站的文件了。几个比较重要的有:

  • content:一般用来存储你的界面的md文件
  • static:一些静态资源(图片等)
  • themes:你要用的主题
  • public:编译后对外展示的网站代码

这时候我们使用下面的命令,就可以进入localhost:1313访问网站了。(注意查看使用命令后的端口是多少,不一定是1313)

hugo server

网站的基本配置已经完成,下面我们继续来安装对应的主题。

2 Hugo主题的选择以及修改方法

有大量的开发者为Hugo提供了丰富的开源主题,详情可以参考[Hugo的开源主题List]。

对于学术主页来言,应该尽量选择简洁、大方的主题,清楚地把自己简介、研究兴趣和方向、成果、奖励等情况展示出来。

这里我以beautiful hugo这款主题为例,大家可以根据情况选择自己需要的主题。尽管大部分的开源主题都是MIT协议,大家还是要提前注意一下,避免造成侵权等问题。在经济条件允许的情况下,也可以请主题的作者喝杯咖啡~

在beautifulhugo主题的官网中给出了两种安装方式,这里使用第二种。对于其他的主题也是类似的,一般作者在主页中都会说明安装方法。

beautifulhugo作者贴图

在终端目录Hugo-junrys下输入对应的指令:

git submodule add https://github.com/halogenica/beautifulhugo.git themes/beautifulhugo

稍等片刻后,themes文件夹下会有一个beautifulhugo文件夹,这就是对应的主题了。

example site示意图

一般来说作者都会提供对应的example site,也就是示例界面,可以直接拿来使用,改一些文本即可。使用方法也很简单,有两种方式:

  • 直接把我们前面使用hugo new site所生成的文件(除了themes)全部删除,再把example site文件夹里的内容复制到根目录。
  • 将example site里面文件夹里的内容复制到根节点对应的文件夹中,例如,content→content,static→static,对应的config.yaml文件直接复制到根目录中。
example site内容图

Example site 文件结构示意图

之后,我们再次在根目录下运行hugo server命令即可进入模板网站。

example site效果图

Example site 文件结构示意图

复制作者提供的example site可以避免绝大多数的问题,从而直接获得一个模板网站。但是,有些老版本的主题(例如mini)会因为hugo版本不兼容出现问题,导致无法直接运行,这种还需要大家自行进行Debug修改。

这样最基本的网站配置就已经完成。我们在根目录使用hugo命令对网站进行编译。

hugo

编译完成后,public文件夹中会有对应的网站代码。

到此,网站在本地的任务已经基本完成,接着我们需要上传到Github上,通过Github action进行自动转存。

如果采用Github Desktop,就比较简单,在图形化界面上操作即可。将相关的源代码push上去,即云端的Hugo-junrys仓库中。

接着我们配置对应的Github Action。

在配置对应的Action之前,我们需要先获取Github的Personal Access Token,这是必须的。

点击Github右上角的头像,选择Settings→Developer Settings→Personal access token→Tokens (classic)→Generate new token (classic)

example site效果图

Example site 文件结构示意图

这里的名字可以随意写,只是后面需要对应起来。Expiration指的是有效期,我个人建议可以直接设定为永久。需要注意的是需要勾选repo和workflow,其他的可以不勾选。设定完后点击Generate token即可。

之后会有这样一个界面,一定要把token保存,后续就不能再次查看了。我们后面在设置Github Action的时候会用到。

example site效果图

Example site 文件结构示意图

点开对应仓库的Action按钮

Github Pages进行部署。

3 学术主页的部署

对于个人而言,比较推荐通过部署自己的网页,从而省去服务器租用费用,以及潜在的被攻击风险。