今天终于把博客撸上线了。

作为本博的第一篇流水账,就来记录一下博客的诞生历程吧!

起步

我最先跟着廖雪峰的Python3教程学习,但是到后面用aiohttp来建博客的时候,难度感觉是陡增啊!跟了三天就跟不动了。

又想起之前存在收藏夹里的用Django搭建博客的教程。于是跟着这篇教程码了两天的代码,才搞清楚博客网站是个怎么样的一个东东~~

粗略来说,动态网站的运行流程主要有三个大的模块:

  1. 根据域名请求,调用对应的app模块,执行指令(通常是将数据填入模版),并将结果回传给客户端。Django框架是利用正则表达式解析域名,而我是用的Bottle框架是用装饰符。
  2. 在上一部执行指令的时候,app模块通常需要在数据库系统中检索数据。Django有自己的ORM组件,而Bottle要用第三方组件,或者根据需要自己写.
  3. Django用自己的语言来合成模版,而Bottle则可以使用jinja2或者其它第三方组件来合成。

Django框架功能太强大,做快速开发是很合适的。但是做完之后感觉还是意犹未尽,因为用别人的代码还是不舒服。而且自己动手写一个网站,如果遇到什么问题,还可以借机会提高自己。因此决定用其他精简的框架自己动手写一个。

动手

查了一些资料之后还是觉得Bottle框架不错,速度快还体积小,以后拿来研究源代码也是比较省心的。Flask也很不错,不过查到一些资料说对Python3.x的支持有些问题,便打起了退堂鼓。

对于数据库,做博客的最佳选择应该是轻量级的sqlite3。我之所以选择PostgreSQL还是考虑给以后深入学习数据库打个基础。

一开始先按照Django的博客样板来组织代码结构,后来发现没必要。Bottle框架用装饰符解析网址的设计把Django框架里的两个py文件合成一个app.py。很好用,而且,边查手册边写正则表达式也确实比较蛋疼。

最终,整个网站的核心app.py只写了不到100行。Python真是个伟大的发明!

本来网站的管理是应该有一个admin账户加密码来登陆网页进行操作的。一来是懒,二来为了安全,我写了一个manage.py小程序用命令行来做后台管理。这样就必须要登陆SSH了。

部署

网站的部署是最费心的。

对于服务器,一开始打算用 uWSGI+Nginx 来部署,但是配置文件怎么都写不好。查查Bottle官网,支持十多个http服务器,就是没有uWSGI。后来选了大名鼎鼎的Tornado,没选Fapws3和Gevent还是因为Python3的支持。

Nginx也是配置不好,换了Lighttpd发现静态文件配置不好。按Bottle官网的指南,使用mod_proxy代理模块对接Tornado。但是用alias.url映射静态文件的时候怎么都搞不定。最后还用Bottle自带的static_file模块来提交静态文件。但是这样一来,用Nginx或者Lighttpd就没有意义了,而且多加了一层代理。本来系统的性能差,开不了多线程,不需要均衡负载。这样还不如直接用Tornado呢!

一开始想赶个时髦,试一试Docker,但是PostgreSQL总提示连接不存在。一般主机只要重启就好了,Docker上调用Dockerfile却提示不能重启,又是个死胡同。 最后还是走传统路线,搞了台半瓦工VPS。

最后

流水账写到这真是不容易。

上面挖了这么多坑,以后还是会填的。眼下,主要还是学习操作系统、数据库原理等等基础知识。

心得总结都会贴在这里。

本博的代码开源在Github。欢迎fork改进。