小驿搭建(一)——从技术选型说起
# 建站缘由 —— 尽量不费力地折腾
互联网技术已经越发成熟,从早期的人工操作远程部署到现在的容器化持续交付,需要付出的精力虽然和原来差不多,但新技术的便捷性和对新技术的追求足以让我把精力花到这折腾上。
虽然从大三开始就逐渐接触到互联网的各类技术(之前都是修炼内功的课程,且相当耗费精力),但是对博客的搭建和使用只是浅尝辄止。原因也无外乎有三:1)不喜欢现有平台;2)自己原创不成熟;3)精力都去折腾其他技术(深度学习之类)了。
由此,在这里记录建站过程中一些值得注意的地方,包括且不限于所使用的技术、原理的描述以及实际操作的过程。
# 坎坷的折腾之路
由于追求自由编码、摆脱平台束缚,最开始尝试了自己Host WordPress,但感觉非常不喜欢,没有太多编码空间、又使用php、加上各种插件和主题的Pro、Premium,很不舒服,索性不用。后来尝试Django,虽然可控性强了不少,但是前端的模板又成了问题,虽然学到了一些HTML、CSS、JS的技术,但是并不系统,加上前端框架的兴起,又一次不用了。最后一次尝试的是基于flask RESTful API + Vue的方法,收获很多,主要集中在设计方面,但是由于设计+编码+测试+部署的复杂性,暂时搁置了。(有空慢慢填坑...)
在最近不断地踩坑之后,终于找到了非常合适的一套技术组合,即Vuepress + Nginx + Docker + Drone CI,通过把静态文件打包搭建到容器里启动的方式实现快速的迭代和部署,使用效率与动态博客差距不会过大。
# Vuepress
Vuepress是尤大佬开发的用于文档搭建的静态系统,在经过很多大佬的扩展之后,具有了非常不错的开源环境,现在能够用于搭建带有丰富功能的博客。由于不喜欢花哨功能(没错这个博客只是用来记录简单的文章的),在后续的文章中只会介绍基础的博客搭建过程,如vuepress的初始化和配置、博客编写,有额外需求还请自行Google或百度。
# Nginx
Nginx作为监听请求的服务器,以轻便和性能著称,深受信任和喜爱。通过简单配置就可以实现负载均衡、反向代理、静态文件服务等。因此它在搭建过程中就扮演了为我们的生成好的静态文件提供访问服务的角色。
# Docker
Docker是以轻量和便捷为特点的容器服务,能够实现一次搭建、处处运行这样方便的功能。为了减少部署和维护的成本,这里采用Docker和docker-compose脚本进行容器的搭建和编排。
# Drone CI
Drone CI是比较新的持续集成(Continuous Integration)服务,使用Go编写,轻量快速但文档不全,本次搭建踩坑主要集中于此。由于插件(Docker容器)的存在,Drone CI可以用于从提交的代码库中提取代码、构建(Vuepress博客的打包生成)、发布(scp文件到远程服务器)和部署(ssh执行Docker容器构建和编排)。只需要一个配置文件,就能够执行以上步骤。