项目部署,版本迭代个人心得

项目部署,版本迭代个人心得

项目上线之后,版本的迭代必不可少,但是怎么做才是相对规范,安全的呢?

当然原项目备份是必不可少的了:

比如我的项目名是 Wechat (我使用的tomcat服务器,所以该项目Wechat默认在 webapps 文件夹中)

首先对原项目打包:tar cvf wechat20150315.tar WeChat

[root@iZ23whn33jnZ webapps]# tar cvf wechat20150315.tar WeChat
WeChat/
WeChat/tx_list.html
WeChat/pay.html
WeChat/css/swiper.min.css
WeChat/css/youngor.css
WeChat/myorder.html

......
[root@iZ23whn33jnZ webapps]# ls
docs  examples  host-manager  manager  ROOT  WeChat  wechat20150315.tar

这里可以看到刚才打的tar包,打包完成后,接下来可以对线上的项目进行增删迭代了。

对项目版本的迭代,当然是改动越小越好,改动越小越安全越容易把控 , 所以呢,不要用本地环境的项目覆盖生产环境上的项目。

最好只是对于某一个jar包的更改,或者某一个 .class 文件的更改,确保改动最小。

对于替换 .class ,直接把本地编译的对应的 .class 文件替换到生产环境就可以了,然后重启服务。

对于替换 jar包 ,比如我们更改了 wechat-service.jar 中的一个文件,那么把 wechat-service.jar 解压, 得到 wechat-service 文件夹。

然后再替换文件夹中对应的 .class 文件。

然后在把这个更改过的文件夹 wechat-service 打成 jar 包:

jar cvf wechat-service.jar -C wechat-service\ .

(结尾是 "\ ."  反斜杠+空格+英文句号)

这样新的 jar 就出来了,把这个新打出的 jar 替换成生产环境上对应的 jar,就ok了。

在多人分工合作时,使用该方法较合理。

如果改动很大,如果能保证项目改动只有自己,那么也是可以覆盖的,毕竟改动大,一个一个替换 .class 文件的工作量变大,出问题的几率也更大。

如果还有别的部署方法一起分享,比如打成 war包 什么的。

我在部署时常用的命令:

1,首先打开我要迭代的项目的log,并监控(当然是在不处理任务的时候把项目停下来了,减少异常数据出现的可能)

tail -f wechat/log/wechat.log

2,再开一个命令窗口,ps -ef | grep tomcat ,记录下该 对于的项目进程的 PID (因为要在shutdown时,该进程有可能停止不了,比如pid 为 53245)

ps -ef | grep tomcat

2,监控log日志,当无人访问,不执行任务时shutdown

/tomcat/bin/shutdown.sh

3,shutdown之后,查看是否停止,ps -ef | grep tomcat ,如果该进程依然存在,那么kill 掉这个进程,不存在就不用kill了。

kill -9 53245

4,这时把更改过的对应文件 或者 对应的 jar 包,替换到生产环境就好了。然后 start

/tomcat/bin/startup.sh

5,启动之后,ps -ef | grep tomcat 肯定是有的了,等完全启动之后,用浏览器或者 手机访问下就可以了。

注意:

1,在项目打包成 jar 时,打包之后的 jar 要放在本地环境跑一跑,避免到生产环境跪掉了。

2,版本的迭代当然也有其他的办法,也可以放一个预生产项目(也就是和原生产项目一样一样的哦,也可以理解为备份),预生产项目和生产项目同一时刻只能 存活一个。比如 现在环境是这样的:生产环境当前状态start,预生产环境当前状态stop。现在需要迭代,先对预生产环境更改,预生产环境更改后,先shutdown生产环境,在start预生产环境。当应用跑起来没问题了,那么再对生产环境同样的操作也就放心了。shutdown预生产环境,start生产环境,这样就会更安全一些了。如果中途预生产环境跪掉了,立刻切换到生产环境。

时间: 2024-08-30 06:56:08

项目部署,版本迭代个人心得的相关文章

Linux下将Python的Django项目部署到Apache服务器

  这几天花了点时间,将把django开发好的web项目部署到Apache上,参考了官方的一些文档和互联网上的文档,还是花了比较多的时间,这里把配置的过程说一下. 方便有需要的朋友,可以参考,少走弯路! 1. django项目部署环境说明 操作系统 : Red Hat Enterprise Linux Server release 5.3 (Tikanga) x86_64 apache版本 : httpd-2.2.3-22.el5 mod_wsgi版本 : mod_wsgi-3.2-1.el5

App版本迭代时间安排(思路重要)

App 2周版本迭代时间安排 对于移动互联网产品来说,迭代的速度就是生命. 我创业时做移动App时是一周一版,而现在是2周1版. 相比起小公司,大公司迭代时间虽长,却更为不易,因为大公司流程更多,参与人数更多,需求更多,实现这样的快速迭代存在许多挑战,也有一定风险,管理者控制起来更困难.         那我们应该如何来实现2周1版的快速迭代呢?         最初我构思的版本迭代流程图:         后来修改成这样:                  我们来梳理一下,在2周1个版本的迭代

windows8-wp8开发基础问题 项目部署失败

问题描述 wp8开发基础问题 项目部署失败 现在的wp8开发环境一定要是windows8 x64的系统么? 我再windows8.1 x64位的系统上装了vs 2012 for windows phone.新建一个项目后, 运行时总是提示部署错误,是个什么情况呢? 谢谢 我是做java开发的, 想在业余时间玩玩windows phone 解决方案 是的,必须是专业版的win8,因为专业版里面内置了hyper-v虚拟机,一般的版本没有虚拟机无法启用wp的模拟器

web项目部署到websphere上出错,部署到tomcat上没问题

问题描述 web项目部署到websphere上出错,部署到tomcat上没问题 为了简单化问题,特意写了有一个servlet,页面就一句hello的测试小项目, websphere安装完之后也无法访问,直接访问项目名的话是这个样子 访问具体页面的话提示这样 我的版本是was7,百度上查找了几天也没个有效的办法,求大师指点一下是哪里出了问题,感激不尽 解决方案 已解决 我的编译器jdk版本高于服务器的版本 所以出错 重新用低版本jdk编译之后问题解决了 希望遇到相同问题的可以排除这方面的原因 解决

ASPX项目部署到安装了MYsql5.6的机器上报错

问题描述 ASPX项目部署到安装了MySql5.6的测试环境上报错,提示这个时候发现用的mysql不是6.6.5.0web.config中的配置节点也不是而是6.4.3.0,好我们改一下,改完后的情况在运行报错不一致了但是还是不行我们有2套测试环境a:是web跟数据库分离的环境,这个环境上没问题,b环境是web跟数据库在一起的,是mysql5.6,这个上面就报错了,程序中引用的地方也都是6.6.5.0但是就是说不行不知道哪里有错,后来把b上的mysql卸载了这个问题解决了,但是今天我们又部署到了

急急急!项目部署出问题?大侠快来帮忙啊

问题描述 我用的SSI(Struts2.0+Spring2.0+ibatis2.3.4)技术,工具是Eclipse3.1.1,服务器:Tomcat6.0.10数据库:Mysql5.0.22项目部署在linux系统下.在根目录下的JSP页面都正常,但是子目录下的报org.apache.jasper.JasperException:File"/struts-tags"notfound错误我JSP头标签是<%@taglibprefix="s"uri="/s

打造属于自己的支持版本迭代的Asp.Net Web Api Route

    在目前的主流架构中,我们越来越多的看到web Api的存在,小巧,灵活,基于Http协议,使它在越来越多的微服务项目或者移动项目充当很好的service endpoint. 问题     以Asp.Net Web Api 为例,随着业务的扩展,产品的迭代,我们的web api也在随之变化,很多时候会出现多个版本共存的现象,这个时候我们就需要设计一个支持版本号的web api link,比如:原先:http://www.test.com/api/{controller}/{id} 如今:h

xml-关于jboss项目部署的问题

问题描述 关于jboss项目部署的问题 Errors occurred during the build.Errors running builder 'Integrated External Tool Builder' on project 'koyoo-MySQL'.Launch configuration type id ""org.maven.ide.eclipse.Maven2BuilderConfigurationType"" does not exis

maven项目部署在linux上的jar包问题

问题描述 maven项目部署在linux上的jar包问题 昨天吧写好的程序部署在linux上准备测试.发现找不到hibernate3.0.6.jar 看后发现, 这个jar包是引用在本地磁盘上的一个jar包.如:G:xxxx/xxxx/xx/hibernateXX.jar ,但是maven的jar包也已经打包到lib下放到程序包的同级目录下.可能linux上没有盘符, 而maven里找jar包的是通过pom文件找jar包的.pom文件里面写的是G:xxxxxxx.hibernateXX.jar