Hugo+Github Pages 搭建个人博客手记萌新向

0. 前言

记得在19年那段时间,在无意间了解到 Github Pages 可以托管静态页面作为个人博客站,于是开始兴致勃勃研究了一会,新鲜几天之后,搭建完毕,还绑了自己名字的域名,就扔在那了,一篇内容都没有写。随着时间的推移,Hexo 该怎么使用,用哪些 git 命令已经忘得一干二净了。

然而最近又有了维护一个自己博客的冲动,然而安装 Hexo 并没我记忆中的那么顺利,让我不得不放弃 Hexo 而选择其他工具,最终确定 Hugo(主要是喜欢 Hugo 的这个主题),所以本篇我就记录一下我利用 Hugo 搭建个人博客的过程

但是我这次先把内容先写一部分再开始着手做搭建,一是不想让这次博客又白白搭建,二是作为以后使用的备忘手记(记性不好),其中参考了网上一些大神的教程及脚本,想详细学习的话推荐去看他的教程

Berlin https://fengberlin.github.io/post/use-hugo-to-build-blog/

1. 介绍

原理:利用工具将写作内容(Markdown)生成 HTML 静态页,将静态页上传至 Github,利用 Github Pages 的页面链接进行访问

Markdown

是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,由于 Markdown 的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。Markdown 的优势是可以利用一些简单的语法实现排版功能,没有那么多排版、字体的设置,简介易用。弄这些的人基本应该会懂把,懂洞东懂,不懂去搜

静态页博客生成工具

Hugo、Hexo、Jekyll、Gridea 是我所了解到比较常用的工具,当然,可能还有一些更热门更好用的工具只是我不知道而已

我只用过 Hexo 和 Hugo,之前用的是 Hexo,这次搭建用的是 Hugo,简要总结一下我对这俩工具的个人感受:

Hugo:

+社区环境很好
+生成网站速度超快
+更简单轻量,能够让人更专注于写作
+个人更喜欢 Hugo 的主题
-每次写完都要删除 public 文件夹
-扩展性稍差

Hexo:

+功能性、可扩展性强
+部署命令相对简洁
+也有很多不错的主题
-在配置 hexo 出现各种各样的问题(98.735%是我哪里没弄好)

其他的我也没使用过,想要了解的话去搜

Github Pages

https://pages.github.com/ 介绍就不说了,看看就知道了

2. 部署过程

注册 Github 并建立项目

注册不说了 登录 Github,新建 repository,名称为 <username>.github.io(必须),作为 Github Pages 的页面地址 例如 Github 的用户名是 zhang3,则新建的项目名称为: zhang3.github.io

再创建一个 repository,名称为 myhugo(任意),作为存放除了生成静态页以外的所有文件(例如 config.toml 配置文件等),这样即便本地原始文件清空了,或者更换设备时,都可以把源文件迁移过来(我之前用 hexo 的时候就没同步)

安装 git(已有请忽略)

首先安装 git

sudo apt-get install git -y

配置 Github 用户信息

git config –-global user.name username    # username填写Github用户名
git config –-global user.email user@useremail.com    # useremail填写Github用户名关联的邮箱地址

生成 ssh key 关联 Github

ssh-keygen -t rsa -C “your_email@youremail.com” #youremail填写Github用户名关联的邮箱地址

三下回车后,会在根目录生成一个.ssh的文件夹,

cat ~/.ssh/id_rsa.pub

复制公钥的内容,登录 Github,点击头像 -> Settings —> SSH and GPG keys —> New SSH key,把公钥的内容粘贴到 key 中,填好 title 并点击 Add SSH key 至此,关联完毕

测试是否关联成功

ssh git@github.com

若返回显示您的用户名即为关联成功

Hugo安装包下载

我用的系统是 Ubuntu,其他系统例如 MacOS、Win、其他发行版 Linux 系统除了获取 Hugo 的方式稍有不同之外,几乎没有差别

利用 apt-get 方式安装的 Hugo 版本比较旧,达不到很多主题所要求的最低标准,所以我们选择在 GitHub 上下载最新版本的安装包

Hugo 安装包下载地址 https://github.com/gohugoio/hugo/releases

安装 Hugo

执行命令

sudo dpkg -i <文件名.deb>

dpkg 软件包管理器,-i 安装

可能会报依赖关系的错误,执行命令修复安装

sudo apt-get install -f

-f : –fix-broken 的简写形式,修复依赖关系(depends)的命令

初始化 Hugo

先 cd 到想要创建博客文件夹的上一级,尔后执行

hugo new site myblog  # myblog就是生成博客之后存放的文件夹

Hugo 会自动创建 myblog 文件夹并生成需要的文件

安装主题

https://themes.gohugo.io Hugo 官方汇总的主题列表,可以去看看,很多主题都有demo可以预览一下,主题的使用教程都比较详细

例如安装 Notepadium 主题 https://themes.gohugo.io/hugo-notepadium/

myblog 目录下,输入 git 命令,

git submodule add https://github.com/cntrump/hugo-notepadium.git themes/hugo-notepadium

git submodule add <仓库地址> <本地路径> :Git Submodule 允许一个 git 仓库,作为另一个 git 仓库的子目录

以后更新主题可以使用命令

git submodule update --remote --merge

因为主题中配置文件更易用,所以将主题目录中 exampleSiteconfig.toml 复制到 myblog 的目录下进行配置

mv config.toml config.toml.old
mv themes/hugo-notepadium/exampleSite/config.toml config.toml

具体配置请参考每个主题下的介绍内容或者去搜

创建一篇文章

hugo new post/firstblog.md

则会在content/目录内生成一个post文件夹,该文件夹就是用来存储你所创建编写的markdown文档

生成博客

hugo server -D

server 建立服务器 -D 生成静态页面文件(包括标记为草稿的内容)

输入后访问http://localhost:1313 即可在本地看到生成博客的页面效果

推送到 Github上(以下很多内容摘抄自Berlin的博客)

这里主要说推送到个人主页的方式

首先,需要把 public/ 目录删除

rm -rf public/

public/ 目录添加为 submodule

git init git submodule add git@github.com:XXX/xxx.github.io public # xxx是Github的username

此处有个坑就是本机 git 默认分支名是 master,而 Github 中默认分支名已改成了main,因此需要把本地分支名称改为main

git branch -m main

添加文件添加 .gitignore 文件,文件中写 public/,在同步到 myhugo 时会忽略 public 文件夹

vi .gitignore
public/

:wq 保存退出

将静态页上传到 用户名.github.io 的工作可以借助一个 deploy.sh 脚本来完成

#!/bin/bash

echo -e "\033[0;32mDeploying updates to GitHub...\033[0m"

# Build the project.
hugo # if using a theme, replace with `hugo -t <YOURTHEME>`

# Go To Public folder
cd public
# Add changes to git.
git add .

# Commit changes.
msg="rebuilding site `date`"
if [ $# -eq 1 ]
  then msg="$1"
fi
git commit -m "$msg"

# Push source and build repos.
git push origin main

# Come Back up to the Project Root
cd ..

把以上命令保存为 .sh 文件,然后再运行以下命令,修改 deploy.sh 的权限

chmod +x deploy.sh

运行以下命令完成 push 整个博客的操作

./deploy.sh "Your optional commit message"

然后把 myblog 里的内容同步到 GitHub 上。同时要在 datalayoutsstatic 里面添加一个 .gitkeep 文件,以保持目录结构。记住一定要删掉你的主题目录里面的 .git 文件夹

git remote add origin git@github.com:github_user_name/your_repository.git    #  your_repository 即你存放你的博客源文件的仓库
git pull origin main
git add .
git commit -m "the message you want to write"
git push -u origin main    # 第二次 push 可以不用加 -u

到这里就大功告成了,如果你要在另一台电脑上继续写博客,只要把 myhugo克隆下来,然后把里面“看得见”的东西拷贝到一个新的文件夹(即除了 .git.gitmodule 等),然后再重复刚才创建 git 子模块的那些步骤,当然你要准备 Hugo 环境。如果你想获取你的主题的最新更新,则在你的主题根目录下运行如下命令:

git init
git remote add origin https://github.com/author_name/your_theme_repo_name.git
git pull    # or git pull origin main

3. 参考资料

使用Hugo搭建个人博客,by Berlin

HUGO官网