WEB自动部署与MongoDB数据可视化系统

工作之余会自己开发一下小项目,比如博客,给父母的小店做了个小程序,等等。但不想每次都进行枯燥的web项目配置工作,于是我开发了一套自动部署web的系统,如图(点击可放大):

image

原理非常简单,当创建一个项目的时候,会生成一个git代码仓库,提交代码后会自动部署到测试环境,测试通过后再发布到正式环境:

image

自己的小项目当然不可能每个都有主域名,更不可能每个项目都有自己的服务器。创建项目后会自动分配子域名,所有的项目都在www目录下,nginx会根据域名解析到对应的目录:

image

所有的项目都会载入common目录下的文件,vendor也在这个目录下。一开始,我把vendor放到项目目录下,这样每个项目可以用不同的框架,不过当项目多起来的时候,这简直是噩梦。相信我,如果你要管理多个项目,最好让所有项目使用同一框架的同一版本。

访问数据库必须继承common目录下的数据库基础类,它会判断是正式环境还是测试环境,分别链接不同的数据库:
image

当然common目录下的数据库基础类还提供了一些其它的功能,比如说对每条记录都自动增加了三个字段:

'__CREATE_TIME__',   //记录创建时间
'__MODIFY_TIME__',   //记录最后修改时间
'__REMOVED__'        //是否删除

其中__REMOVED__字段,对所有数据使用标记删除,万一误删数据还可以找回。

记得有一段段时间比较喜欢吃一道菜叫清水丸子(water balls),于是我写的一套MongoDB数据库可视化工具取名为WBS:

image

还可以查看慢查询记录,以便优化索引:
image

这两套系统和运维的耦合度很高,所以介绍一下我的docker配置:

image

server.yml控制和web相关的容器,与spider.yml、jupyter.yml等与web不相关的容器分离。部署时只需要执行

docker-compose -f server.yml up -d

就可以启动所有与web相关的容器。

权限问题

项目文件会被多个用户读写,容易造成权限问题,最好的办法是画个图,规划一下

image

让www-data、git、apple同属一个用户组,创建文件时默认同组用户有读写权限。这样就不会有权限问题了。

源代码

源代码已经上传到github,有需要的同学可以自行取用:

skynet : https://github.com/fivecakes/fivecakes-skynet

wbs : https://github.com/fivecakes/fivecakes-wbs

common : https://github.com/fivecakes/fivecakes-common

Dockerfile : https://github.com/fivecakes/fivecakes-dockerfile

这套系统涉及多种后段及运维技术,部署起来需要有一定的基础,原本我写了一套部署文档,但是因为这套系统我时常修改,懒的同步更新部署文档,后来干脆删掉了。如果真心想使用这套系统,但是在部署方面遇到问题的,可以留言或邮件。

posted @ 2020-11-21 16:25:52
评论加载中...

发表评论