系统开发,测试结束,最后都期待着上线。上线完之后,就可以暂时告一段落,可以放松放松,做做自己爱做的事情。。。。但是,这次上线,是我有史以来最糟心的一次,今天写此文章,就是给自己提个醒,以后上线必须注意的事项。我很感谢让我跌倒在今天,而不是在我不可一世的将来,我必须重新梳理,坦然面对并牢牢记住。
时间 |
内容 |
17:30 |
打包文件给运维人员,传到服务器上面去。。。简单。信心十足。。。。。没问题。很简单,很快上线结束,回酒店睡觉。。。。。。。。。![]() |
18:00 |
解压打包文件,修改.bash_profile 环境变量等内容。这个时候还是相当有信心的。。。没问题。很简单,很快上线结束,回酒店睡觉。。。。。。。。。 |
18:20 | 将项目部署到tomcat7下,启动服务,报了一堆错误,端口被占了。没事,小问题,改端口呗,之前都是用tomcat5,6。tomcat7也是第一次用,他们默认规定是用7,7就7啦,影响不大。改完端口,继续启动,还是报错。那就查看错误。。。。一堆莫名其妙的问题,服务启动了,但是访问服务,访问不到。认真看了下,原来这个7是他们的阉割版的猫,我就怀疑这个猫是不是没阉割干净。一直在我大脑徘徊。。。。吃饭啦。。。。。。![]() |
19:00 | 吃完了,不能光我说他的猫有问题啊,得拿出证据。我把webapp下面,我的工程干掉。接着启动猫,启动正常,继续访问服务,一样是有问题,一样不行。一段时间的探讨,继续给出理由吧,在webapp下面新建一个工程,新建WEB-INF ,拷贝web.xml,,新建inde.html.就是模拟一个最简单的工程。。。继续启动,访问,还是不行。哈哈哈。。。。。。。换只猫来吧。。。。![]() |
20:00 | 换来一只猫,改完端口,先简单跑起来,访问服务,ok。启动正常。接着把我们的工程放进去,重启。。访问。ok,成功啦。。。。心里那个美啊 |
20:20 | 接着就做数据的初始化操作。。。你大爷的。。。。。出错了。。。看数据库,数据初始化成功了,但是保存文件的时候出错了。。。这个时候闪过的一个想法就是,是不是sql脚本有问题啊。。不可能啊,在测试环境上面,跑下,没问题啊。查看数据库服务器版本和测试环境会不会一样,也是一样的。。。干啊。。。连接着试了好几次,还是不行,今天人品tmd不行啊。。。。。冷静下奥,,,去喝杯水。嘴巴干啊。![]() |
21:00 | 在出现问题的时候,最重要的就是冷静。。喝水啊!!!其实在喝水的过程中,虽然我一直看着窗外黑压压的一片,但是心里一直在缕了。。。不着急,不要催,肯定哪里搞错了。10分钟之后,坐下来,修改了jdbc.propertise配置文件,将这个文件配置错误,在测试环境做初始化,最后也是出现一样的问题,数据初始化好了,但是保存配置文件出错了。原因找到了。。。吼吼。。。解释下原因:jdbc.propertise一开始里面的配置文件,是测试环境的,我一开始以为没关系,以为他们这边初始化数据是用A用户进行初始化的,初始化成功之后,对B用户进行授权,给B用户权限,最后使用的是B这个用户,所以我开始想,反正还没用到数据库,没关系,配置文件里面随便配置下,等数据初始化好了,B用户授权好了,再修改。成不想,在保存配置文件的时候,已经调到了数据库,连接失败,保存文件失败。大爷的。。这个异常为什么没有抛呢。。。日志里面都没看到。。![]() |
22:00 | 数据初始化成功了,看到了胜利的曙光了,后台的部署太简单了。10点了,睡意有点来了。。。。坚持下啊。解压后台服务系统(c写的),修改,数据库配置文件,接着就是编译啦。。这个没事啦,make下而已。。。。oh。。no,编译失败。。。。看看啥子问题吧。没bind权限,那就赋权呗。继续make,终于报出来了这个碉堡的问题:schema不对。。。。。。![]() |
这里抱怨下啊:什么鸟毛DB2啊,没有数据还不能编译,有数据了,还得有一大堆的权限。最恶心的就是接下来的schema,你大爷的schema。。。。恼火啊。。。。 |
22:30 | 之前说了,数据库是用A用户初始化的,接着授权给B用户。所以数据库表的schema是A,而不是B。 这个就是后台在编译的时候遇到的问题。肿么办啊。。。db2 对我来说,完全不知道怎么下手啊。。。找他们的DBA吧。 |
23:00 | 改初始化数据,修改下sql脚本,把create table的脚本加上schema B。 先做初始化,不对。。这样子不够。COMMENT 也得加上schema ,index也得加上。就这样子来回倒腾,初始化完数据,12点了。。。困啊。平常这个时候,我媳妇早骂我,叫我早点睡觉了。 |
00:10 | 喝点水吧。。。真心累啊。这些运维的哥们真心好强啊。。晚上都不睡都可以。。。 |
00:20 | 继续吧哥们。。。继续make。。。。![]() |
01:00 | 那就在换个用户做初始化吧。。。不用A用户做初始化(A是管理员用户)。脚本发给他们DBA,他们自己做初始化,我们不管了。也不用我们程序带的那个初始化方式了。。。哎啊哎啊。。。。等着,等着,就不知不觉到了2点了。。。他们领导走了,说:xx,今天又是上不了,就不要上了,质保测的是什么问题啊,上线都不能上。系统没上线,和质保什么关系啊。。。忍着。 |
02:00 | 数据库初始化好了。。就这么着吧。。。赶紧make吧。。心想,一下应该ok了。。。。make。。。![]() |
02:30 | 问题找到了,db2客户端的版本不一样。编译依赖的库不一样。都这个点了。 不要闹脾气。上线要紧。重新装个版本,no!!!运维的不装了。那就改sqc吧。让我同事一个个得改,改完继续make,有错继续改。。。就这到了3点多了吧 。接着我基本上没有时间概念了,有点模糊了。。。 |
03:30 | 终于make通过了。。。。。可是我颓了。那就启动服务吧。。。 |
04:00 | 系统,验证过程。。。。。基本没问题了,心放下来了。。。。忽然,叫了我一声,我心一抖,一颤。又有问题了。插入对方库的一个sql出错了。异常。那就看日志吧。。。。报的code,我也不懂,就上网找。sql打出来。。。。依然我解决不了。sql没问题。我再一次想到了db2的权限。找他们的dba吧。。。找啊找啊找啊。。。4:30 了应该有了。困了不行。泡个咖啡。终于,他们找到了问题,他们的一次触发器的问题。我根本没心思听了。。解决掉吧。。。求求你了。 |
05:00 | 这个问题解决了。系统也基本上都验证过了。终端也验证过了。。。。我现在就想躺下,睡觉。快6点了。我先撤了。。。。 |
就这样子,在不断的出问题,不断解决问题的过程中,系统上线了。有史以来最悲催的一次上线。。。但是也是让我最为深思,反省的一次上线。
必须给自己做一个正确的上线指导,必须制定一个正确的上线步骤,必须有一个非常有效的上线沟通。
1,去客户现场测试的时候,测试环境搭建,必须记录下linux服务器的版本,类型。数据库服务器和客户端版本,类型。应用服务器版本。
2,系统用户的权限,数据库用户的权限。数据库用户是否是独立用户。访问对方数据的权限。
3,正式环境是否什么触发器的控制。
总之:测试环境什么样的环境,正式环境也必须什么样的环境(基本不可能)。。。。有不一样的地方,也要评估它的风险性。做到提早沟通。引以为戒。
上线本来是一件温暖美好的事情,可这一切被我打破了,我的错误行为不配得到原谅,我造成的伤害难以弥补,但我想弥补,必须弥补。所以我回去倒头就睡。。。睡到12点多起来,心里担心系统有其他问题,手机开机了。。。,我还是相当靠谱的。
原文:http://blog.csdn.net/vicky_yaoxj/article/details/23617689