前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hugo + GitHub Pages 搭建自己的网站

Hugo + GitHub Pages 搭建自己的网站

作者头像
lucifer210
发布2020-12-15 09:57:23
1.3K0
发布2020-12-15 09:57:23
举报
文章被收录于专栏:脑洞前端脑洞前端

点击上方蓝色“polarisxu”关注我,设个星标,不会让你失望

大家好,我是站长 polarisxu。

很早之前,我使用 WordPress 搭建了个人博客:http://blog.studygolang.com,毕竟那时候 WordPress 是首选。现如今,大家似乎更喜欢静态博客,各种语言的静态博客生成器轮子不断,比如 Go 语言的 Hugo 就是一个静态博客生成器。我个人认为,静态博客生成器流行的一个很大原因,是 Markdown 的流行,开发人员习惯了使用 Markdown 进行写作。

对于我,有另外一个痛点。最近在公众号写了一些文章,希望同步到博客,只是文字还好处理些,如果涉及到图片,微信公众号上传了一次,博客还得再来一次,挺费劲的。同时,为了保留最原始的文字,原始博文放在 GitHub 是一个不错的选择(用 Git 保留你的修改,不要太棒好嘛!)。

既然博文都保存在了 GitHub 上,怎么方便快速的基于 GitHub 来搭建自己的博客呢?(有些人直接就让在 GitHub 阅读,虽然可以,但体验还是不太好,而且看起来没有那么高大上,是不是?)

我想过使用 GitBook 来搭建,安装时,发现官方已经不维护 gitbook-cli 了,而且每次新增加文章,都得维护目录等,也是挺费劲的。于是放弃了这种方式。

这时我想到了通过静态博客生成器来搞。最喜欢 Go,自然 Hugo 成为第一选择。

废话不多少,记录下我搭建的过程。

01 安装 Hugo

你可以通过 https://github.com/gohugoio/hugo/releases 下载相应的安装包,我喜欢源码安装。

代码语言:javascript
复制
$ go get -v github.com/gohugoio/hugo

如果你也想通过源码安装,请自行准备好 Go 环境。

查看版本同时验证是否安装成功:(查看该文时,最新版本可能变了)

代码语言:javascript
复制
$ hugo version
Hugo Static Site Generator v0.76.5 darwin/amd64 BuildDate: unknown

02 使用 Hugo

在你本机某个目录执行如下命令,创建一个网站,我使用 polarisxu 这个名字。

代码语言:javascript
复制
$ hugo new site polarisxu
Congratulations! Your new Hugo site is created in /Users/xuxinhua/project/testhugo/polarisxu.

Just a few more steps and you're ready to go:

1. Download a theme into the same-named folder.
   Choose a theme from https://themes.gohugo.io/ or
   create your own with the "hugo new theme <THEMENAME>" command.
2. Perhaps you want to add some content. You can add single files
   with "hugo new <SECTIONNAME>/<FILENAME>.<FORMAT>".
3. Start the built-in live server via "hugo server".

Visit https://gohugo.io/ for quickstart guide and full documentation.

进入 polarisxu 目录,查看目录结构如下:

代码语言:javascript
复制
$ tree
.
├── archetypes
│   └── default.md
├── config.toml
├── content
├── data
├── layouts
├── static
└── themes

6 directories, 2 files

接下来需要为我们的网站指定一个主题,这里我们选择 https://themes.gohugo.io/hermit/ 这个主题。

代码语言:javascript
复制
$ git clone https://github.com/Track3/hermit.git themes/hermit

将该主题增加到网站的配置文件中,这样才能生效:

代码语言:javascript
复制
echo 'theme = "hermit"' >> config.toml

测试下是否成功,运行:

代码语言:javascript
复制
$ hugo serve

打开浏览器访问:http://localhost:1313/,看到如下内容:

对该主题进行一些配置。一般的,主题会有例子,我们直接拷贝例子中的 config.toml 覆盖网站的 config.toml:

代码语言:javascript
复制
$ cp -rf themes/hermit/exampleSite/config.toml .

再次运行 hugo serve,页面如下:

可见,这个页面内容可以通过 config.toml 配置,根据需要做一些修改,页面变成这样:(不同主题可能不一样)

不过点击 「文章」 和 「关于」 都报 404。

增加列表页

在 content/posts 目录下新增一个文件:_index.md,内容如下:

代码语言:javascript
复制
---
title: "文章列表"
---

这时(hugo serve 会自动编译)点击 Posts,页面如下:

增加 About 页面

同样的,在 content/posts 目录下新增文件 about.md,正文内容随意,类似这样:

代码语言:javascript
复制
---
title: "关于"
date: "2020-12-01"
---

这是关于页面,polarisxu。

测试文章

接着,增加一篇测试文章:

代码语言:javascript
复制
$ hugo new posts/my-first-post.md

这会在 content/posts 目录下生成一个 my-first-post.md 文件,里面内容如下:

代码语言:javascript
复制
---
title: "My First Post"
date: 2020-11-30T23:33:03+08:00
draft: true
toc: false
images:
tags:
  - untagged
---

其中 --- 之间的数据是文章的元数据,在 Hugo 中叫做 Front Matter。

随意增加一些内容,并做一些修改:(其中 isCJKLanguage: true 用于准确计算中文字数)

代码语言:javascript
复制
---
title: "第一篇文章"
date: 2020-11-30T23:33:03+08:00
draft: false
toc: false
isCJKLanguage: true
images:
tags: 
  - 文章
---

这是第一篇文章。。。

查看文章详情:http://localhost:1313/posts/my-first-post/。

如果文章完成,可以执行 hugo 命令,生成静态页面。默认会将生成的静态页面放入 public 目录中。

关于 Hugo 更多的定制,比如 theme 的定制,这里不过多讲解,有兴趣的自己琢磨。比如虽然 https://polarisxu.studygolang.com/ 和这里的例子使用了同一个模板,但样子却有不少不同,你可以查看 https://github.com/polaris1119/polarisxu,对比到底做了什么,折腾一番,基本会了。

03 使用 GitHub Pages 部署站点

这是 GitHub 为你和你的项目准备网站的,GitHub Pages 官方站点:https://pages.github.com/,大概就是通过将网站内容放到 GitHub,通过 GitHub Pages 可以弄出一个自己的站点。它最常使用的是通过 Jekyll 这个站点生成器生成静态页面,有兴趣的自行查阅资料了解。我们应该使用 Hugo 生成静态页面,因此直接将静态页面部署到 GitHub Pages。

创建一个特殊的仓库

在 GitHub 上创建一个仓库,不过仓库名有特殊要求。如果是个人账号,比如我的 GitHub ID 是 polaris1119,则仓库名是:polaris1119.github.io;如果是组织账号,比如 studygolang 这个组织,则仓库名是:studygolang.github.io。

配置仓库

进入仓库的 Settings 页面,有一个区块叫 GitHub Pages,可以配置站点信息,比如内容来源、自定义域名、是否启用 HTTPS 等。

说明如下:

  • 数据源默认使用主分支下的根目录,我个人建议改为 docs 目录;
  • 自定义域名如果留空,则默认仓库名就是你的域名,比如我这里的 polaris1119.github.io;
  • 如果配置了自定义域名,则需要在你的域名配置上 CNAME 记录。我这里就是 polarisxu 这个子域名的 CNAME 值是 polaris1119.github.io;
  • 如果配置了自定义域名,启用 HTTPS 需要等待一段时间才能生效;

你可以在该仓库上正确的位置放置一个 index.html 文件,测试是否正常。

小细节:避免 Jekyll 起作用,可以在仓库根目录放一个空文件,文件名:.nojekyll

部署我们的站点

这里有两种做法。

1)方法一

上面 Hugo 项目的代码直接推送到 GitHub Pages 这个仓库中,在通过 Hugo 生成静态页面时,指定目标目录为 docs:

代码语言:javascript
复制
$ hugo -d docs

这样 docs 下面的内容就是静态页面,是网站最终展示的内容。

2)方法二

Hugo 源网站内容单独放在一个仓,比如我放在了 https://github.com/polaris1119/polarisxu 这个仓库。这样分两个仓库相对麻烦先。但也有一个好处:GitHub Pages 站点有内容大小限制:不能超过 1 GB,这样分开可以节省空间,而且 Hugo 内容和站点解耦。

因此每次在 Hugo 站点项目写完文章后,需要生成静态内容,拷贝到 GitHub Pages 仓库,提交代码等。把这些步骤写成一个脚本,瞬间变简单了。

代码语言:javascript
复制
#!/bin/sh

hugo

cp -rf public/* ../polaris1119.github.io/docs/

cd ../polaris1119.github.io/

git add * && git commit -m 'new article' && git push

cd ../polarisxu/

04 总结

技术人员搞个自己的博客还是不错的,开始时花些时间折腾一个自己喜欢的站点,之后就是抽时间产出内容了。通过上面的介绍可知,现在搭建一个站点,完全不需要投入任何 money。

怎么样?有没有冲动自己搞一个。欢迎交流~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 脑洞前端 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01 安装 Hugo
  • 02 使用 Hugo
    • 增加列表页
      • 增加 About 页面
        • 测试文章
        • 03 使用 GitHub Pages 部署站点
          • 创建一个特殊的仓库
            • 配置仓库
              • 部署我们的站点
              • 04 总结
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档