多服务器自动部署解析
2018-02-22 本文已影响0人
魂狩
事件触发流程:
git提交->触发git webhook
->post请求到对应php进行处理->php判断是什么项目,是否是开发分支,需要发送到哪个服务器->socket发送项目名到对应服务器->python接收到项目名后,对对应项目进行更新操作。
php的更新非常简单,git pull -r
即可。下面着重介绍下前端要怎么进行部署。
首先,由于执行npm run build
后,会先把之前的代码全部删掉,所以编译和部署需要拆分开,不能直接将dist文件夹软链接到目标文件夹,否则在编译过程中的几分钟,服务将无法访问。先编译得到目标代码,然后删除原有代码,再把更新后的代码更新上去。
原生版:
git更新,然后执行npm run build
,没问题就删除原有代码,移动dist里面的内容到nginx(web服务器)配置的目录。
docker版:
由于一个服务器会有多个前端项目,为每一个前端项目创建一个容器过于浪费。所以采取的解决方案是:
- 创建软链接
/var/www/front
,指向目标编译的源代码。 - 将docker的app文件夹映射到
/var/www/front
文件夹去,同时需要映射/var/www
文件夹本身(因为使用了软链接,app文件夹会直接映射到/var/www
下的源码文件夹)。 - 每个项目下都有html软链接,指向web服务器配置的目录。
- 更新的时候修改
/var/www/front
映射的文件夹即可修改需要更新的项目。
更新的时候,首先删除原有/var/www/front
软链接,创建新的指向目标项目的软链接。执行f_init
容器,更新项目依赖。执行f_build
容器,生成目标代码。删除html下的旧有代码,移动最新代码进去。前端代码更新完成。