shell 脚本自动发布java web(.war)工程
通过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。


第三步:利用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 #-----------------------------------------------------------------------------

浙公网安备 33010602011771号