写了十几年的字,感觉荒废了不少宝贵时间,许多原本应该用来记录的时间都“浪费”在折腾博客软件上了。
为什么这么说呢,翻开网站折腾记录,阿不,网站变更记录,可以看到:
Sa-Blog => Apache + WP => WP SAE => tengine + 自己定制的WP => 支持容器化后(WP+Ghost)=> openresty+ dockerize website => Hexo => Hugo ...
庆幸的是,当时做的WP For SAE后面还是有不少人在使用,周围一些同事不乏有使用过的。
那么该怎么避免这种“瞎折腾”呢?
0x01 选择合适的记录格式
目前相比较xml标记,html富文本,Markdown对于技术人员来说,几乎是最好的通用格式了:
- 源码相对中立,强调语义和可读
- 弱化样式成分,支持代码块,支持特殊情况下的HTML代码块
- 有一大波桌面软件、手机应用、Web应用支持,作为标准协议存在,而非特异化的特例。
- 有一大堆parser,方便自己几分钟搞定自己的定制模块。
为什么不推荐使用富文本呢?
- 除非你能确定你使用的富文本标记和编辑软件可以一直使用下去,由于硬件设备变更、系统版本升级、软件开发者跳票产生的定制化的富文本标记很容易就变的难易维护,成为历史包袱,如果你不介意不同时期的文章排版风格不同,也没什么大不了的。
- 除非你能cover富文本标记潜在的安全隐患,严格控制好输入和输出,避免产生包括并不仅限于:xss、injection...
- 除非你能忍受最后页面结果包含一大堆冗余内容。
0x02 选择合适的发布模式
对于初学者最好的平台,基本上就是WP了,插件丰富,主题丰富,网上资料应有尽有。
但是如果你不是使用SaaS服务,可能你还需要考虑这么几个事情:
- 服务器运维,即使是云服务器,偶有架构升级、机器迁移、机器重新初始化也是不可避免的,你的注意力和精力应该在哪里呢。
- 应用安全性:从服务器安全策略到应用健壮性,你需要关注的点和面其实真不少,乌云虽然不在了,但是相信聪明的你,可以找到类似的平台或者旧的资料,看看有多少可能需要注意的点,这个同样不是你应该关注的。
- 服务器前端配置,SSL证书,Nginx 压缩算法选择,Linux 连接数配置,合理的配置可以让你的网站安全快速,但是,这个也不应该是你关注的。
- 博客软件,WP十分强大,著名的5分钟安装被各种软件广泛借鉴,http://www.sinacloud.com/doc/sae/php/tutorial.html#ru-he-zai-xin-lang-yun-shang-an-zhuang-wordpress 这里有一个几年前的视频,可以参考,但是这些安装简单的软件,实际使用起来却十分复杂,从静态化到标签配置再到媒体管理...
说了一堆事情,回归正题,良好的模式应该是什么呢?
- 编写并保存你决定要发布的内容。
- 执行公开发布操作。
- 刷新页面,你的文章更新了出来。
- 几个月或者几年之后,你不需要因为服务器被塞满了logs(rotate和discard同样不是你该关注的点) ,或者你要进行服务器迁移,修补安全补丁,而敲一堆命令。
那么该怎么做呢,使用 *Markdown+静态文档生成器*,关于具体软件的选择和坑,去年的时候,我有简单记录一些,有兴趣可以看下:使用Hugo重建站点
但是使用这个软件进行站点构建,解决不了发布问题吧?
是的,这里我们要引入一个新的知识点:持续集成。
0x03 持续集成
诶,你不是刚刚说不要引入一大堆乱七八糟的东西么?
是的,所以这里我们只引入一个容器化后的软件包,通过虚拟化技术,可以保障你不论多久都能稳定的使用这个软件(相对随意升级的乱七八糟的软件来说,省心很多了)。
并且因为这个软件是使用在构建发布过程的,发布完毕的内容就是一些静态内容,你也不需要过分关注服务器安全和性能,如果你觉得有问题,重新执行一条命令初始化一次就好了:参考最近一次的网站架构调整: 网站架构简化
如果你在家里已经有现成的GitLab和Runner,那么只需要编写一个简单的yml就可以了。
针对hugo来说,你可以使用官方的配置,也可以自己进一步折腾,比如加一个代码美化的过程、内容压缩的过程、发布成功通知你微信的过程等...
但是如果你的源码是存在外网的三方平台上,把GitLab对外公开感觉风险比较高的话,可以考虑使用Drone,比如用下面这个方式来做:使用私有CI构建GitHub仓库 。
参考文章中的配置,启动你自己的CI服务,不过一句 docker-compose up就好了。
先写到这里,有时间再补充。