通过shell脚本的方式自动发布javaweb工程,我们都知道在大公司一般都把项目部署在linux之上。那么我在开发的时候确在windows系统中。

当我们把项目打成war包,部署在linux中的时候。就需要手动去linux部署,tomcat。war包,比较麻烦。今天我们就用shell脚本来完成这个部署和发布的工作。

一。

其实shell脚本的根本目的是启动tomcat就可以。tomcat目录webapps中是我们项目的war。

 

步骤如下:

第一步:通过shell脚本把SVN上的最新代码拉到本地。

#!/bin/bash
svn_dir=$1
mkdir -p $svn_dir
cd $svn_dir
svn checkout svn://路径/项目

或者直接在linux中安装SVN自己下载 打成的war包。

第二步:用ant打包需要在项目中配置build.xml文件,可以成功打包并发布到tomcat下。但是运行的时候报接口错误,后来才发现xml文件中少了一些关键的配置。我把我们工程配置的build.xml 贴出来

 

再贴一下build.xml中的内容(最重要的一段用红色的框圈出来了,必须有,否则打出来的包运行会出问题)。注意编码格式,我们项目里用的是UTF-8。

 

java 自动连发脚本 java自动部署脚本_linux

 

 

 


 

 

 

第三步:利用shell脚本,写命令重启tomcat,就可以访问最新的功能包了

#!/bin/sh
#-----------------------------------------------------------------------------
#备份
#-----------------------------------------------------------------------------
file=$(date '+%m-%d')
#下面一行在控制台打印语句class文件
echo $(date) 备份/opt/wwwroot/WEB-INF/下的文件
cd /opt/backups/
mkdir $file
cd $file
cp /opt/wwwroot/WEB-INF/ . -r
#-----------------------------------------------------------------------------
#更新
#-----------------------------------------------------------------------------
#停止tomcat
echo $(date) 关闭tomcat
cd /opt/apache-tomcat-6.0.36/bin/
./shutdown.sh
echo tomcat停止运行
#判断Tomcat是否已经停止工作
echo $(date) 判断tomcat是否停止工作,如果没有,则间隔一段时间后强制关闭
int=0
while (($int < 5))
do
    #a = show processes for all users 显示所有用户的进程

    #u = display the process's user/owner 显示用户
    #x = also show processes not attached to a terminal 显示无控制终端的进程
        pid=$(ps aux|grep tomcat-|grep -v grep|awk '{print $2}')
        #grep -v grep 防止列表出grep的进程号。
        #awk '{print $2}' 一行一行的读取指定的内容, 以空格作为分隔符,打印第二个字段   (awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。)
        if [ "$pid" = "" ]
        then
                echo $pid 不存在
                int=5
        else
                echo $pid 存在,休息20s
                #let 后面接运算符表达式,不加引号应该也可以
                let "int++"
                sleep 20s
                if [ "$int" = "4" ]
                then
                        echo $(date) 强制关闭tomcat
                        #强制杀掉进程  Ctrl-2==Ctrl+C
                        kill -9 $pid
                fi
        fi
done
#备份log日志
echo $(date) 备份log日志
cd /opt/apache-tomcat-6.0.36/logs/
#把前面文件的内容剪切到后面的文件(后面文件的内容直接被override)
mv catalina.out catalina-$file.out
#拷贝更新文件
echo $(date) 把更新文件拷贝到运行目录
cd /home/shop/cc/
#cp * 复制当前文件下的所有文件
cp * /opt/wwwroot/ -r
#设置ulimit -n 65000
echo $(date) 设置ulimit
cd /opt/apache-tomcat-6.0.36/bin/
#Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况通过ulimit设置各linux 用户的最大进程数
ulimit -n 65000
#启动
echo $(date) 启动tomcat
./startup.sh
#-----------------------------------------------------------------------------