Git Pages
GitHub Pages 用于介绍用户个人和托管在 GitHub 中的项目的,免费,虽然空间和流量有限制(空间上限 1G、月流量上限 100G、每小时更新不超过 10 次),但绝对够用。
新建 GitHub Pages
GitHub Pages 分两类:User or Organization site (个人或组织 site) 和 Project site (项目 site)。
- 个人或组织 site
仓库名必须为 username.github.io
(username 为用户在 github 上的用户名,比如 tracy-xu.github.io
),分支为 master,其分支的内容将会被构建和发布在你的 GitHub Pages site 上,这样的 pages 一般一个账号只能有一个,通过 username.github.io
访问。
- 项目 site
一个项目可拥有一个 site,使用 gh-pages 分支,也可以在 Settings –> GitHub Pages 下设置,通过 username.github.io/project-name
访问。
绑定域名
为 GitHub Pages 绑定域名需要两步:第一步生成 CNAME 文件,第二步域名解析。
生成 CNAME 文件
GitHub Pages CNAME 文件记录自定义域名,其作用是,当访问自定义域名时,会通过 DNS 解析到 GitHub 的服务器 IP,GitHub 仓库千万个,GitHub 服务器会根据 HTTP Host 匹配对应 CNAME 文件所在的仓库,如果没有这个文件,GitHub 服务器不知道返回哪个仓库,会显示 404。
在 tracy-xu.github.io
这个 rep 中点击 Settings,然后在 Custom domain 中填入要绑定的域名 tracyxu.cn
。这个操作会在项目的根目录生成 CNAME 文件,里面内容就是所要绑定的域名 tracyxu.cn
。
注:为防止在像 Hexo 这样一些博客系统中被打包覆盖,可以在 Hexo 中手动创建 CNAME。
域名解析
以阿里云为例,登陆阿里云控制台进行域名解析。记录类型有两种方式可选择:A 记录(A 将域名指向一个 IPV4 地址)、CNAME(CNAME 将域名指向另外一个域名)记录。
- A 记录
A 记录需要找到 git pages 的 IP(ping tracy-xu.github.io 结果是 185.199.110.153),然后再进行后续设置。
记录类型 | 主机记录 | 解析线路(isp) | 记录值 | MX优先级 | TTL | 状态 | 操作 |
---|---|---|---|---|---|---|---|
A | www | 默认 | 185.199.110.153 | – | 10 分钟 | 正常 | 修改,暂停,删除,备注 |
A | @ | 默认 | 185.199.110.153 | – | 10 分钟 | 正常 | 修改,暂停,删除,备注 |
注意:主机记录 www 和 @ 都要添加,这是为了 www.tracyxu.cn
和 tracyxu.cn
都能访问到页面。
- CNAME 记录
CNAME 记录不需要通过 IP 来绑定,记录值直接填写 tracy-xu.github.io
即可。
记录类型 | 主机记录 | 解析线路(isp) | 记录值 | MX优先级 | TTL | 状态 | 操作 |
---|---|---|---|---|---|---|---|
CMAME | www | 默认 | tracy-xu.github.io | – | 10 分钟 | 正常 | 修改,暂停,删除,备注 |
CMAME | @ | 默认 | tracy-xu.github.io | – | 10 分钟 | 正常 | 修改,暂停,删除,备注 |
注意:域名解析设置完成后,如果还是不能访问,这是因为在等服务商分配 DNS,等待 10 来分钟就可以了,如果还不能访问,就是因为其他原因了,比如阿里云中域名没进行实名认证不能被解析(不分配 DNS 服务器)。
HTTPS
GitHub Pages 开放了自定义域名 HTTPS 支持,不用再自己买证书或借用第三方服务,就能开启网址左边的小绿锁了。
设置步骤根据你的自定义域名解析类型分为两种:A、CNAME。
- A 记录
A 记录的话只需将解析的 ip 指向如下四个即可:
1 | 185.199.108.153 |
其余的步骤和上面域名解析一样。
注:也可以通过 CNAME 来混合设置,设置 4 个 @ 主机记录的 A 记录和 1 个 www 主机记录的 CNAME 记录。
- CNAME 记录
只需要在 Repositorys 设置中勾选 Enforce HTTPS 的选项即可。