时间回到2016年的7月10号,那时候我刚刚开始正式在博客园写博客,博客园的交流氛围很好,但鉴于博客园古老的界面,同时计划创建一个自己独立的博客,毕竟自己的博客怎么折腾都行。

那时候正在研究 Spring Boot ,正是开源项目云收藏的启动阶段,在网上找 Gradle 的使用方法,在 Github 上发现一个比较好的学习资源:Gradle User Guide 中文版,看完之后顺便查看了一下作者的 Github 主页,发现有一个 Jekyll 主题 Yummy Jekyll Theme

通过这个链接我打开了作者的博客,发现这个博客主题简洁、大方,整体淡蓝色的风格深受我的喜欢。下图是它最初的模样:

后面我根据自己的情况,做了一些定制,就成了现在的样子:

刚开始接触 Jekyll 的时候对它并不是很了解,Markdown 语法也只是停留在”听说过“这个阶段,看到这个主题后,花了一点时间尝试着按照它的语法写了一篇文章,发现有一种用敲代码的方式去写文章的感觉,文章渲染之后的效果也很好。掌握了这个技能之后,我的写作利器就成了 Sublime text 3 + Markdown 组件 + Github + Jekyll。

就这样开启了我个人博客之旅,刚刚开始几乎没有什么流量,每天几个人访问,到了后来慢慢多了起来,一天几百人访问到几千人访问。后来给博客添加了流量统计,发现很多流量都是通过谷歌过来的,百度搜索流量为0。网上查了一下原因:早些年百度还是可以爬取 Github 上面的内容,后来由于百度的爬虫太猛还是什么原因,反正最后让 Github 官方感到很不爽,于是 Github 就把百度给屏蔽了。

在中国绝大部分都使用百度搜索,因此就白白损失了一大部分流量,网上有很多的解决方案,比如部署两份根据域名解析选择走国内还是国外,或者直接使用 Coding.net 来托管博客,但 Coding.net 托管的博客总是有它自己三秒广告,让人很恶心。其它方案也都很复杂,后来就放弃了。

在使用一年多后的一天也就是2017年的8月,提交新文章时突然收到 Gitub 返回的邮件报编译错误,自己花了很多时间去找原因,甚至去V2ex求助,给主题作者发邮件都无果,后来尝试着给 Github 官方发了几封邮件,才明白可能是 Github Page 升级了相关组件包,导致提交的版本不兼容编译出错,最终折腾了一番终于解决了这个问题,具体解决过程可以看这篇文章:千里追踪博客之殇

经历过这个事情之后,就想万一以后 Github Pages 再升级组件,会不会又面临此问题。加上 GitHub Pages 又不能被百度搜索引擎抓取,于是想换一种思路来解决这样的问题。Jekyll 是静态博客,最终给大家访问的页面都是生成的静态 Html,就计划在本地将 Jekyll 博客编译成 Html 文件,打包后手动上传到服务器的 nginx 下面不就行了。

说干就干,在本机折腾了两天终于搭建好了环境,使用 Jekyll 命令可以在本机新建、预览、编译博客,非常方便。恰好我在国外有一个云主机,就找时间在上面部署了一个 Nginx, 再加上缓存什么的设置,就将打包好的静态页面上传了上去,域名指向重新做了配置,访问了一下妥妥的。过程虽然稍显麻烦,但解决了百度搜索引擎和 Github Page 组件升级的问题。切换之后没过多久,博客的日均访问量到了1.5W左右。

博客托管到国外的云主机之后,写作流程就变成了这样:每次写完博客在本机电脑打包成 Html,再压缩上传到云主机,登录到云主机上面将压缩包解压覆盖,然后完工。虽然比起以前复杂了很多,但是流量多了一些也忍了。直到前一个多月的时候,发生了两件事情,促使我决定要把博客搬回到国内。

有一天在上班,突然群里有个小伙伴说,你的博客怎么访问的时候那么慢,需要5分钟才能打开页面,我说可能是你们那边网络的问题吧,也没太在意,过了两天不断有人跟我说这个事情,我才意识到应该不是局部网络的问题。开浏览器的调试页面跟踪了一下慢的原因,发现使用国内公共 CDN 的 js、css 需要一分钟甚至更长时间,继续跟踪发现只要是国内的资源加载起来都非常的慢。想起这两天的 Vpn 也不稳定,才明白开会期间可能对网络采取了管制,导致部分资源受限,于是修改博客资源都从本地读取,完成之后博客的访问速度回归到了正常。

过了几天北京这边又开一个更大的会,有几天的时间我的博客直接就不能访问了。看来只要北京开会,我的博客肯定就会出现不稳定的情况,原因就是因为我使用了国外的云主机。另外想给网站加一些功能,比如QQ登录什么的,都有一个前提条件必须有备案。恰好腾讯云那几天在做活动,就买了一个云主机,准备将博客从国外搬回到国内,没想到又掉进了另外一个坑。

备案需要25天!

我在5月11号在腾讯云提交的备案请求,因为需要填表、照相花费了大概一周的时间,将所有的资料初审完成之后,腾讯云客服通知我说,网站在备案期间必须关闭,不然有可能备案不通过。没办法那段时间只能将域名解析关闭掉,同时将博客链接到:www.mooooc.com,在备案的期间,天天有网友给我留言、发邮件或者微信、QQ沟通说是不是我的博客挂掉了,每天给大家解释真的是心累。

眼看着一周过去了,两周过去了,备案还是没有下来,我隔两天就登录系统看下情况,终于在6月4号下午收到了备案通过的通知:

其实我到现在也想不通,就那么一点点信息,为什么备案需要20个工作日,效率低的让人崩溃。

在备案的同时,我在腾讯云主机上搭建了 Jekyll 、git 环境,同时写了一个简单的脚步,执行脚步会自动从 Github 拉取增量代码并打包到 Nginx 的目录下,同时利用 linux 的 crontab 做了一个定时任务,每天晚上定时同步一次,这样以后发布文章就简单了,我只需要将代码提交到 Github 上面,剩下的工作就让定时去操作了。

另外如果你想了解如何去写博客,可以参考这篇文章:技术博客那些事儿

历时25天,我的博客(www.ityouknow.com)终于又活了过来的更多相关文章

  1. CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13+博客系统WordPress3.3.2

    说明: 操作系统:CentOS 6.2 32位 系统安装教程:CentOS 6.2安装(超级详细图解教程): http://www.osyunwei.com/archives/1537.html 准备 ...

  2. 【集美大学1411_助教博客】团队作业3——需求改进&系统设计 成绩

    看到同学们越来越认真了,助教非常高兴.大家已经开始了alpha冲刺,请控制好进度.成功的关键就是不断迭代,不断迭代. 关于leangoo 我看到所有组的同学都已经开始使用leangoo,请大家把助教加 ...

  3. 【集美大学1411_助教博客】团队作业6——展示博客(Alpha版本)

    写在前面的话 工作还真是应该抓紧做呢,以下评分是助教在出差前评的,但出差回来就忘记了大部分内容.同学们都在预期时间内完成了自己的alpha项目.由于助教的频繁出差,评分工作落下一大截,在此表示欠意,会 ...

  4. 【集美大学1411_助教博客】个人作业3——个人总结(Alpha阶段) 成绩

    写在前面的话 大家都在总结中说自己学到了很多,那大家都学到了什么呢?如果你不写出来,你真的知道自己学到了什么吗?在自我总结阶段一般写得比较具体的同学,我都给了高分,比如出现了什么具体问题,我们是使用了 ...

  5. hexo干货系列:(四)将hexo博客同时托管到github和coding

    前言 之前我们把hexo托管在github,但是毕竟github是国外的,访问速度上还是有点慢,所以想也部署一套在国内的托管平台,之前查资料听说gitcafe,但是听说gitcafe已经被coding ...

  6. 潭州课堂25班:Ph201805201 django框架 第九课 模型补充 博客小案例 (课堂笔记)

    聚合查询: 分组查询: annotate() 方法 例:查询某学院学生人数,(一对多查询) 以字典的形式输出 annotate(统计 ‘关联学生字段 出现的次,).字典形式(键,值) 例:查询每项课程 ...

  7. 用 Flask 来写个轻博客 (25) — 使用 Flask-Principal 实现角色权限功能

    目录 目录 前文列表 扩展阅读 Flask-Principal 使用 Flask-Principal 来实现角色权限功能 添加 Role Model 在 Manager shell 中手动的添加角色 ...

  8. 软件工程(QLGY2015)博客点评总结

    目录 第一次作业(2015.5.9) 第二次作业(2015.5.21) 第三次作业(2015.6.11) 2015上半年软工助教总结 第一次作业(2015.5.9) 存在主要问题 1)书写这种练习博客 ...

  9. 技术人如何利用 github+Jekyll ,搭建一个独立免费的技术博客

    上次有人留言说,技术博客是程序员的标配,但据我所知绝大部分技术同学到现在仍然没有自己的技术博客.原因有很多,有的是懒的写,有的是怕写不好,还有的是一直想憋个大招,幻想做到完美再发出来,结果一直胎死腹中 ...

随机推荐

  1. OneAPM大讲堂 | 谁更快?JavaScript 框架性能评测

    文章系国内领先的 ITOM 管理平台供应商 OneAPM 编译呈现. 网页性能是一个丰富且又复杂的话题.在本帖中,我们会将讨论的范围局限在前端 JavaScript 框架上,探究相对于另外一种框架而言 ...

  2. 洗礼灵魂,修炼python(12)--python关键词,包

    关键词 1.什么是关键词: 就是系统已经定义好的一些关键词语法,可以直接使用,很明显的就是在IDE里这些关键词会高亮显示的就是 2.有哪些关键词: 前面我们一直在说关键词,内置函数,到底有哪些关键词对 ...

  3. oh-my-zsh安装与使用

    使用oh-my-zsh之前确保安装过zsh 通过脚本安装: sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussel ...

  4. mysql ANSI_QUOTES 这个sql_mode的作用(字段可以使用双引号)

    首先sql_mode用于mysql的行为,sql_mode的多个值之间用','分隔: 如果想使用双引号就这样做: 1. 修改/etc/my.cnf文件 ,  双引号模式是ANSI_QUOTES 或   ...

  5. javascript中获取元素尺寸

    Javascript获取获取屏幕.浏览器窗口 ,浏览器,网页高度.宽度的大小 屏幕可用工作区宽度:window.screen.availHeight,和浏览器无关,屏幕相关屏幕可用工作区高度:wind ...

  6. creo5.0安装教程(图文详解)

    PTC公司最近发布了Creo 5.0正式版 ,作为最具其革命性的新一代产品设计软件,其所提供专业的二维和三维设计设计,能帮助企业和公司进行产品生命周期管理(PLM)和制定服务管理解决方案.Creo5. ...

  7. ApplicationContext中Bean的生命周期

    引言 Bean应用上下文中的生命周期和在BeanFactory中生命周期类似,不同的是,如果Bean实现了org.springframework.context.ApplicationContextA ...

  8. Python程序的编写方式

    直接在Python的交互式环境编写代码 现在,了解了如何启动和退出Python的交互式环境,我们就可以正式开始编写Python代码了. 在写代码之前,请千万不要用“复制”-“粘贴”把代码从页面粘贴到你 ...

  9. android:layout_margin真实含义 及 自己定义复合控件 layout()运行无效的问题解决

    一.关于layout_margin 搞Android时间也不短了.对layout_margin也不陌生了,可近期遇到一个问题让我发现,对它的认识还不够深入全面.大量网络资料上都说,layout_mar ...

  10. [TJOI2010]分金币

    嘟嘟嘟 看数据范围,就能想到折半搜索. 但怎么搜,必须得想清楚了. 假设金币总数为1000,有20个人,首先搜前10个人,把答案记下来.然后如果在后十个人中搜到了4个人,价值为120,那么我们应该在记 ...