時間回到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 上面,剩下的工作就讓定時去操作了。
另外如果你想了解如何去寫博客,可以參考這篇文章:技術博客那些事兒