您的位置:首页 > 编程语言 > Java开发

生产环境上java项目的更新

2017-03-17 06:43 1001 查看
生产环境的java项目如何更新
java项目上线后,可能随时会迭代更新,修复bug。

问题来了,更新项目大多数时候需要重启服务,但是在生产环境可不能随便重启服务的。

大家是如何处理这个问题的呢?我能想到的就是,部署两个应用,用nginx做负载,

需要更新的时候,一个应用生产,一个应用更新,完了再更新另一个。

都是这么干的,代码流:

本机开发——》测试机——》线上
可以做成自动化的,只需要执行一个shell就搞定。

自动部署到测试机的脚本

=======================

#!/bin/sh
SERVER="xxx.xxx.xxx.xxx"

SERVER_DIR="deployment/"

JAVA_HOME="/usr/lib/jvm/jdk1.7.0_25"

JRE_HOME="/usr/lib/jvm/jdk1.7.0_25/jre"

TOMCAT_HOME="tomcat/apache-tomcat-7.0.42"

echo ">> stop tomcat..."

ssh web@$SERVER "export JAVA_HOME=$JAVA_HOME; export JRE_HOME=$JRE_HOME; sh $TOMCAT_HOME/bin/shutdown.sh;"

echo ">> gradle war..."
gradle clean
gradle war

mkdir web
cd web
jar -xvf ../build/libs/server.war

#和tomcat自带的包冲突
rm -f WEB-INF/lib/jsp-api-2.0.jar

rm -f WEB-INF/lib/servlet-api-2.4.jar

#applicationContext变成dev模式,同时保留dis模式,方便部署

mv -f WEB-INF/applicationContext.xml WEB-INF/applicationContext.dis

mv -f WEB-INF/applicationContext.dev WEB-INF/applicationContext.xml

cd ..

#增量同步
echo ">> rsync..."
rsync -rtzvlp --delete web web@$SERVER:$SERVER_DIR

rm -rf web

echo ">> start tomcat,remote debug port on 8000..."

ssh web@$SERVER "export JAVA_HOME=$JAVA_HOME; export JRE_HOME=$JRE_HOME;cd $TOMCAT_HOME; sh bin/catalina.sh jpda start; tail -f logs/catalina.out;"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: