/--- date: 2017-05-02 23:26:46 +0800 categories: 扯淡 ---/

你好不好(from scratch)

注:网站结构已重新调整,下面的有些东西可能不再有效。近期正在重写一篇相关的框架文章。


printf("hello world!");

原先是用一些网站的,比如csdn、开源中国社区等等的博客;后来接触了静态站点生成器, 比如jekyll、octopress等等,又是一番折腾给切了过来。现在呢,以为自己有点经验了, 便想着按照自己的想法,结合着markdown用php从头来搞一个轻量级的(from scratch), 于是便有了现在的这个。虽然有些东西我目前还不知道怎么搞,比如php和html模版引擎的结合使用, 但还是用笨办法给解决了,至少目前用起来.......还好。

先是觉得别人的网站提供的局限太多,再是嫌弃静态站点生成器的方式在写完markdown文章之后还得 手动敲一边命令来生成静态站点然后再提交部署,而我想要的是:写完markdown提交github之后, 所有的工作就应该结束了,访问站点即可看见最新的文章。为了这个,我用github提供的api实现了 第一版本的工作,部署跑了起来,看起来还不错。但是毕竟简陋,加之api层调用的网络开销, 网站的访问速度成了一个很大的问题,于是起了改版的念头。

新的版本抛弃了旧有的项目工程,新的目录结构,新的想法,于是趁着五一假期的第三天下午干了起来, 参考了一些网站的样式,很快于当天晚上便完成了,又跑了起来,速度帅呆了。核心思想是这样的: 获取目录下的文章列表、生成markdown格式的文章列表,然后渲染html输出;获取具体一篇markdown文章 的内容,然后渲染html输出;基于这条思路,于是我又复用出了几个子站点页,其他的就是一些逻辑的 梳理工作了。当然做的过程中也遇到一些问题,比如对url压缩的处理,我了解了网上说的两种方式, 认为md5的不能还原回来,62进制的又涉及到数据库存储,都不适合,所以还在想办法,如果你有什么 好办法可以联系我

下面是网站目录结构,很轻量级,而且支持theme切换。主要代码集中在index.php中,包括简单的 路由控制:就是上面说的生成文章短链url,并在之后的访问中还原出来文章的真实地址。

.
├── 404.markdown
├── LICENSE
├── README.markdown
├── blog/
├── composer.json
├── composer.lock
├── develop.sh
├── favicon.ico
├── fe/
├── ideas/
├── index.php
├── moments/
├── np.sh
├── themes/
└── vendor/

还有一点是自动部署的问题。起初的一个想法是写个定时任务从github上拉取最新的代码,然后 部署到web目录。后来又了解到git的hook功能,能做到针对每一次提交自动触发,这样就可以避免 定时任务浪费资源的问题,但是查了资料发现github是不支持的,这便没法搞了。又是查阅一番资料后, 发现github支持一个叫做Webhooks的东西,于是我便又开心了起来。

最后还有一个工作,就是通过分析nginx的日志把网站的监控给搞起来,传统的ELK组合对这来说是太重了, 用不起,所以我已经有了另一方案:GoAccess!对了,本网站是开源的,如果你也感兴趣,想参与进来 一同改进,欢迎你联系我

(薛定谔的猫似的 完和没完)