个人博客搭建记录 && 2018 谨贺新年

序言

やれやれ,本博客的第一篇文章竟然 拖延 选在这样一个时候发出,当然首先要祝福看到这篇文章的大家新春快乐,阖家幸福!😄 在辞旧迎新的鞭炮声中,Plus Xu 的个人博客终于是可喜可贺地搭建完成了 (゜-゜)つロ 干杯~ 希望在我的努力下可以让这个平凡得有些无聊的世界变得更加热闹吧。

对于博客和个人站点,其实从很久以前就开始尝试过各种各样的技术和服务,包括 Strikingly、Weebly 和 Wix 这样的建站工具,虽然在后台管理上操作简便,但可定制程度很低,对 API 和插件的支持也不够友好,所以最终放弃了这种思路。

最近一段时间因为忙于毕业设计的选题和技术实现原理,搭建个人博客的想法又一次出现。说到毕业设计,相比于搭个博客这样小菜一碟的事情,在选择毕设的技术架构和配置环境的过程中简直是遇到了一个又一个的大坑 😂,哎以后可以开个专栏再详细讲讲我在毕设时踩过哪些坑……

话说回来,搭建博客之所以受到了毕设的启发,是因为它们都与我一直以来在思考的一个问题有关,那就是在这样一个信息过载、知识碎片化的时代,如何让我们每个人创造的、传播的、使用的信息资源实现更简单高效的整理与共享。这看似是一个不知所云的宏大命题,但却与我们的日常生活息息相关。就是在这个问题的驱使下,才有了我的毕设选题方向,以及现在看到的博客,两者大概可以算作是对这个让人摸不着头脑的问题的一点思考和回应吧。

博客搭建技术架构对比

作为一个偏正经向的技术小站,自然是要对本博客采用的技术架构做一番分析。在对比了多种搭建博客的解决方案后,我最终选择了其中的 Hexo + GitHub Pages,目前来看实现效果还是很不错的。

静态站点生成器 + GitHub Pages

静态站点生成器(static site generator)似乎在近几年越来越受到人们的关注,虽然它并不是什么新技术。不同于目前流行的众多动态网站,通过静态站点生成器可以直接生成 HTML、CSS 和 JavaScript,以及各类静态资源文件,这也就意味着服务器不需要执行任何 PHP 代码,也无需部署 MySQL 等数据库。只需要将本地生成的静态文件打包上传到一个网站托管服务器上,就可以在一定程度上实现动态网站的功能和交互。

相比于动态网站,静态站点生成器的优势是显而易见的:

  • 高性能:无论怎样优化动态网站,都不如精心开发一个静态站点那样保证性能。
  • 安全:在服务器上不需要执行任何脚本,也避免了潜在的漏洞威胁。
  • 低成本:无需租用虚拟主机,可以将静态站点部署在一些免费的托管服务上(如 GitHub Pages)。

不过,静态站点生成器也是有一些缺点的,比如在搭建博客这件事上,相比于 WordPress 提供的后台管理功能,使用静态站点生成器需要更多地接触命令行而非 GUI,学习门槛较高。另外,个人认为现有的静态博客框架的可定制性还是要低于 WordPress,后者有丰富的插件支持。

总之,静态站点生成器这项技术虽然还不能做到完全取代动态网站的程度,但它代表了一种可能的未来发展趋势。而从 GitHub Star 来看,目前较为流行的静态站点生成器为 Jekyll、Hexo 和 Hugo,三者全部是免费开源的。

Jekyll

Jekyll 是目前最流行的静态站点生成器,基于 Ruby 运行环境。顺便说一句 GitHub Pages 本身就使用了 Jekyll 的技术。本博客之所以没有采用 Jekyll,主要是觉得没有什么好看的主题(果然是个看脸的时代啊 ==),而且官方文档对新手不够友好,另外还是基于不太熟悉的 Ruby,对比之下还是没有选择 Jekyll。

Hexo

Hexo 是一个博客框架,同时也是一个静态站点生成器,基于 Node.js 运行环境。选择 Hexo 的直接原因就是它有一套非常漂亮的主题 NexT,同样在 GitHub 开源。虽然 Hexo 的官网貌似已经近两年没有更新了(不禁担忧它疑似将成为有生之年系列),但 NexT 还有很多热心的贡献者在积极维护(然而最初的一位主要贡献者最近似乎失联了)。NexT 不仅样式精美,还极大地拓展了 Hexo 框架的功能,可定制程度也很高,甚至可以说它是一套独立的博客框架了,所以我最后选择 Hexo + NexT 来配置自己的站点。

Hugo

Hugo 是一个诞生时间不长的静态站点生成器,但是发展势头很快,它基于 Go 语言,似乎在页面的构建速度上更有优势。目前一段时间更新频率很高,几乎每周都有新功能加入。但相比于前两者,在主题和插件的支持上略显不足。个人还是非常看好 Hugo 的,如果能有像 NexT 一样功能完善且样式精美的主题,不排除未来将博客迁移到 Hugo 的可能。

在确定使用 Hexo 之后,接下来就是一步步按照官方文档的说明搭好环境,创建新项目,然后部署到托管服务器上。在这里我选择了比较可靠的 GitHub Pages,每个 GitHub 用户可以免费创建一个个人主页,以及任意数量的项目主页,当然它们都只能是静态页面。虽然每个站点的托管容量有限制,但作为个人博客而言已经足够了,而且省下了租用虚拟主机的费用。另外,虽然这样一来不用花钱就可以搭个博客,但毕竟是在 github.io 的域名下,强迫症患者可能会感到不适。要解决此问题也很简单,可以在域名服务商那里注册一个自己的域名,然后做域名转发,直接跳转到 username.github.io 就好了。

唯一的担心是哪天 GFW 把 GitHub 给墙了,那岂不是要 gg……

WordPress + 虚拟主机

对这种技术架构了解得并不是很多。WordPress 是一个著名的博客框架,但不同于静态站点生成器,它必须部署在服务器上,通过执行脚本和操作数据库来动态地呈现页面。因此,要想使用 WordPress,GitHub Pages 这类服务肯定是不行了,国内一般会选择阿里云、腾讯云提供的虚拟主机,顺便注册个域名,通过这种方式也能实现博客的搭建。刚才也提到了,WordPress 的后台管理功能对新手而言确实很强大,不懂命令行也能流畅地操作;而且支持众多的插件和主题,可定制程度也很高。但是个人认为整个建站过程好像也并不是很简单的样子,而且托管在国内的服务器上的站点必须备案,想想天朝 ZF 随时有可能审查或者封禁个人站点,觉得还是算了吧(P.S. 国内用户的 iCloud 数据二月底就要移交到境内运营商的服务器上了)。如果用 WordPress 的话,可以考虑国外服务商 GoDaddy 提供的域名注册和虚拟主机服务。

ToDo List

作为一个一心想当 designer 的野生 coder,今后在这个小小的地方分享的内容当然也不仅限于编程开发等技术(毕竟没什么拿得出手的技术 ==),大概平面设计、UI/UX 设计、Web 开发、机器学习数据抓取数据分析、艺术 & 文化、ACG 以及日本語等等都会或多或少有所涉及吧,毕竟“吾生也有涯,而知也无涯”,在有限的时间里要努力的还有很多。

对了,Plus Xu 的博客在未来的一段时间内可能会进行一些施工,期间应该不会影响页面的正常访问:

  • 整合前端评论系统
  • “关于”页面完善
  • 页面样式调整
  • 引入一些 JS 框架
  • 暂时还没想到的东西

似乎就这样给自己立了 flag,还有毕设也要继续加油啊。

2018 谨贺新年,最后再次祝大家在新的一年里也要元气满满呐!