点开之前用GitHub Pages搭建的项目页面qtlsx.debao.me,看到上次更新还是在9年前。长时间没写博客,有点不清楚从哪儿开始了。或许先把GH Pages捡起来看看,毕竟10年来发生了很多变化。
GitHub Pages 是 GitHub 提供的一项免费服务,它允许用户创建和托管个人博客、项目文档、演示页面等静态网站。无需外部服务器或复杂的配置,就快速创建并发布自己的博客。
GitHub Pages的官网地址: https://pages.github.com/
站点类别
GH Pages站点有两种(三种):
- 用户级,每个用户一个:仓库名必须为
<username>.github.io
- 组织级,每个组织一个:仓库名必须为
<orgname>.github.io
- 项目级,每个项目一个:仓库名不限制,访问地址为
<userororgname>.github.io/<projectname>
用户级和组织级其实是一样的,属于一类,都需要放置到一个特定名字的仓库中;而项目级不同,它名字随意, 但是它必须属于一个用户或一个组织。一个用户可以有数量不限的项目级站点。
注意点
私有与免费
对于GitHub的免费用户,只能在公有仓库中开启 GitHub Pages。
如果要在私有仓库中开启 GitHub Pages,需要升级到收费用户。
gh-pages分支不是必须
在2016年之前,项目站点内容需要推送到gh-pages分支才能生效。这个限制早已不存在。
现在可以在master或其他分支的根目录或docs目录下,只需要在仓库的settings中做一下配置即可。
参考:
- https://github.blog/2016-08-17-simpler-github-pages-publishing/
- https://stackoverflow.com/questions/35978862/github-pages-why-do-i-need-a-gh-pages
https 支持
对于使用自定义域名的公有仓库,只需要在Settings中勾选Enforce HTTPS即可。
自定义域名
如果自己有域名的话,配置子域名来指向GH Pages站点比较简单
- 仓库中添加一个名为CNAME文件(必须这个名字),里面包含自定义的域名(只能包含一个域名,且占据一行)
- 配置DNS,使其指向
<userororgname>.github.io
(不管是项目级别站点还是用户级站点)
参考:
- https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages
Jekyll
Github Pages内置了Jekyll(音标 /'dʒiːk əl/
)这一静态站点生成器的支持。通过_config.yml
可以对Jekyll进行配置。
Jekyll是采用Ruby编写的,博客形态的静态站点生成器。它有一个模版目录,其中包含原始文本格式的文档, 通过一个转换器(如 Markdown)和的 Liquid 渲染器转化成一个完整的可发布的静态网站,以便发布在任何服务器上。
如何要禁用Jekyll,可以在根目录下创建一个名为
.nojekyll
的空文件。
参考:
- https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/about-github-pages-and-jekyll
- https://jekyllrb.com/docs/github-pages/
最简的支持Jekyll的GH Pages站点
本地不安装 Jekyll 这套Ruby的东西,做一个最简单的支持Jekyll的GitHub Pages站点。
创建一个代码仓库,按如下设置,并放置一个index.md文件。站点完成!
仓库设置
Settings => Pages => Buid and deployment
Source: 选择 Depoly from a branch
Branch:选择 main root
仓库文件
- 需要存在一个 index.md 文件,文件头部需要有三个中横线构成的头部
1 2 3 |
|
很多人说如果没有index.md的话,会使用README.md文件,个人试过不行,不知道是否姿势不对造成的。
- https://github.com/dbzhang800/jekyll-test
GitHub Actions
GH Pages除了支持传统的 Depoly from a branch 方式,还支持GitHub Actions方式。
借助 Github Actions,不仅可以使用Jekyll,还可以使用其他站点生成器。如果不想使用GitHub pages,也可以使用Actions将生成的站点推送到其他免费主机,比如 Kinsta或 azure 等。