使用Github Pages部署静态网页

一、关于Github Pages

github pages是github提供的静态文件托管服务,支持部署仓库内的静态页面文件,特别适合hexojekyll以及gitbook等应用部署网站使用。Github Pages有以下几个优点:

  1. 完全免费
  2. 支持自定义域名
  3. 支持HTTPS
  4. 免备案

其实国内像gitee.comcoding.net也都是提供Pages服务的,但是经过几年的使用感受来说,这两家相对于github还略有不足。主要体现在:

  1. coding在几年前是免费的,也支持自定义域名和HTTPS,无需备案,当时甚至支持对php动态程序的托管。如果coding一直是这种情况,我肯定毫无疑问选择coding,但是coding在17年底18年初和腾讯合作之后,功能就被阉割了。几个功能不是开会员才能使用,就是服务器得收钱。特别是在推广的Web IDE用起来完全没有之前清爽,感觉很笨重。因此后面在改版之后基本就没用过了(当时是在coding部署的hexo博客,改版后导致我后面直接连hexo都没用了T_T)。
  2. gitee也是近两年才大力改善Pages的功能,以前是不支持自定义域名的,部署之后得用用户名.gitee.com/仓库名/来访问,HTTPS功能更是没有(因为太挫了所以gitee基本不用)。现在是支持了自定义域名,但是要开通会员才能自定义域名,每年99(直接放弃)。

对比来看,github还算比较良心的,这也是为什么会选择github来托管的原因。但是github pages也有功能是不足的地方:

  1. 不支持分支部署,只支持部署master分支或者master分支下的docs目录。而上面两家国内托管机构支持多分支部署。
  2. 不支持目录部署,例如希望通过book.xxxx.com/a/和book.xxxx.com/b/分别部署两个仓库,在github pages中是不支持的。只能是通过多个自定义域名来区分,如a.book.xxxx.com和b.book.xxxx.com。

二、设置github pages

2.1 部署静态页面

pages的设置在setting页面中:

image50039403e34d74f1.png

点击后,一直往下拖就可以看到pages设置:

imagec8363663057f9ca9.png

pages目前只支持对master分支或者master的docs目录添加静态页面托管,要想托管页面,必须把文件放到master主目录或者docs目录下。而对于大多数应用(如gitbook)来说,主目录一般都是源码文件,因此建议把生成的静态文件放到docs目录下。当代码库中存在docs目录时,第二个选项会自动亮起。

imageaa67e5d9092374a8.png

点击后就可以使用username.gitee.io/projectname来访问静态页面了。

2.2 添加自定义域名

默认情况下,部署完成后,访问的URL为username.gitee.io/projectname,github支持自定义域名来重定向这个页面。

配置方法:Custom domain栏目中输入自定义的域名,点击Save即可。

我这里绑定的域名是html.book.maqian.io

image54a31ad6812de112.png

配置好后,页面会提示:

Your site is ready to be published at http://html.book.maqian.io/

现在要做的就是把域名添加指向到github pages的服务地址,有两种方法:

  1. 添加一条CNAME记录,指向username.github.io。可以参考Quick start: Setting up a custom domainCustom domain redirects for GitHub Pages sites
  2. 添加A记录,指向github服务器的IP地址,IP地址要在Troubleshooting custom domains找到。

正常情况下建议使用CNAME解析来指向github,因为域名都有套CDN,访问速度优于指向IP地址。

更多相关信息可参考Using a custom domain with GitHub Pages

添加CNAME解析

CNAME解析在DNS服务商处添加,因为打算把*.book.maqian.io都作为自定义域名,因此添加了以下CNAME解析:

imagea88cf94ba8d3a9b3.png

加好后,确认本机可以解析:

C:\Users\maqian>nslookup html.book.maqian.io
服务器:  public1.alidns.com
Address:  223.5.5.5

非权威应答:
名称:    maqianplus.github.io
Addresses:  185.199.111.153
          185.199.109.153
          185.199.108.153
          185.199.110.153
Aliases:  html.book.maqian.io

然后访问网站,部署的页面就出来了:

imagedab906d8bae5d8ef.png

2.3 强制https

github pages支持添加https,会自动申请Let's encrypt的证书,勾选上Enforce HTTPS选项就可以了:

imagedbb515b8a50c0195.png

选框无法被勾选的时候,先清空Custom domain里面的内容,点击Save,然后再勾选上Enforce HTTPS,填入自定义域名。

看到以下信息的时候,说明https证书已经在申请过程中了,耐心等待一段时间:

image8bdc5e1d6af76a8b.png

申请完成之后,勾选上选框:

image1b3d2accc9aa6543.png

再次访问就是https的了:

image409221fd63d000ce.png

最后修改:2019 年 09 月 14 日
如果觉得我的文章对你有用,请随意赞赏