这一篇博文的目的是介绍一下此网站开发所用到的后端开发技术。
首先来定义一下前端和后端。上一篇博文中介绍的前端是指客户端,而后端就是服务端。
相对应在web开发上,客户端实际上就是浏览器端,html、css、js的解析、处理、呈现都是在浏览器端进行工作运行。
下面接入正题:后端 —— 服务端技术介绍。
此项目服务端所用技术如下
python3
首先,开发语言的选择,python是我最熟悉的开发语言,所以直接选择python。
Python 3.0于2008年发布,迄今已经11年,基本上大部分第三方库都已经完整支持。现在无论是学习还是实际开发,都建议直接用python3 。
python web framework
python web开发的三大框架:
flask, django, tornado 都是非常优秀的web框架, 作为小型个人网站,三者基本都能胜任。
django 的优点, 相对另外两个框架而言, 大而全面, 属于比较重型的web框架。它里面包含的独立的admin系统,django-orm。最适合创业公司使用,创业公司需要的大部分基础功能,django都有实现,无需二次造轮子。
不选django的理由:
基本上django的优势都没有使用到,所以就没必要使用django进行开发。
flask & tornado
这两个都属于轻量级的web框架,差别就是tornado是一个异步的框架。对于我这种小型个人项目,两者开发起来差别都不大。在短期内,此项目也不会有性能上的需求,所以选择的是自己最擅长的flask。
使用这两个框架,你的template、model、admin模块都需要自己来实现。
MongoDB
这一个个人网站,需要存储的数据非常简单,主要就分为三类:blog 数据、user 数据、session数据。没有涉及到复杂的表与表之间的关联,也没有任何事物事件。后续可能会添加日志、登陆事件等数据。所以直接使用MongoDB是可以完全胜任的,而且开发起来也会比mysql等关系型数据库要快的多。
注意事项: 安装MongoDB时关闭外网访问,设置用户名、密码。太多的用户直接使用MongoDB的默认配置导致数据泄漏。
Redis
Redis是非常优秀的缓存数据库,我个人觉得,只要是涉及到数据相关的web服务,都可以用到redis。此项目用户登陆后的session数据,就是直接存储在redis里面,失效期为1天,redis会在1天后自动删除此数据。后续如果性能上有需要,也会将部分数据通过redis进行存储。
nginx
使用nginx作为反向代理,这里没什么太多介绍的,现在的web项目,一般都是使用nginx。
Supervisor
使用supervisor作为守护进程,supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台任务,并监控进程状态,异常退出时能自动重启。