缘起
我的博客一直采用的是 github pages 来托管,中间断断续续的也没怎么管理过,偶尔写几篇博客,所以也就没怎么关心过访问速度,搜索引擎收录等问题。
不过我对博客一直还是情有独钟,我觉得像我一样的软件工程师,如果能有个人博客,并且保持一定程度的更新率还是很有必要的。
这次迁移主要考虑三个原因:
- 访问速度较慢
- 博客还不支持 https
- 谷歌搜索引擎收录较少
github pages 服务器位于美国,对于中文博客来说,访问还是有一些慢的,且不说 github 未来在我国很有可能被 feng,所以打算迁移到国内来。之前博客其实是有部署过双线的,国外走 github,国内走 coding,但奈何 coding 不争气,后来我干脆停了 coding 的解析。现在打算找一个付费的香港虚拟主机,一年几十块钱搞定。
另外就是由于之前已经采用了 rebootcat.com 这个域名,所以无法在 github pages 上开启 https(当然方法是有的,比如使用 cloudflare 加速,这个详见我另外一篇博文),所以这次的迁移也打算开启全站 https。
购买香港虚拟主机
虚拟主机是什么?
虚拟主机(英语:virtual hosting)或称 共享主机(shared web hosting),又称虚拟服务器,是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术。虚拟主机之间完全独立,并可由用户自行管理,虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。(来自某百科)
简单来说,虚拟主机就是你可以用来托管网站,给你一定量的存储空间,以及访问流量,还有IP 或者域名绑定等。
这里需要说明的是,你能搜到很多免费的虚拟空间,免费的我个人不太建议,免费的有很多问题这里就不细说了,况且付费的也没有很贵,一年几十块钱,当然还是有可能跑路的(手动狗头)!
如上图所示,这是我购买的虚拟主机的控制面板,提供了比较方便的中文管理面板,比如域名绑定,缓存设置,SSL 设置,FTP 管理等。
具体是哪一家,我就不说了(没有给我广告费,我的服务商看到了欢迎联系)。
绑定域名
由于之前是解析到 github pages 的,现在购买了虚拟主机后,会有一个新的 IP,需要重新解析域名到这个 IP 上
如上图所示,红色框里面的就是新加的两条 DNS 解析记录,黄色框里面就是之前解析到 github pages 的记录,现在我把他们全部暂停了(以防后期会用到)。
解析完成之后,等待生效,使用多地 ping 的工具去测试一下 DNS 解析是否生效了。或者你本地使用 ping 看是否生效了。
1 | $ ping rebootcat.com -c 4 [10:45:50] |
可以看到上面解析到了新的 IP 上。
FTP 上传网站源码
我的博客是基于 hexo 搭建的,之前是直接把网站源码发布到 github pages 上了:
1 | hexo d -g |
现在需要把生成的网站源码打包上传到虚拟主机上。
hexo 生成的网站源码位于 public
目录下:
1 | zip -r blog.zip public |
然后把 blog.zip 通过面板上的 在线文件管理 上传到虚拟主机的根目录里,比如我的根目录是 /wwwroot/
,然后点击解压。
完成之后,浏览器输入网站
1 | http://rebootcat.com |
看能否正确响应。一般来说,没什么问题,如果无法访问,请联系你的虚拟主机提供商。
自动化上传网站源码
上面的步骤,基本上已经完成了博客迁移的大部分工作了。不过对于程序员来说,怎么能每次更新博文之后还要重复上面的步骤,甚至是需要每次用浏览器打开虚拟主机控制面板上传网站源码,那岂不是很麻烦,并且不够极客精神。
那必然是要做成自动化的方式,一个命令搞定网站更新。
其实也简单,就是利用服务商提供的 FTP 口令,使用 python 脚本自动化上传网站源码,实现自动化更新。
python 脚本可以直接从我的 github 下载:
https://github.com/smaugx/dailytools/blob/master/ftpblog.py
然后修改代码里的网站域名以及 ftp 口令,改成你自己的,修改上传的本地目录以及远程目录,然后执行脚本自动化上传:
1 | python ftpblog.py |
配置 HTTPS
使用的是 https://freessl.cn/ 生成免费的 HTTPS 证书。
打开网站,输入你的域名以及邮箱,根据提示下载一个工具 KeyManager,然后生成证书:
然后回到 freessl.cn 网站页面进行 DNS 验证:
目的就是为了验证你的域名的所有权。这里根据提示,去 DNS 解析的地方设置解析记录。
验证成功之后使用 KeyManager 导出证书:
然后会得到一个类似于 rebootcat-com-nginx-0909002710.zip
的包,解压之后会得到两个文件:
1 | rebootcat.com_chain.crt |
用编辑器打开这两个文件,或者直接 cat
这两个文件,一个是 SSl 的证书,一个是 SSL 密钥,把这两个文件的内容拷贝到虚拟主机面板的 SSL设置处:
并且开启了 http 跳转 https。
到此, HTTPS 证书设置就完成了。
注意需要记住 KeyManager 的主密码
试试用 https://rebootcat.com 看能否正确访问呢?
网站云监控
由于购买的是香港的虚拟主机,毕竟一年也才几十块钱,很难说服务提供商就跑路了,为了避免这一类事情发生的时候导致博客无法访问,有必要对博客网站进行一些云监控,一旦出现异常,则告警。
免费的网站监控工具有很多,我用的是阿里云的监控以及 UpTimeRobot 的网站监控:
这个自行设置一下,注意设置好报警阈值,不然可能会造成误报:
所以一旦出了很严重的报警,那么说明你的服务商跑路了。。。
效果
这里就简单贴一下迁移前后的效果图:
迁移前:
迁移后:
可以看到还是有很好的改善的,毕竟服务器位于香港。
The End
到此,博客迁移就完成了,访问速度提升了,也开启了 https。接下来我会考虑对博客首页做一些优化,但由于现在图片走的其实还是 jsdelivr 的国外 cdn,所以速度还是有点慢,可以考虑直接把图片放到网站根目录下,毕竟现在使用的是虚拟主机。
后面再说吧,也可以考虑把图片等放到阿里云或者腾讯云对象存储上。
Blog:
2020-09-20 于杭州
By 史矛革