快速部署Tomcat项目的Shell脚本

为了做集群测试,在每台机器上装了3个tomcat,每次发布项目的时候都要反复敲一些命令,重启tomcat之前先检查tomcat进程有没有停掉,没有还要手动kill该进程。

发布次数多了,操作就比较繁琐了,索性写个脚本一键发布,省时省力^_^。

把deploy.sh和restart.sh分别拷贝到3个tomcat的bin目录下,再用chmod +x给这两个脚本赋上可执行权限。

一键发布命令:./deploy.sh 项目war包 例如:./deploy.sh /home/test.war

说明:deploy.sh会先清空tomcat下的ROOT目录,再将指定的war包加压至ROOT目录,最后执行restart.sh重启tomcat。

代码如下:

#!/bin/sh

war=$1

bin=$(cd `dirname $0`; pwd)

if [ ! -n "${war}" ]; then

echo "***Usage: $0 [project.war]"

exit 0

fi

if [ ! -f "${war}" ]; then

echo "***Error: ${war} does not exist."

exit 0

fi

if [ ! "${war##*.}" = "war" ]; then

echo "***Error: ${war} is not a war file."

exit 0

fi

echo "Deploy ${war##*/}..."

rm -rf ${bin}/../webapps/ROOT/ && unzip -qo ${war} -d ${bin}/../webapps/ROOT/

rm -rf ${bin}/../work/Catalina/localhost/

如需重启tomcat则使用命令:./restart.sh 或 ./restart.sh -v (参数-v表示启动时打印tomcat启动日志)

说明:restart.sh是用来重启tomcat的,如果tomcat没有启动则直接启动,如果已经启动就先shutdown再启动,如果shutdown之后3s没有停掉tomcat进程,则kill掉原来的进程再启动。

代码如下:

#!/bin/sh

bin=$(cd `dirname $0`; pwd)

pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}')

if [ -n "${pid}" ]; then

echo "Shutdown..."

sh ${bin}/shutdown.sh

sleep 3

pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}')

if [ -n "${pid}" ]; then

kill -9 ${pid}

sleep 1

fi

fi

echo "Startup..."

sh ${bin}/startup.sh

if [ "$1" = "-v" ]; then

tail -f ${bin}/../logs/catalina.out

fi

本人用的是CentOS,3个tomcat分别在/opt/apache-tomcat-7.0.65/下的8080/8081/8082子目录下,监听8080/8081/8082端口。运行截图如下:

最后在浏览器里输入 http://localhost:8080 即可访问。

本文分享自微信公众号 - Linyb极客之路(gh_c420b2cf6b47)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏实用工具入门教程

如何部署 Kubernetes 集群

Kubernetes是一个容器编排系统,可以大规模管理容器。Kubernetes最初由谷歌根据其在生产中运行容器的经验开发而成,是一个开源的,并由世界各地的社区...

33530
来自专栏安恒网络空间安全讲武堂

溯源小记

看对方的目的是什么,就是最终目标是做什么。然后根据自己经验 看看达到这个目标 需要进行什么操作 逆推回去。看看这些过程都会留下什么日志。

15520
来自专栏有刻

Docker 小记 — Compose & Swarm

676110
来自专栏糊一笑

教你使用docker部署淘宝rap2服务

1.3K40
来自专栏云计算教程系列

如何在Ubuntu 18.04上使用Kubeadm创建Kubernetes 1.11集群

Kubernetes是一个容器编排系统,可以大规模管理容器。Kubernetes最初由谷歌根据其在生产中运行容器的经验开发而成,是一个开源的,并由世界各地的社区...

80200
来自专栏信安之路

如何安全快速地部署多道 ctf pwn 比赛题目

一开始接触 pwn 的时候,我们要么本地调试,要么自己用 socat 将程序启动起来远程调试

92130
来自专栏EAWorld

DevOps的支撑服务:K8s容器管理与应用部署

? 大家好,本期微课堂介绍在新一代数字化企业云平台中对于Kubernetes的学习以及使用的总结。 ? 本次分享分为两部分: 1.介绍Kubernetes是什...

70970
来自专栏性能与架构

Uber 的 Docker Mysql 应用

背景介绍 Uber的MySQL集群规模很大,超过1000个集群,共有4000多个数据库服务器。 问题 起初是使用Puppet管理,写了很多脚本,再加上一些人工操...

41690
来自专栏机器之心

专栏 | 新手入门?一步一步教你如何安装PaddlePaddle

机器之心发布 来源:百度PaddlePaddle 不久之前,机器之心联合百度推出 PaddlePaddle 专栏,为想要学习这一平台的技术人员推荐相关教程与资源...

58470
来自专栏写代码的海盗

Docker学习总结之Run命令介绍 Operator exclusive options

Docker学习总结之Run命令介绍 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢!...

34050

扫码关注云+社区

领取腾讯云代金券