Shell脚本 自动部署Tomcat多实例

Posted 日常编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本 自动部署Tomcat多实例相关的知识,希望对你有一定的参考价值。

当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 【Shell脚本】 自动部署Tomcat多实例 【Shell脚本】 自动部署Tomcat多实例


Tomcat 简介

Tomcat 是Apache基金会下的一个HTTP服务器, 主要的功能是用来部署动态网站并解析jsp文件,当和nginx在一起配合使用的时候能达到最大的效果,用Nginx来做反向代理, 将动态的请求转发给Tomcat, 将静态的请求传给Nginx,但当客户请求变多的时候 一个Tomcat不能满足要求, 此时就要部署Tomcat多实例,用Nginx来实现负载均衡,手动的安装Tomcat是费时费力, 所有这次我们就用Shell脚本实现自动化安装。

【Shell脚本】 自动部署Tomcat多实例


安装Nginx

之前写的文章



#安装Tomcat之前还要安装JDK,可以从官网直接下载这里不多说,就直接安装Tomcat

wget  http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.20/bin/apache-tomcat-8.5.20.tar.gz


# 配置JAVA环境变量

cat  >> /etc/profile << EOF

export JAVA_HOME=/usr/java/$JDK    # $JDK 是JDK版本名称

export CLASSPATH=\$CLASSPATH:\$JAVA_HOME/lib:\$JAVA_HOME/jre/lib  

export PATH=\$JAVA_HOME/bin:\$JAVA_HOME/jre/bin:\$PATH:\$JAVA_HOME/bin

EOF


# 测试JDK环境是否部署成功

java  -version


# 配置一个tomcat

tar xzf apache-tomcat-8.5.20.tar.gz

mv apache-tomcat-8.5.20 /usr/local/tomcat

这样我们就成功的部署了一个tomcat实例

太简单 ?

是的,部署一个tomcat就是这么的简单, 但当有上百台服务器要部署tomcat的s时候,那真的会累死!!

所有用shell来编写才是真正的选择



Shell脚本

这里我们让多个tomcat放在 /usr/local/tomcat/ 目录下,并重新命名为server_X,其中X代表tomcat的个数

所以我们要检测最终X的数字是多少

ls /usr/local/tomcat/ | gawk -F "_" '{print $2}' | sed -n '$p'


当部署多个tomcat的时候,要让端口不冲突,所以我们要检测已经部署tomcat的端口

# 这个是脚本中用于检测已用的端口, ${NUM} 代表每个server, 下同

PORT=grep "port" /usr/local/tomcat/server_${NUM}/conf/server.xml | egrep -v "\--|Define" | awk '{print $2}' | grep -v "protocol" | sed 's/port=//g;s/\"//g' | sort -nr | grep -v 8443 | sed -n '1p'


为了让多个tomcat发布同一个网站,我们将网站的发布目录设置为 /data/webapps/www/

sed -i '/<\/Host>/i\        <Context path="/" docBase="/data/webapps/www"  reloadable="true"/>\n' /usr/local/tomcat/server_${NUM}

/conf/server.xml


部署成功后还要修改各自Tomcat的端口

# 将当前用的端口加一,当为新端口使用

PORT_NEW=`expr $PORT + 1`


# 将原端口 改为新端口

sed -i "s/${PORT}/${PORT_NEW}/g"  /usr/local/tomcat/server_${NUM}/conf/server.xml


多个Tomcat部署完成后,接下来实现Nginx负载均衡

# $BHOSTS代表一个独自的网站

sed -i "/^upstream/a            server 127.0.0.1:${PORT_NEW} weight=1 max_fails=2 fail_timeout=30s;"  /usr/local/nginx/conf

/domains/$VHOSTS


Shell脚本源代码

http://pan.baidu.com/s/1slx6pit 验证码:elu3

注:代码功能还不完整,用的时候可根据需要自行修改!



以上是关于Shell脚本 自动部署Tomcat多实例的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat多实例一键部署shell脚本

SHELL小练习

管理多tomcat实例的shell脚本

一段自动化部署的shell脚本

如何利用jenkins git shell脚本自动部署服务

Shell脚本一键部署MongoDB