这个站点其实已快有一年,当时由于自己不懂 Web 前端(包括 HTML、CSS、Javascript 等),用的是 GitHub 里别人的模板,现在想来,虽然省事了,但对于一个原创博客写作而言(或许我过多看重了形式上东西),总觉得有些别扭,因此这次索性先不用模板,有功夫时,自己个性定制个模板。现在对 Markdown 用得还熟,因此更新文章不成问题,只是每次更新时,需要在博客首页同步,如果文章量大,显然还是不适宜的,所幸现在重新起步,姑且先这样,待对 Web 前端了解到一定程度后,再重写网站形式。
回顾当时建此站点过程,确实也走了不少弯路,这里对其做一个大体叙述,一来可引以为戒,二来有些经验如果长久不再用,也易忘,所以写下来也可当作备存。
建站大体有如下流程。
从 GitHub 注册帐号;
购买域名;
GitHub 相应仓库(repository)增加 CNAME 及其他内容添加;
将 GitHub 构建的站点挂接到域名上,主要是 DNS 管理。
前两步自不多言,注册流程和一般网站注册帐号相同,我注册的 GitHub 名和域名都是曾用名全拼(现用名全拼. com 域名已被他人注册了)。域名是从 godaddy(俗称 “狗爹”)上买来的(当然先需要从 godady 注册个用户帐号,再购买域名),大概年均花费 50RMB,主要考虑到国外域名商或许不至于像国内一些域名商无良。
通常建站需要三步,即域名 + 空间 + 网站设计。域名要使用国内空间一般需要先备案,一些人往往对此理解有误,是否需要备案要看使用的空间是否在国内,而非看域名从国内域名商还是国外域名商买的。GitHub 是一个代码托管网站,提供静态网页服务,因此,它是一个很好发布静态博客地方,这相当于免费提供了网站域名空间,也免去了使用国内空间备案麻烦。当然它也有两个不足,免费帐号只能创建公共项目,相当于你开源了网站源码,不过这并不是什么问题,毕竟写出来的东西也是给人看的,实在有私人项目的需要,也可使用其付费服务,现在大概是 7 美元一个月。另一个问题是静态网页服务不能解析一些动态元素(如评论),这需要借助第三方服务。
官网对 GitHub 静态页面服务 是这样介绍的。GitHub Pages 是一个静态站点托管服务,GitHub Pages 网站受到以下使用限制的限制。
GitHub 页面源代码库的推荐限制为 1GB。
已发布的 GitHub Pages 网站可能不会超过 1GB。
GitHub Pages 网站的软带宽限制为每月 100GB。
GitHub Pages 网站每小时有 10 个构建的软限制
这对于个人足够用了,而且用户只需要专注于写东西即可,不必自己操心空间问题,也不像其他免费空间那么多限制。
在 GitHub 帐号中创建仓库,网上大多相关教程都说需要创建一个名如 “username.github.io”(比如我的是“tongwendong.github.io”)这样的仓库,但是我也看到一些人创建的主站仓库名不必这样,至今我仍不甚明了。我猜想可能是为了方便网站解析,GitHub 通过 “https://github.io”(这个网址打开会自动转到https://pages.github.com,但奇怪的是 ping 这两个网址返回的是不同 IP,后面会对此详述)管理静态页面服务。比如在“tongwendong.github.io”仓库中创建了名为 CNAME 文件,文件中写入域名(也可为 www 二级域名,这取决于你想它如何显示,显示为一级域名还是 www 二级域名,比如我的为“www.tongwendong.com”),由于这个仓库名所用的二级域名和用户名相同,这就使其有唯一性,服务器很快就能解析到。
仓库一般创建后默认是 master 分支(主分支),而如果需要另外建博客仓库(在“tongwendong.github.io”中也可就地创建博客文件,但我嫌这不够整洁),必须将其默认分支设为 gh-pages 分支(可先创建这分支再设为默认),具体缘由我现在也不甚清楚(或许是为了避免两个主分支解析冲突),只是试过几次情况,必须这样,两个仓库中的网页才能都解析出来。我也见过有些用户主页和博客仓库都是 master 分支(主页仓库也不是 “username.github.io” 这种形式),但都能通过不同的相应级别下的域名解析出来,不知何故。新建博客仓库也可设置不同的二级域名,同理也需要新建一个 CNAME 文件,比如我的为 “blog.tongwendong.com”。
当然仅仅 GitHub 中 CNAME 配置好了还是不行的,需要将 “username.github.io” 和博客仓库(我的仓库名为 blog)挂接到域名上,“username.github.io” 一般仓库里内容搭好了就能打开,挂接到域名上更多是为了方便使用域名,以及通过域名解析博客。这就需要对域名进行 DNS 管理,我在 godaddy 上的 DNS 管理配置如下。
| 类型 | 名称 | 值 | TTL |
|---|---|---|---|
| A | @ | 151.101.228.133 | 600 秒 |
| CNAME | blog | @ | 600 秒 |
| CNAME | qqmail808f75b6 | mail.qq.com | 600 秒 |
| CNAME | www | tongwendong.github.io | 600 秒 |
| MX | @ | mxdomain.qq.com(优先:1) | 600 秒 |
| TXT | @ | v=spf1 include:spf.mail.qq.com ~all | 600 秒 |
| NS | @ | ns69.domaincontrol.com | 1 小时 |
| NS | @ | ns70.domaincontrol.com | 1 小时 |
A 可以理解为指向 IP 地址,@一般指域名本身,比如我的为“tongwendong.com”,TTL 为 “Time To Live” 缩写,也即这项服务存活时间,CNAME 指别名记录,也被称为规范名字,MX 是 “ Mail Exchanger” 缩写,指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器,TXT 一般用来记录 SPF(Sender Policy Framework 的缩写,一种以 IP 地址认证电子邮件发件人身份的技术,提升域名邮箱发送外域邮件的成功率)的文本,NS 即域名服务,负责域名解析。
上面各项值的设立也是有根据的。A 值的确立可用通过 CMD 调用 ping 命令 ping 以下几个网址,“tongwendong.github.io”,“github.io”,“pages.github.com”,第二个可以看作第三个的别名,但 ping 出的 IP 有不同(“github.io”ping 出 IP 为 151.101.193.147,且易变,“pages.github.com”ping 出结果为 github.map.fastly.net [151.101.228.133],且至少一天没怎么变动,“tongwendong.github.io”ping 结果为 sni.github.map.fastly.net [151.101.229.147],一天内也不怎么变),不知为何。由于 “pages.github.com” 的结果用时最少最稳定(“tongwendong.github.io” 次之,但它已有 CNAME 指向),故选择它的 ping 结果 IP。
三条 CNAME,第一条是将“blog.tongwendong.com”二级域名通过 “pages.github.com” 解析到博客仓库中的 CNAME,第二条是为了 QQ 域名邮箱而设定的,申请 QQ 域名邮箱具体情况见http://service.mail.qq.com/cgi-bin/help?id=48,这里不做过多说明,第三条是为了方便 www 二级域名解析到主页仓库中 CNAME。MX 和 TXT 也是为了 QQ 域名邮箱而增加的,MX 优先级越小表明越高(仅有一条的话,1-10 优先级没有区别)。前面这些类型 TTL 都是最小值 600 秒,主要是为了方便有变动时在最快时间内看到效果。NS 用的 godaddy 默认配置,除非有域名污染,否则没必要修改。
当时,为什么想建这个博客网站呢?最初想法是,花了钱最起码能驱动自己写点东西,否则不就浪费资源了,这和我们大多数人办健身卡想法有些相似。事实证明,写东西不仅要有内在欲望(外驱力往往是不够的),更需要形成一种习惯,读书和写作是不对等的,读书就如叔本华所云,嚼别人嚼过的东西,而写作除了要内发深思,或多或少需要一定创造性。
暂且忽视那些外在形式吧,在这个网络时代,可供写东西平台实在太多了,没必要偏执一隅。古人讲立功、立名、立言,我们每个人在其人生轨迹上又将留下什么数据?