Hugo+Github搭建个人博客

Hugo+Github搭建个人博客

July 9, 2020

Hugo是基于Go语言编写的静态博客框架,利用它结合Github Pages可以很容易的搭建出个人博客。

Hugo安装 #

Windows系统下安装步骤如下:

1.打开网站 https://github.com/gohugoio/hugo/releases
2.下载 hugo_x.xx.x_Windows-64bit.zip
3.解压然后安装到某文件夹内
4.将 hugo.exe 所在文件夹添加至Path环境变量
5.hugo version 验证是否安装成功

问题:因为众所周知的原因可能下载不成功。

其它问题等请参考 Hugo官网

hugo命令 #

使用方法:
  hugo
  hugo [flags]
  hugo [command]
  hugo [command] [flags]

节选的 command:
  new         为你的站点创建新的内容
  server      一个高性能的web服务器

节选的 flags:
  -D, --buildDrafts                包括被标记为draft的文章
  -E, --buildExpired               包括已过期的文章
  -F, --buildFuture                包括将在未来发布的文章

举几个栗子:
  hugo -D                          生成静态文件并包括draft为true文章
  hugo new post/new-content.md     新建一篇文章
  hugo new site mysite             新建一个称为mysite的站点
  hugo server -D       启动服务器并包括draft为true文章

建立站点 #

将会在运行此命令的位置新建一个名为myblog的站点:

hugo new site myblog

生成的站点目录及作用是:

.
├── archetypes     储存.md的模板文件default.md
├── content        存放所有的博客文章(.md文件)
├── data           储存数据文件供模板调用
├── layouts        存放的是站点的模板文件
├── static         存放js/css/img等静态资源
├── themes         存放站点的主题
└── config.toml    配置文件

注意: 此处archetypes、layouts和static文件夹的优先级高于主题下的同名文件夹。当需要稍稍修改主题时,复制到根目录下的对应文件夹再修改,则日后无git冲突问题。

此外,执行hugo命令后,还会生成一个用于储存生成静态文件的public文件夹。

添加主题 #

hugo主题非常多,如站点使用的是even主题,在博客根目录下执行:

$ git clone https://github.com/olOwOlo/hugo-theme-even themes/even

每个主题都会有不同的参数配置,将 themes/even/exampleSite/config.toml 复制到博客根目录下进行自定义配置。

新建文章 #

新建文章的代码为:

hugo new post/my-first-post.md

可通过 front-matter 针对每一篇文章单独进行设置,themes/even/archetypes/default.md 文件陈列了所有可用的参数,通常将该文件复制到站点根目录archetypes文件夹下并根据需要配置。如本站点的 front-matter 为:

---
title: "{{ replace .TranslationBaseName "-" " " | title }}"
date: {{ .Date }}
draft: true
description: ""
tags: []
categories: []
---
摘要部分
<!--more-->

PS: Hugo的配置文件和文章中引用图片都是从static作为根目录的。

运行站点 #

hugo server -t even --buildDrafts
or
hugo server --theme=even --buildDrafts
or
hugo server -D

PS: 若config.toml指定了theme可省略参数,–buildDrafts参数目的是指定编译draft为true的文章。

在站点根目录下运行此命令后,即可通过http://localhost:1313/访问博客站点。

发布到Github #

首先要创建一个Github仓库且名字为IDName.github.io,然后执行以下命令生成静态网站(public文件夹下):

hugo --theme=even --baseUrl="https://IDName.github.io" --buildDrafts

PS: 若config.toml指定了theme或baseUrl参数则此处可省略。

然后依次执行以下命令:

cd public
git init
git add .
git commit -m "我的hugo博客第一次提交"
#关联远端仓库
git remote add origin https://github.com/IDName/IDName.github.io.git
git push -u origin master

注意这里有个问题是当每次本地写完博客后都需要提交至远程仓库,特别繁琐。故可以创建deploy.bat批处理文件自动执行:

::表示进入E盘
e:

cd E:\GoLang\myblog

hugo --theme=even --baseUrl="https://IDName.github.io" --buildDrafts

cd public
::git init 注释
git add .
git commit -m "updated"
git push

cd ..
pause

针对自己博客源地址进行相应修改即可。

PS: linux系统可编写makefile文件自动执行脚本。有条件的也可购买云服务器部署博客。

绑定个人域名 #

  1. 首先得有自己的域名,有了域名之后进行CNAME解析至https://IDName.github.io;

  2. 点击IDName.github.io仓库,在settings下的GitHub Pages中填写自己域名并保存,或直接在code页面中创建CNAME文件并填写自己域名。

PS:这里有个问题,当在本地public文件夹下git push出错时可能是由于修改了远程github仓,此时可以先git pull,然后在重新生成public并执行deploy.bat文件。


本文参考: olOwOlo的个人博客    HUGO主题book    HUGO中文文档