java程序发布经验分享

布署难题

在日常的开发工作中,程序的不可避免的,但却又是经常出会问题的环节。比如:
1:配置文件提交的问题,开发环境的配置与生产的不一致。开发团队不知道生产的配置长什么样子。
2:打包时不小心提交多的配置文件,容易造成配置文件覆盖。
3:布署步骤多,容易漏掉,或者执行顺序不对。
4:布署的人多而杂。

以上是我总结了团队的一些经常出的问题。但问题远不止于此。

解决方案

这次分享的解决方案既不是高新技术,又不复杂 。
1:首先要解决的问题是配置文件问题。
1)在服务器维护好配置文件,并把配置文件拷到一个独立的文件夹。
2)把java 的tar包解压到程序文件夹。
3)再把配置文件覆盖回程序文件夹。
2:再次是解决步聚多而复杂的问题。
1)把所有的步聚都命使用shell脚本来执行。

Shell脚本

#!/bin/sh
. ~/.bash_profile

param=$1
sleep_time=2s
if [ -z $param ] 
then
    param=all
fi
basic_dir=/programs/
conf_dir=/programs/configs/
export LANG=en_US.UTF-8
export JAVA_OPTS="-server -Xms256m -Xmx1024m -XX:-UseGCOverheadLimit -Djava.security.egd=file:///dev/urandom"

#ReportBiz
if [ $param = 'all' -o $param = 'ReportBiz' ]
then
cd $basic_dir
echo 删除文件夹
rm -rf $basic_dir/com.test.report.biz
echo 解压tar包
tar -xvf $basic_dir/com.test.report.biz.tar
echo 配置文件覆盖
\cp -rf $conf_dir/com.test.report.biz/* ./com.test.report.biz/conf/
echo 关闭服务进程:ReportProvider
ps aux|grep ReportProvider|grep -v grep |awk '{print $2}'|xargs kill -9
echo 等待两秒
sleep $sleep_time
echo 启动服务
nohup ./com.test.report.biz/bin/com.test.report.biz &
fi

#ReportstaticBiz
if [ $param = 'all' -o $param = 'ReportstaticBiz' ]
then
cd $basic_dir
echo 删除文件夹
rm -rf $basic_dir/com.test.reportstatic.biz
echo 解压tar包
tar -xvf $basic_dir/com.test.reportstatic.biz.tar
echo 配置文件覆盖
\cp -rf $conf_dir/com.test.reportstatic.biz/* ./com.test.reportstatic.biz/conf/
echo 关闭服务进程:ReportstaticProvider
ps aux|grep ReportstaticProvider|grep -v grep |awk '{print $2}'|xargs kill -9
echo 等待两秒
sleep $sleep_time
nohup ./com.test.reportstatic.biz/bin/com.test.reportstatic.biz &
fi


#ReportstaticServer
if [ $param = 'all' -o $param = 'ReportstaticServer' ]
then
cd $basic_dir
echo 删除文件夹
rm -rf $basic_dir/com.test.reportstatic.service
echo 解压tar包
tar -xvf $basic_dir/com.test.reportstatic.service.tar
echo 配置文件覆盖
\cp -rf $conf_dir/com.test.reportstatic.service/* ./com.test.reportstatic.service/conf/
echo 关闭服务进程: ReportstaticConsumer
ps aux|grep ReportstaticConsumer|grep -v grep |awk '{print $2}'|xargs kill -9
echo 等待两秒
sleep $sleep_time
echo 启动服务
nohup ./com.test.reportstatic.service/bin/com.test.reportstatic.service &
fi

#ReportServer
if [ $param = 'all' -o $param = 'ReportServer' ]
then
cd $basic_dir
echo 删除文件夹
rm -rf $basic_dir/com.test.report.service
echo 解压tar包
tar -xvf $basic_dir/com.test.report.service.tar
echo 配置文件覆盖
\cp -rf $conf_dir/com.test.report.service/* ./com.test.report.service/conf/
echo 关闭服务进程: ReportConsumer
ps aux|grep ReportConsumer|grep -v grep |awk '{print $2}'|xargs kill -9
echo 等待两秒
sleep $sleep_time
echo 启动服务
nohup ./com.test.report.service/bin/com.test.report.service &
fi
jps

Shell脚本解释

1:删除服务器的程序。
2:把tar包解压。
3:把配置文件覆盖。
4:关闭服务进程。
5:启动服务进程。
6:查看进程状态。

另外通过传参的方式,支持单个部署,全部部署。

总结

过程简单暴力,但却减少了很多部署的问题。增加了部署的效率。
可以根据实际使用情况做调整,比如把删除文件改成备份,增加多服务分发。

发布了21 篇原创文章 · 获赞 47 · 访问量 3926

猜你喜欢

转载自blog.csdn.net/richyliu44/article/details/104497717