本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 [署名 4.0 国际 (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/deed.zh) 本文作者: 苏洋 创建时间: 2018年06月04日 统计字数: 2180字 阅读时间: 5分钟阅读 本文链接: https://soulteary.com/2018/06/04/effective-blogging.html ----- # 为能愉快写博客而不折腾博客 > 写了十几年的字,感觉荒废了不少宝贵时间,许多原本应该用来记录的时间都“浪费”在折腾博客软件上了。 为什么这么说呢,翻开网站折腾记录,阿不,[网站变更记录](https://soulteary.com/about-site/),可以看到: > 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 这里有一个几年前的视频,可以参考,但是这些安装简单的软件,实际使用起来却十分复杂,从静态化到标签配置再到媒体管理... 说了一堆事情,回归正题,良好的模式应该是什么呢? 1. 编写并保存你决定要发布的内容。 2. 执行公开发布操作。 3. 刷新页面,你的文章更新了出来。 4. 几个月或者几年之后,你不需要因为服务器被塞满了logs(rotate和discard同样不是你该关注的点) ,或者你要进行服务器迁移,修补安全补丁,而敲一堆命令。 那么该怎么做呢,使用 **Markdown+静态文档生成器**,关于具体软件的选择和坑,去年的时候,我有简单记录一些,有兴趣可以看下:[使用Hugo重建站点](https://soulteary.com/2017/06/28/welcome-to-hugo.html) 但是使用这个软件进行站点构建,解决不了发布问题吧? 是的,这里我们要引入一个新的知识点:**持续集成**。 ## 0x03 持续集成 诶,你不是刚刚说不要引入一大堆乱七八糟的东西么? 是的,所以这里我们只引入一个容器化后的软件包,通过虚拟化技术,可以保障你不论多久都能稳定的使用这个软件(相对随意升级的乱七八糟的软件来说,省心很多了)。 并且因为这个软件是使用在构建发布过程的,发布完毕的内容就是一些静态内容,你也不需要过分关注服务器安全和性能,如果你觉得有问题,重新执行一条命令初始化一次就好了:参考最近一次的网站架构调整: [网站架构简化](https://soulteary.com/2018/05/07/refactor-and-recent.html) 如果你在家里已经有现成的GitLab和Runner,那么只需要编写一个简单的yml就可以了。GitLab官方有许多例子:[https://gitlab.com/pages/](https://gitlab.com/pages/) 针对hugo来说,你可以使用官方的配置,也可以自己进一步折腾,比如加一个代码美化的过程、内容压缩的过程、发布成功通知你微信的过程等... 但是如果你的源码是存在外网的三方平台上,把GitLab对外公开感觉风险比较高的话,可以考虑使用 Drone,比如用下面这个方式来做:[使用私有CI构建GitHub仓库](https://soulteary.com/2018/05/23/professional-thinking.html)。 参考文章中的配置,启动你自己的CI服务,不过一句 `docker-compose up` 就好了。 先写到这里,有时间再补充。 --EOF