生产环境上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;"
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;"
相关文章推荐
- 生产环境的java项目如何更新
- 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境 推荐
- 更新部署在Azure中的生产环境 - Cloud Service & Java
- 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境
- 产品项目上线svn预处理更新生产环境
- SVN利用post-commit hooks自动同步代码到生产环境,解决大数量文件更新同步问题
- linux + ant +java web 项目自动更新测试站点
- 生产环境中部署asp.net mvc项目实战
- java基础巩固训练营【第一轮】(一)项目环境和规范 补充
- 生产环境使用elasticsearch遇到的一些问题以及解决方法(不断更新)
- 项目环境问题 java.lang.UnsupportedClassVersionError: Bad version number in .class file
- java基础巩固训练营【第一轮】(一)项目环境和规范
- 项目生产环境下 log4j 和spring MVC视图解析viewResolvers的配置
- Android项目更换开发环境时出现的 java.lang.VerifyError 异常解决办法
- 不同运行环境下JAVA出现的异常(持续更新)
- linux + ant +java web 项目自动更新测试站点
- JavaWeb物流管理项目开发(JSP、Servlet、JDBC):3、环境搭建
- 从项目中谈JAVA中static 方法在多线程环境下的运用
- 在Java环境中使用OpenSCADA的utgard子项目连接OPCserver
- Linux系统配置java项目的环境(jdk和tomcat)简略版,欲详细配置可无视