用Github和Coding双线绑定自定义域名

本来博客已经搭建好了,可是总觉得用Github一个二级域名怪怪的,非要折腾自己来绑定自己的域名,并申请SSL(就是喜欢看那个小绿锁!)前前后后花了不少时间,走了不少弯路,将踩过的坑记录下来。

原文发布于个人博客(好望角),那里有更好的阅读体验。


域名设计原则

域名的设置应该根据什么原则呢?参考域名价值评估,我们可以根据如下因素来

域名的长短:1位:10万,2位:5万,3位:1万,4位:5000,5位以上1000,6位以上500
域名的组成结构:纯字母的*2,数字与字母杂的*1,中划线/3
域名的组合方式:单词*3,纯数及单词组合*2,拼音及其它*1
域名的形式分类:行业词*3,通用词*2,创单词*1
域名的商业价值:搜索数量:1000以下/3,1000到1万/2,1万到10万*1,10万到100万*2,100万*3,100万以后搜索数量多一个0就*3的倍数,百度以100万,google以300万为参数。
域名的后缀:com结尾的大于net,net结尾的大约cn的,cn结尾的大于http://com.cn(org、gov排除例外一般不属于商业险域名),http://com.cn大于其他尾缀域名
域名的历史记录:自己衡量。
域名记忆性标准:跟实际生活中某些词汇重叠,跟语言、语音发声重叠适用性较强
域名的合法性标准:域名是否符合法律,是否涉及到知识产品争议方面。
域名的潜在商业价值:域名所涉及的行业规模及互联网的相关性。

域名服务商选择

心中构思好了自己的域名后,就可以着手选择一个靠谱的域名购买商。如果懒得备案,那就将我们的目光锁定在国外。
参考分析域名购买商2018最佳国外域名注册商,不需要备案这两篇文章,我将目光初步锁定在namesilo和namecheap两家口碑较好、服务稳定、价格尚可的服务商身上。

这里有两个网站来查询你所想好的域名目前的状况,以及价格对比。
查域名是否被注册(中文站)domcomp——国外多家域名购买网站的价格对比
如果准备购买,从domcomp内点击对应的域名服务商还有额外的优惠。

我最终选择的是Namesilo,因为更便宜……口碑也还不错。namesilo传送门 Namesilo还免费提供隐私服务(即不公开域名持有者的信息)。对了, Namesilo 支持支付宝付款。
从传送门进去,注册新用户,选好合适的域名后填入下面两个优惠码其中任意一个都可以优惠一美元。(截止日期:2020年12月31日)

<div class="note success"><p>NameSilo 新用户购物优惠码一 <span id='inline-blue'>imbowei</span>

 NameSilo 新用户购物优惠码二 <span id='inline-blue'>miaomiao</span>  </p></div>

域名购买及配置

namesilo购买域名之前记得填写优惠码,并且提交(提交按钮一直都是灰色的!),提交后可以便宜一美元。


namesilo购买域名

经过以上步骤,就可以最终购买域名了。

购买得到域名,要紧接着配置。新域名默认有四条停靠的广告记录,不要犹豫,直接全部删除!

Namesilo需要删除的默认配置

然后我选用了DNSpod的域名解析服务。中文网站,简单易懂。它有两个默认的解析记录,我们直接添加到namesilo购买的域名中,如下图所示。(注意:不需要第三条记录。)
这样就可以放心关闭Namesilo的网站了。
namesilo第三方服务器设置

Coding配置

如果Coding和GitHub的用户名和注册邮箱完全一样,就不用再次配置Git,只要找到.ssh文件夹下对应的id_ras.pub文件,再去coding以相同的方式设置一次公钥即可。

如果用户名或者注册邮箱并不是完全一致,那么按照如下步骤在进行一遍配置。
注意,需要先将配置GitHub时候生成的公钥密钥文件备份,或者生成Coding配置的时候改掉生成的文件名。

  • git config --global user.name "onlychristmas" 设置Coding用户名
  • git config --global user.email "onlychristmas@hh.com"设置注册Coding邮箱
  • ssh-keygen -t rsa 在bash中执行命令,连着三个回车(不需要密码)。
  • 生成两个文件 id_rsa 和 id_rsa.pub ,而 id_rsa 是密钥,id_rsa.pub 就是公钥。生成文件目录`C:/用户/你的用户名/

输入 ssh -T git@coding.net 如果出现如下字样不要慌张,因为可能是本地网络禁止了22端口,我们换个端口就好。

ssh: connect to host coding.net port 22: Connection refused

再次输入 ssh -T -p 443 git@git-ssh.coding.net 出现如下字样,说明配置coding成功。

The authenticity of host …………………
Coding 提示: Hello OnlyChristmas, You've connected to Coding.net via SSH. This is a personal key.
OnlyChristmas,你好,你已经通过 SSH 协议认证 Coding.net 服务,这是一个个人公钥

将博客托管到Coding和GitHub

首先,在本地博客根目录/source/下建立一个名为 CNAME的文件,里面写填入你购买的域名。例如imbowei.com, 不需要任何的其他字符,例如“www”,"https"之类。

在本地博客文件夹下的srouce文件夹下新建<span id='inline-green'>Staticfile</span>文件,接下来就可以同时向coding和GitHub上传博客了。

向coding提交代码遇到了如下问题怎么办?

remote: Coding 提示: Authentication failed! 认证失败,请确认您输入了正确的账号密码

我是因为配置出现了问题,改成如下样式,即可同时上传github和coding

deploy:
  type: git
  repo:
    github: https://github.com/OnlyChristmas/OnlyChristmas.github.io.git
    coding: git@git.coding.net:OnlyChristmas/OnlyChristmas.git
  branch: master

代码上传之后,在coding项目的代码/pages 服务中选取master分支,开启静态pages服务,即可访问coding的主页了。

Github and Coding 双线部署并申请SSL

现在Coding pages和Github pages 已经都可以使用了。
那么我们现在要做的就是设置他们同时解析到我们刚才购买的域名imbowei.com,实现双线访问。
这里的坑比较多。
首先要在DNSpod先设置解析Coding,并且在Coding项目的pages界面申请SSL证书。申请配置如下图所示。
否则Let's Encrypt主机根据域名解析记录验证域名所有权时,会定位到GitHub Page的主机上,导致Let's EncryptSSL证书申请失败。

Coding pages SSL 申请成功

然后在DNSpod再配置Github pages的解析,并在Github博客项目的设置中绑定主页。

然而,Github pages 出现了如下的错误信息,

Domain's DNS record could not be retrieved.
不要着急,这是因为github pages的自定义HTTPS请求没有配置成功(2018年5月1日新推出的良心服务),在刚才的DNSpod中添加一条A记录即可,其中IP指向在下面的地址中任选其一即可(一项不行,就换另外一个)

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153

Gituhb pages的配置成功界面如下所示。


Gituhb pages SSL配置成功

最终的DNSpod解析配置如下图所示。


DNSpod 配置

去除Coding的广告……

配置好之后很开心,然而发现,Coding会自动给你的博客加一个滞留好几秒钟的跳转页面,感觉非常非常的不好。
还好除了升级为它的黄金会员之外还有其他解决方法。

只要在博客主页为它打一点点广告就好了(要两个工作日才会通过!)……毕竟托管在上面还是很方便的。

<div>Hosted by <a href="https://pages.coding.me" style="font-weight: bold">Coding Pages</a>
</div>

对于Next主题来说,在themes/next/layout/_partials/footer.swig的文件末尾加入上述代码就可以把Coding要求的小广告加入到主页的页脚位置。

但是Coding这种强制要求真的很烦人,一点互联网精神都没有!货比货,感觉Coding距离Github还差几个光年吧。
既然打广告,也顺便带上良心的Github吧!

资源配置

现在部署好了HTTPS,那为什么还是没有出现小绿锁?刷新页面出现的小绿锁一闪而过,让我们空欢喜一场!
因为网站没有全站HTTPS,也就是说,我们引用了http的资源,要将对应资源全部换成HTTPS才能出现小绿锁。

怎么知道自己什么还没有换成HTTPS资源?很简单,F12打开调式界面就可以发现警告信息。
例如我的站点就是因为加载了一个自定义的鼠标图片,如鼠标图片引用了HTTP的资源,将该段代码注释掉,或者换一个HTTPS的资源连接即可。

然后,就有心心念的小绿锁了!

另外由于主页地址的改变,我还更新了如下资源配置:

  • gitment评论系统的Authorization callback URL主页设置为自定义域名。
  • SEO相关设置
  • 在<span id="inline-blue"> 站点配置文件 </span>中更改默认站点,使得文档末尾的copyright链接生成正确。
  • 还在阿里云申请了一个为期一年的SSL免费证书,用于一些资源网站的验证使用。

推荐阅读更多精彩内容