因为Linux和Java像开源。所以,现在在server基本上使用部署Linux平台即server。然后部署项目。在开发项目的过程中。程序员绝大多数仍采用最经典windows操作系统,尽管Linux也有系统的桌面,为人民,还是不太习惯。持Linux平台。所以在使用的频率那是相当的少!

在开发中,开发环境中编译使用等一系列通过后,还不能说功能已经ok。由于环境一旦变化,出现的问题的可能是自己没有考虑的。所以程序员都知道真实的环境才是最可靠的,有时候出现的问题。在真实的环境须要多次才干重现,甚至长时间无法重现。因此在真实的环境中进行大量的測试时相当须要的!

来讲讲是怎么改善部署环境的:

这里使用到了一个shell脚本,简介一下shell脚本:shell script,shell脚本与windows/dos下的批处理相似,也就是用各类命令预先放入到一个文件里,方便一次性运行的一个程序文件。主要是方便管理员进行设置或者管理用的。可是它比windows下的批处理更强大。比用其它编程程序编辑的程序效率更高,毕竟它使用Linux/Unix下的命令。

换一种说法也就是,shell script是利用shell的功能缩写的一个程序,这个程序是使用纯文本文件。将一些shell的语法和指令都写在里面。然后用正则表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。

更明确的来说,shell script就想早起dos年代的.bat,最简单的功能就是将很多指令汇整写一起,让使用者非常easy的就行一个操作运行多个命令,而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强制删除,使用这个命令,主要是为了删除server下那些必须删除的文件

> 这条命令是将文件清空的意思,在我这里主要是清空日志文件

cd是指进入文件夹

rz是指文件导入,就是windows中的浏览一般。然后上传

service tomcat start这时候,我们项目的war上传成功后,開始启动服务,接着又是等待服务开启

这里做了一个优化,由于在我们的程序中使用到了6002port,所以假设服务开启完成后port还没有起来,也就是listen状态。netstat -an这命令是用来查看当前系统中全部port信息,这些port中的6002port是我们所须要的数据,所以我们能够用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

版权声明:本文博主原创文章,博客,未经同意不得转载。

最新文章

  1. JVM-类加载机制
  2. ODBC连接问题
  3. json格式转换成Map的应用
  4. C#之winform基础 button1_Click(object sender, EventArgs e)中sender是啥及其用法
  5. jsp获取SessionID值
  6. qemu-kvm命令
  7. servlet实现文件下载
  8. JProfiler 使用说明
  9. vijosP1210 盒子与球
  10. Hyper-V介绍
  11. PHP去除空白字符
  12. Android ListView 常见问题与使用总结
  13. 六大利器助Java程序开发事半功倍
  14. 【转】NO.1、 appium之ios环境搭建
  15. php get_called_class()函数与get_class()函数的区别
  16. 0418 jQuery笔记(添加事件、each、prop、$(this))
  17. ORM对象关系映射之GreenDAO建立多表关联
  18. mysql按天,小时,半小时,N分钟,分钟进行数据分组统计
  19. ArrayList循环遍历并删除元素的常见陷阱
  20. Docker下配置双机热备PXC集群

热门文章

  1. 为什么Lisp语言如此先进?(译文) - 阮一峰的网络日志
  2. Android常用控件之RatingBar的使用
  3. C++不确定行为
  4. IBinder在进程之间传递一个对象的形式(一)
  5. Jquery+ajax+json+servlet原理和Demo
  6. Android中canvas.save()和canvas.restore()的使用
  7. android画笔错位问题的解决
  8. HDU 3277Marriage Match III(二分+并查集+拆点+网络流之最大流)
  9. Wix学习整理(6)——安装快捷方式
  10. zoj2059(经典dp)