寻找朋友

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

image.png

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

发布流程.svg

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

多项目.svg

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

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

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

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

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

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

wbs.png

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

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

dockerfile.svg

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

docker-compose -f server.yml up -d

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

源代码

独乐乐不如众乐乐,我把它们开源啦,如果有人用我写的系统,我会很开心:

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

部署步骤

我会尽可能的简化部署流程,向傻瓜式部署看齐。

第一步:下载工作目录

wget https://cdn.fivecakes.com/workspace.tar.gz
tar -xzf workspace.tar.gz /workspace

第二步:下载源代码

git clone https://github.com/fivecakes/fivecakes-wbs.git  /workspace/www/wbs
git clone https://github.com/fivecakes/fivecakes-skynet.git /workspace/www/skynet
git clone https://github.com/fivecakes/fivecakes-common.git /workspace/www/common

cp -r /workspace/www/wbs /workspace/www/wbs-demo
cp -r /workspace/www/skynet /workspace/www/skynet-demo
cp -r /workspace/www/common /workspace/www/common-demo

第三步:修改Nginx配置文件
skynet和wbs需要手动修改Nginx配置,以后的项目skynet会自动配置Nginx。

修改工作目录/workspace/etc/nginx/user-config中的nginx配置文件,将其中的域名替换为你的域名。

第三步:启动容器
Docker官方的下载速度实在令人头大,我们使用阿里云的镜像仓库,需要先去容器镜像服务设置个密码,然后登录镜像仓库

docker login --username=你的阿里云账号 registry.cn-beijing.aliyuncs.com

创建一个fivecakes.yml文件

version: "2"

# port的取值范围是 0 - 65535(即2的16次方),1024以下是系统保留的,应用程序使用1024-65535
services:
    nginx:
        image: registry.cn-beijing.aliyuncs.com/fivecakes/nginx
        ports:
            - "80:80"       #http
            - "443:443"     #https
        volumes:
            - /workspace:/workspace
    php:
        image: registry.cn-beijing.aliyuncs.com/fivecakes/php
        volumes:
            - /workspace:/workspace
    mongodb:
        image: registry.cn-beijing.aliyuncs.com/fivecakes/mongodb
        volumes:
            - /workspace/:/workspace
    mongodb_demo:
        image: registry.cn-beijing.aliyuncs.com/fivecakes/mongodb_demo
        volumes:
            - /workspace/:/workspace
    redis:
        image: registry.cn-beijing.aliyuncs.com/fivecakes/redis
        volumes:
            - /workspace/:/workspace

启动容器

docker-compose -f fivecakes.yml up

第四步:修改你的配置
image.png

寻找朋友

写这套系统花了很多时间和精力,希望有小伙伴和我一起使用和完善它。

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

发表评论