本文描述了集群服务器下部署web应用的一种方式及其架构,其讨论的背景基于以下服务架构,如图所示:
线上服务器架构
本地服务器用于编辑和测试代码,编辑测试完成后将源码传到源码服务器上,再从源码服务器上同步到先上服务器。
GitLab是一个开源的源码管理应用,提供类似Github的代码管理服务,使用代GitLab管理线上代码,可以在服务器更新出错时回滚到旧版本,便于管理和维护。GitLab的安装可参照官方文档,源码安装方式比较复杂且容易出错,建议使用官方提供的rpm安装方式安装。GitLab的使用非常简单,和Git完全一样。使用Git命令创建本地库后,可以使用Github提供的客户端提交修改或check源码等。
jenkins是一个开源持续集成服务器,可用于管理软件的构建、发布和外部调用监控,尤其是Java开发的线上应用。详细可查看
saltstack是一个开源的类似puppet的服务器管理软件,可以同步文件、远程执行脚本等。
rsync是类Unix服务器提供的用于同步文件或数据的工具。

本文使用上述四个开源软件用于管理源码和自动部署Web应用。其架构如图所示:
部署架构

基本原理是:
1)本地服务器用于编辑和测试源码;
2)测试完成后通过Git将源码push到Git服务器,通过Git的Service或Hook功能,将push事件通知到jenkins;
3)jenkins收到push事件后,执行构建脚本;对于PHP编写的程序,通常是git更新程序,然后将文件拷贝到发布目录;
4)构建完成后,通过saltstack发送通知到线上服务器,线上服务器通过rsync从构建服务器同步构建后的程序或源码;

此方法的好处在于:
1)可通过Git方便管理服务器程序的发布或回滚;
2)实时构建和部署服务。

Git的安装配置请参考官方文档:https://about.gitlab.com/downloads/
saltstack的安装和配置请参考中文文档:http://docs.saltstack.cn/zh_CN/latest/contents.html
jenkins的安装可参考官方安装说明:http://pkg.jenkins-ci.org/redhat-stable/
rsync可参考文档:http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐