一、svn目录组织结构说明
--branch 分支,为测试时使用,几天以上的项目必须开分支,测试需要本分支通过,主线合并到分支通过,才能合并到主线进行测试
--tags 版本记录使用
--trunk 主线,与正式线相对应,当天不上线文件不允许提交
二、中型企业上线解决方案
规范运维人员操作步聚,制这统一操作脚本,备份文件名称,备份文件路径。使操作人性化,统一化.
三、大型公司解决上线方案
1、特别是JAVA代码环境,上线时,有数台机器同时需要更新:
1).本地开发人员取svn代码。当天上线提交到trunk,否则,长期项目单开分支开发,然后在合并主线(trunk)
2).办公内网开发测试时,由开发人员或配置人员通过部署平台jenkins实现统一部署,(即在部署平台上控制开发机器从svn取代码,编译,打包,发布到开发机包如id_dep.war).
3).开发人员通知测试人员或一起测试,没有问题后,打上tag标记。
4).配置管管理员,根据上步的tag标记,checkout出代码,并配置好IDC测试环境的所有配置,执行编译,打包(mvn,ant)(php不需要),然后发布到IDC内统一分发服务器。
5).配置管理员或SA上线人员,把分发的内容推送到相关测试服务器(报名如id_test.war),然后通知开发及测试人员进行测试。如果有问题向上回退。
6).如果没有问题,继续打好tag,此时,配置上步tag标记,checkout出代码,并配置好IDC环境所有的配置,执行编译,打包(mvn,ant)(php不需要),然后发布到IDC内统一分发服务器。
7).配置管理员或SA上线人员,把分发的内容推送到相关正式服务器(报名idc_product.war),然后通知开发及测试人员进行测试。如果没有问题直接发布回滚指令。
IDC正式上线的过程对于JAVA程序,可以是AB组分组上线的思路,即平滑下线一半的服务器,然后发布更新代码测试,无问题后,挂上服务器,同时在平滑下线另一半的服务器,然后发布更新代码测试(或者直接发布后就挂上线)
对于PHP上线方法:发布时可以用发布到正式线临时目录 ,然后mv或更改link的方式发布到正式上线目录 ,不需要重启
对于java上线方法:需要分组平滑下上线(如从负载均衡上摘掉部分服务器),发布代码后,重启服务器测试
2、上线解决方案注意事项
1).办公室测试环境--IDC测试环境---正式生产环境,所有软件均应版本统一(如:操作系统,web服务器,jdk,php,tomcat,resin等版本)
2).开发团队小组测试环境测试(该测试环境属于开发小组),有问题返回给某开发人员重新开发。
3).有专门的测试工程师,程序有问题直接返回给开发人员(此时返回的一般为程序的BUG,称为BUG库),无问题进行IDCi测试
4).IDC测试由测试人员和运维人员参与,叫IDCtest,进行程序的压力测试,有问题直接返回给开发人员,无问题进行线上环境上线
5).数台服务器代码分发上线方案举例(JAVA程序)
A:假设同业务服务器有6台,将服务器分为A,B两组,A组三台,B组三台,先对A组进行从负载均衡器上平滑下线,B组正常提供服务,避免服务器因上线影响业务。
B:下线过程是通过脚本将A组服务器从RS池(LVS,NGINX,HAPROXY,F5等均有平滑方案)中踢出,避免负裁均衡器将请求发送给A组服务器(此时的时间应该为网站流量少时,一般为晚上)
C:将代码分发到A组服务器的站点目录下,对A组服务器上线并重启服务,并由专业的测试人员进行访问测试,测试成功后,挂上A组的服务器,同时下线B组服务器,B组代码上线操作测试等和A组相同
6).特别说明:如果PHP程序,则上线可以简单化,直接将上线代码(最好全量)发布到所有上线服务器的特定目录后,分发完成后,一次性mv或ln到站点目录,当然测试是少不了的。
7).大多数门户的前端页面都已经静态或者cache了,因上经动态的部分访问平时就不会特别多
9、SVN上包含代码和配置
(1)、SVN上存放程序代码(不含资源,大公司基本资源和程序都是分离的)
(2)、存放所有服务的配置文件(LAMP环境,如:apache的httpd.conf配置文件)
(3)、开发小组测试环境使用的配置文件
(4)、办公测试环使用配置文件
(5)、IDC测试使用的配置文件
(6)、线上应用使用的配置文件
什么时配置管理员?
就是在开发和运维中间起一个连接纽带的一个职位,这个职位一般在大公司会设置,负责SVN的管理,上线管理,申请,协调等工作
四、平滑代码上线是什么
就是在网站代码更新时,不影响正在浏览用户的正常浏览网页或其正使用的其他相关应用
五、一些软件平滑重启的方式
1)apache的平滑重启
./bin/apachectl gracefull
2)nginx的平滑重启(php-fpm的reload)
./sbin/nginx-s reload
3)nfs网络服务
/etc/init.d/nfs reload
4)lvs/haproxy的服务下载RS的操作
5)F5和Netscaler等也有相应的下线的RS方式