由于Linux和Java一样开源,所以现在在服务器的部署上基本上都是采用Linux平台作为服务器,然后部署项目!在开发项目的过程中,绝大部分程序猿还是使用最经典的windows操作系统,虽然Linux也有桌面化的系统,对于国人来说,还是不太习惯,并且国内的软件绝大部分都不支持Linux平台,所以在使用的频率那是相当的少!
在开发中,开发环境中编译使用等一系列通过后,还不能说功能已经ok,因为环境一旦变化,出现的问题的可能是自己没有考虑的,所以程序猿都知道真实的环境才是最可靠的,有时候出现的问题,在真实的环境需要多次才能重现,甚至长时间无法重现,因此在真实的环境中进行大量的测试时相当需要的!
来讲讲是怎么改善部署环境的:
这里使用到了一个shell脚本,简单介绍一下shell脚本:shell script,shell脚本与windows/dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,毕竟它使用Linux/Unix下的命令。
换一种说法也就是,shell script是利用shell的功能缩写的一个程序,这个程序是使用纯文本文件,将一些shell的语法和指令都写在里面,然后用正则表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。
更明白的来说,shell script就想早起dos年代的.bat,最简单的功能就是将许多指令汇整写一起,让使用者很容易的就能够一个操作执行多个命令,而shell script更是提供了数组,循环,条件以及逻辑判断等重要功能,让使用者可以直接以shell来写程序,而不必使用类似C程序语言等传统程序编写的语法。
shell就简单的介绍到这里!现在直接贴上shell脚本(tom.sh)里的内容
#!/bin/bash service tomcat stop sleep 3 #kill java killall java #remove pid rm -rf /var/run/tomcat.pid rm -rf /nac/web/tomcat/webapps/hupunac* /nac/web/tomcat/webapps/ROOT rm -rf /nac/web/tomcat/work/* #clear log >/var/log/tomcat/catalina.out #rz cd /nac/web/tomcat/webapps rz #start tomcat sleep 3 service tomcat start # echo "Please wait for 80s......" sleep 80 netstat -an|grep :::6002 > /dev/null if [ $? != 0 ];then service tomcat stop killall java rm -rf /var/run/tomcat.pid service tomcat start else echo "tomcat start ok!" fi
这里的
service tomcat stop命令应该很清楚了吧,就是先将tomcat的服务先停止,当然可能在这个时候tomcat的服务本身就没有开启,但是不影响整个脚本的执行
sleep 3指的是睡眠3s(秒),俗称等待3秒
killall java强制杀死Java程序
rm -rf强制删除,使用这个命令,主要是为了删除服务器下那些必须删除的文件
> 这条命令是将文件清空的意思,在我这里主要是清空日志文件
cd是指进入目录
rz是指文件导入,就是windows中的浏览一般,然后上传
service tomcat start这时候,我们项目的war上传成功后,开始启动服务,接着又是等待服务开启
这里做了一个优化,因为在我们的程序中使用到了6002端口,所以如果服务开启完毕后端口还没有起来,也就是listen状态,netstat -an这命令是用来查看当前系统中所有端口信息,这些端口中的6002端口是我们所需要的数据,所以我们可以用netstat -an|grep :::6002来过滤!如果没有起来的话,说明在tomcat的服务开启过程中出现了问题,然后再次走流程,这时候只是少了一步上传war包的动作。
好啦,脚本介绍完毕了,这时候我们可以执行. /nac/script/tom.sh,ok项目就可以轻松部署了!
这时候就用人要问了,这么长的路径,这么难找,挺费事!还不能更加优化呢,这是当然的,必须能优化,这里介绍两种优化方式:
1、在root下的.bashrc文件下加入alias webupdate=‘. /nac/script/tom.sh‘
2、在/etc/profile中加入alias webupdate=‘. /nac/script/tom.sh‘
两种方式都介绍完了,两种优化方式都行,后者更好,更方便,因为后者是配置在系统的环境变量上,而前者是配置在root用户的环境变量上,所以前者只有root能使用,而后者的话所有用户都可以使用该命令,这样就可以使用webupdate这一条命令就可以轻松换war包部署
可能这时候有人就要问了,用命令怎么说不存在呢!当然,设备没有重启,配置的这些资源还有重新加载呢,肯定没有使用咯,重启设备就ok,重启设备太费劲了,我们可以用source一下就好啦,这样就可以直接使用刚刚配置好命令,记住source是source刚才修改的文件!
最后我们是不是可以很轻松很方便很快捷就能把我们的项目重新部署了呢!
为各位附上最常用的Linux命令集:http://blog.csdn.net/luo201227/article/details/23295435