文档介绍:一、自动化部署代码实践早期手动部署代码 scp 上传代码。 , git pull 或者 svn update 。 xftp 上传代码。 , rz上传,解压部署代码。缺点: ,占用大量时间。 ,上线速度慢。 ,目录管理混乱。 ,或者难以回退。设计自动部署代码流程设计,确定目标。 1、自动部署环境 1)开发环境开发者本地有自己的环境,运维配置公共开发环境,大家可共用的服务。例如: 开发数据库 MySQL , redis , Memcached 等。 2)测试环境功能测试以及性能测试。 3)预生产环境生产环境集群中的某一个节点,并且连接生产库。(不对外,不做破坏型操作。) 4)灰度环境根据不同的区域进行划分分。(生产环境) 5)生产环境对用户提供服务的环境。预生产环境由来: ,测试环境和生产环境数据库是不一样的。 ;例如:支付接口。(电商业务) 2、自动部署规划?已经有一个可以上线的代码在 git 仓库。?我们现在要做 10 个集群节点的一键部署,秒级回滚。?所有的 web 服务,都应该使用普通用户。(强烈建议) ?所有的 web 服务都不应该监听 80 端口,除了负载均衡。?那我们如何设计一套生产自动化部署系统。 。 。 。(PDCA 方法论) 。实现思路: 1)代码放置位置 Git( 首先)、 Svn 2)获取最新代码?获取最新分支?获取版本号?获取 tag 包 3)差异解决?各个节点之间差异?代码仓库和实际的差异。配置文件是否放在代码仓库中。(配置单独进行存放, )短信接口,支付,等敏感信息不让所有开发知道? 10 个节点。( Job 节点 配置文件不一样) 4)项目名称如何设计项目名称_环境名称_版本_分支_时间_某开发提交测试: -08-11_12:12_xuliangwei 生产: -08-11_11:11_xuliangwei 5)如何更新 php , tomcat 需要重启,重新软链接。 6)如何测试?测试(关键的页面, API ,后台等) ?测试一个预生产环境,通过则继续部署,如果失败,退出部署操作。 7)记录日志?可以部署统计。?成功多少次。?失败多少次。?回滚多少次。 8)多人同时执行脚本防止多人操作导致重复上线失败。通过 lock 锁对文件进行控制。 9)串行,并行机器少的情况串行感觉不出什么。如果机器过多则会很慢。分组部署并行部署,以及分组测试。测试一个预生产环境,通过则继续部署,如果失败,退出部署操作。 10 )部署服务器双机防止部署系统 down 机,部署机代码丢失,误操作。 11 )如何执行。? shell 执行? web 界面点击(自定义或 jenkins) 12 )如何实现正常回退,以及紧急回退(回滚的必要性) 通过软链接的方式来实现代码秒级别回退。 3、自动部署难点在大公司推进自动化部署上线,是有许多的难点,根据个人公司的不同,来选择不同的方法来进行推进。自动化推进难点: (个人能力,团队能力) (责任能否承担,敢于承担责任) 、人员、组织架构。可通过如下方法推进: 。 c. ITIL : PMBOOK 自动部署实践整个集群自动化部署流程设计如下:可根据如下思路,结合公司实际业务来编写 shell 脚本或者 Python 。 (可选) (软连接或者拷贝)。 (tar ,加速传输) ( Scp Rsync Salt )(不需要密码验证) (注释配置文件) webroot 站点目录 9. scp 差异文件(可能有一个节点配置文件不一样) 10. 重启 Web 服务 11. 测试正常回退实践 (ls -l或 find 查出对应的历史版本)。 (删除软链接,重建软链接)。 。自动部署采坑自动化部署 php 环境或者 java 环境的过程中,那么你一定遇到了如下的问题。 。 “上一个”“正常”版本。 。 a. PHP 如果开启 Opcache ,需要重启 PH