Shell脚本 自动部署Tomcat多实例
Posted 日常编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本 自动部署Tomcat多实例相关的知识,希望对你有一定的参考价值。
Tomcat 是Apache基金会下的一个HTTP服务器, 主要的功能是用来部署动态网站并解析jsp文件,当和nginx在一起配合使用的时候能达到最大的效果,用Nginx来做反向代理, 将动态的请求转发给Tomcat, 将静态的请求传给Nginx,但当客户请求变多的时候 一个Tomcat不能满足要求, 此时就要部署Tomcat多实例,用Nginx来实现负载均衡,手动的安装Tomcat是费时费力, 所有这次我们就用Shell脚本实现自动化安装。
先安装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来编写才是真正的选择
这里我们让多个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多实例的主要内容,如果未能解决你的问题,请参考以下文章