一次项目上线发布的感想

上周一使用发布系统为项目进行发版实验的时候提示失败,提示如下:

 update failed, deploy failed, rollback-useless before any actual changes, task 235347 update, Command ‘/home/w/xxxx/rs_action_front/leads_server/control.sh stop‘ returned non-zero exit status -9

提示shell执行stop命令的时候项目返回的exitcode是 137 或者143 反正不是期待的exitcode0,然后脚本里面明明写了 exit 0  ;

后来和shuchang一起去找运维zhangke 和fuzengj 帮着一起排查问题,通过在执行shell脚本时候增加-x 参数发现是执行stop 脚本的时候 里面有一行按照进程名字进行kill的命令会把control.sh脚本自己也给kill掉,导致返回的code是 137 ;

改进的措施是:把grep出来的进程再过滤掉control.sh 脚本自身; 问题终于得到简单解决;

但是发布系统带来了另外一个问题; 目前项目的目录如下:

|-- 1config

| |-- xxx.xml
| `-- run_log.xml

|-- log
|-- bin
| |-- restart.sh
| |-- start.sh
| |-- stop.sh
| `-- test.sh
|-- control.sh
|-- leads_server
|-- leads.zip
|-- nohup.out

发布系统中有个配置是,选择不备份的目录;配置发布系统的时候让运维同学填写了log 目录不备份,本意是这个目录可能太大,二进制删除替换就行这个log目录不用备份就行,但是令人无语的是发布系统会把系统部署的整个目录rm 掉,幸好日志里面没有太多价值很大的东西,最重要的信息已经进入了数据库;

这就是涉及到团队协作和开发时候的沟通误区:我理解的信息和别人理解的信息没有达成共识,大家都在按照自己理解的层面去做事情;

虽然项目部署的时候进行了二进制和配置的备份,但是删除整个目录绝对不是一个好的解决方案; 因此应该给做发布系统的这些同学提提意见,后续不处理的话感觉会是埋个炸弹;

针对上述问题进行的整改方案是:1,对部署脚步增加grep -v 过滤,避免把执行stop 的脚本本kill掉( 深层分析是:kill -9 是暴力的做法,如果早期接入发布系统的时候使用supervisor 守护进程或许就没有这个问题)

2,修改日志的路径,将要部署的二进制配置的目录和日志的目录分开,日志的目录变成了硬编码的目录和项目目录平级,项目名字 xxxx 日志目录 xxxlog 避免发布时候的删除; (脚本中增加创建日志目录的步骤)

随着团队规模的增加,需要不断去达成共识去解决问题,各个业务端应该提供充分的文档和反馈路径来协作解决问题,否则简单的事情也会变成复杂的事情,耗费的是更多的人力投入来解决沟通不畅导致的问题;

原文地址:https://www.cnblogs.com/lavin/p/10748681.html

时间: 2024-10-12 07:19:32

一次项目上线发布的感想的相关文章

java项目上线的流程(将web项目部署到公网)

本博文来源于网络,原文的地址在本篇博文最下方. 如何将java web项目上线/部署到公网 关于如何将Java Web上线,部署到公网,让全世界的人都可以访问的问题.小编将作出系列化,完整的流程介绍. 1.在myeclipse中开发好项目,打包成war格式,不会的同学参考以下 http://zhidao.baidu.com/link?url=Gb0OV9pHiDtJr8nyjPrnSA65g49I4TEAn2N3pwXsxzVsCaX0gJ8RQZHQ2GmDrmdM0ltoBdCPYEtT1i

IOS中生成证书、真机调试、上线发布程序的步骤

前言:学习ios开发快一年了生成证书,真机调试,程序上线发布的总结,现在我来写下相关的步骤和心得: 真机调试现在没有苹果开发账号的情况下也是可以实现,现在我们叫的是有苹果开发者账号的情况来说明的这个问题: 开发账号的区别: 1.99美元的个人账号:只要去苹果官网付款就行了,但是你的信用卡要的支付外汇的才行的,这里推荐一个淘宝链接购买开发者账号:(http://tmqd.me/h.ZZTHi6?cv=AAFjfvYB&sm=4ce1c5). 2.99美元的企业账号:这个注册有点麻烦,需要邓白氏编码

普及一下中小企业项目上线的一般流程

在公司从事运维工作期间,发现了一些更新上线项目发布的问题: 1,程序中写有大量的接口调用使用的是ip地址. 2,程序中的垃圾代码很多,用我的话说程序不干净,很明显是因为交接造成的. 3,生产环境更新的备份文件压缩文件到处乱放 tomcat等的日志有分割但是没有定期清理,高达上G.配置文件  写的一沓混乱. 4,运维人员离职居然没有交接文档,更没有生产环境的维护文档. 更甚的是我这个倒霉蛋居然来了都没人给个口头交接,只是口头仅此而已,没有. 5,更新上线没有提前通知规定,没正式流程 都要过年了居然

基于活动场景签到微会动平台上线发布两款酷炫微信现场扫码签到产品

移动互联网.智能手机.社交媒体的快速普及,使得以微信为主的移动终端成为展商和观众在互联网搜索引擎外,获取会议等市场活动信息的另一重要入口,也成为了近几年会议企业营销转战的必争之地.微信二维码也以几近简单粗暴的方式,挤满了从会议活动海报.会议活动入口各个角落,成为会议活动上无法忽视的常客. 微信现场互动产品现在已经是各类公司举办活动的首选,成为企业品牌粉丝沉淀.运营转.销售转化的必争之地,目前,市场上主流的与微信.微信公众号.微信小程序结合的活动场景现场互动应用项目有:扫码签到(能有效增加粉丝和用

上线发布系统

准备开发两个版本的上线发布系统,基于yii2和django的版本. php mark一下: 1 class CallbackController extends Controller 2 { 3 /** 4 * @Desc: 微信服务器响应入口文件 5 * @User: justfantasy 6 */ 7 public function index() 8 { 9 //记录请求日志 10 //WRITE_ERROR_LOG && d('last request time:' . date

JAVA项目中发布WebService服务——简单实例

1,在Java项目中发布一个WebService服务: 如何发布? --JDK1.6中JAX-WS规范定义了如何发布一个WebService服务: (1)用jdk1.6.0_21以后的版本发布: (2)与Web服务相关的类,都位于Javax.jws.*包中 @WebService--此注解用在类上指定将此类发布成一个WebService: EndPoint--此类为端点服务类,其中publish()方法用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上,用于发布. 2,例子

首款移动社交购物平台“商宝”上线发布

微博支付6月底全站开放 打造最高效社交商务平台 --首款移动社交购物平台"商宝"上线发布     6月5日,微博宣布将于本月月底全站开放微博支付,无论企业商户还是个人账号都能提交申请,审批通过后即可接入微博支付.微博商业平台及产品部总经理程昱表示,希望通过支付及其他商业产品的全面开放,打造最高效的社交商务平台,让每一个微博用户都具备向其粉丝和其他用户提供商业服务的能力:      杭州尽在网络技术有限公司是新浪微博首批正式授权合作伙伴,负责新浪微博产品授权,市场拓展,客户服务,并与20

JAVA版本微信公众账号开源项目版本发布-jeewx1.0(捷微)

JeeWx, 敏捷微信开发,简称"捷微". 捷微是一款免费开源的微信公众账号开发平台. 平台介绍: 一.简介 jeewx是一个开源,高效,敏捷的微信开发平台采用JAVA语言,它是基于jeecg这个企业级快速开发框架实现的. jeewx的目的是最大化的简化微信开发的流程,使用开发者能把最好的精力放到微信具体业务开发,并能以最快的时间完成.把一些常规而频繁的工作交由jeewx来处理即可,平台兼备的代码生成器,在线开发,可以快速的完成企业应用.为此jeewx提供了详细的二次开发文档,关键代码

c#网站项目的发布:项目方式、webSite网站模式(未能获得项目引用XXX的依赖项的解决)

c#网站项目的发布:项目方式.webSite网站模式(未能获得项目引用XXX的依赖项的解决). webSite模式是codefile="default.aspx.cs",项目方式是codebehind="default.aspx.cs" inherites="",编译出来bin是项目名.dll. 我比较喜欢项目方式,看着整洁.编译后,把bin和文件拷出来,删一下*.cs代码文件不拷给客户,删一下bin里的pdb文件,就行了. webSite发布比