nginx+tomcat负载均衡、反向代理一键部署脚本

实验准备:

系统环境:CentOS7.9

代理服务器:nginx

Tomcat Web服务器两台

nginx反向代理tomcat,实现tomcat后端服务器负载均衡

此脚本是交互式选择性部署服务,可在任何一台机器上使用该脚本,并选择所需部署的服务!

tomcat及jdk依赖包放在文章末尾了,自取

#!/bin/bash
#function:nginx+tomcat反向代理
#author:墨染
function qianti {
	if [ $USER != root ];then
    echo "当前不是root用户,请切换至root用户再次运行脚本"
    exit
    fi
    ping -c3 -i0.1 -W1 www.baidu.com &> /dev/null
    if [ $? != 0 ];then
    echo "当前无网络,请保证网络畅通再次运行脚本"
    exit
    else
    echo "当前网络畅通,即将开始运行脚本"
    fi
    sleep 2
    systemctl stop firewalld.service && systemctl disable firewalld.service            
    sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux    
    sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    setenforce 0
    echo "防火墙和selinux高级权限管理已关闭"     
}  
############################################全局生效###############################
dir="/usr/local/src"
function PD {
   if [ ! -e $dir/$1 ];then
     echo -e  "\033[31m$1不存在\033[0m"  &&  sleep 3  && echo -e "\033[31m请将$1上传到/usr/local/src目录下\033[0m"
     exit
   fi
}
############################################tomcat_install###############################
function tomcat_install {
    echo "开始部署Tomcat"
    sleep 2
    JDK=/usr/local/src/jdk-8u311-linux-x64.tar.gz
    Tomcat=/usr/local/src/apache-tomcat-9.0.64.tar.gz
    if [ ! -e $JDK ];then
       echo "JDK安装包不存在,请讲安装包上传至/usr/local/src目录,再运行脚本"
       exit
    fi
    if [ ! -e $Tomcat ];then
       echo "Tomcat安装包不存在,请讲安装包上传至/usr/local/src目录,再运行脚本"
       exit
    fi
    echo "开始解压依赖JDK安装包"
    sleep 2
    cd /usr/local/src
    tar -xvf $JDK
    LJ=/usr/local/src/jdk1.8.0_311
    echo "正在更改环境变量"
    sleep 2
    echo "export JAVA_HOME="$LJ >> /etc/profile
    echo "export CLASSPATH=.:JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar" >> /etc/profile
    echo "export PATH=$PATH:$JAVA_HOME/bin" >> /etc/profile
    if [ $? -eq 0 ];then
      source /etc/profile && source /etc/profile
    else
      echo "未成功更改环境,请及时排查"
      exit  
    fi
    echo "开始安装Tomcat"
    tar -xvf $Tomcat
    KZ=/usr/local/src/apache-tomcat-9.0.64/bin
    echo "正在将tomcat注册为系统服务"
cat>>/usr/lib/systemd/system/tomcat.service<< EOF
[Unit]
Description=Tomcatno)
After=syslog.target network.target remote-fs.target nss-lookup.target
  
[Service]
Type=oneshot
ExecStart=$KZ/startup.sh               
ExecStop=$KZ/shutdown.sh               
RemainAfterExit=yes
  
[Install]
WantedBy=multi-user.target
EOF
    mv  /usr/local/src/apache-tomcat-9.0.64/webapps/ROOT/index.jsp   /usr/local/src/apache-tomcat-9.0.64/webapps/ROOT/index.jsp_bak
    echo "<h1>`ifconfig | grep inet | cut -d " " -f 10 | head -1`_Tomcat</h1>" > /usr/local/src/apache-tomcat-9.0.64/webapps/ROOT/index.jsp
    echo "服务部署成功"
    systemctl start tomcat.service && systemctl enable tomcat.service &&  systemctl status tomcat.service
    echo "端口启动成功"
    netstat -ntlp | grep 8080
    echo "请在浏览器输入`ifconfig | grep inet | cut -d " " -f 10 | head -1`:8080测试"
}
############################################nginx_install###############################
function nginx_install {
	echo "正在安装依赖包,请稍等...."
    yum -y install  gcc-c++  && yum install -y pcre pcre-devel  &&  yum install -y zlib zlib-devel  && yum install -y openssl openssl-devel 
    cd /usr/local/src
    echo "正在下载压缩包,请稍等...."
    wget https://nginx.org/download/nginx-1.20.2.tar.gz
    tar xvfz nginx-1.20.2.tar.gz
    echo "正在配置,请稍等...."
    sleep 2
    cd nginx-1.20.2 && ./configure --prefix=/usr/local/nginx
    echo "正在安装服务请稍等..."
    sleep 2
    make && make install
    echo "正在将nginx注册为系统服务"
    sleep 2
cat>>/lib/systemd/system/nginx.service<< EOF
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
    systemctl start nginx.service && systemctl enable nginx.service && systemctl status nginx.service
    echo "端口已开启成功" && netstat -ntlp | grep 8080
    echo -e "服务及开机自启部署成功,请输入\033[32m`ifconfig | grep inet | cut -d " " -f 10 | head -1`\033[0m测试"

}
##########################################agency#######################################
function agency {
	echo "开始配置nginx+tomcat反向代理..."  &&  sleep 5
	read -p "请输入您的第一台tomcat的IP地址和端口号;(如:192.168.100.128:8080):" TOM1
	read -p "请输入您的第二台tomcat的IP地址和端口号;(如:192.168.100.128:8080):" TOM2
	sed -i "33a\    upstream tomcatserver {" /usr/local/nginx/conf/nginx.conf
	sed -i "34a\         server ${TOM1} weight=1;" /usr/local/nginx/conf/nginx.conf
	sed -i "35a\         server ${TOM2} weight=1;" /usr/local/nginx/conf/nginx.conf
	sed -i "36a\    }"  /usr/local/nginx/conf/nginx.conf
	sed -i "49a\         proxy_pass http://tomcatserver;" /usr/local/nginx/conf/nginx.conf
	sleep 2
	/usr/local/nginx/sbin/nginx -t  2> /root/.nginx_config.error
    if [ $? != 0 ];then
      echo -e  "\033[31mnginx配置文件出错,详情请查看/root/.nginx_config.error文件 \033[0m"
      sleep 5
      exit
    else   
       sleep 2
       echo -e "\033[32mnginx_config........OK! \033[0m"
       sleep 3
       service nginx restart
       echo -e "请在浏览器中输入:\033[32m`ifconfig | grep inet | cut -d " " -f 10 | head -1`\033[0m测试反向代理!"
    fi  
	
}




sleep 3 && echo "agency代理只支持部署nginx服务上,如果想要部署agency代理,请先部署nginx服务" &&  sleep 3
read -p "请输入你想要部署的服务(nginx/tomcat/agency):"  XZ
sleep 8
case $XZ in
tomcat)
    qianti
    tomcat_install
    ;;
nginx)
    qianti
    nginx_install
    ;;
agency)
    agency
    ;;
*)
    echo "请明确输入想要部署的服务"
    ;;
esac                  

最终效果:访问nginx代理服务器就相当于访问了两个tomcta后端web服务器,刷新一下,就会发现两个tomcat服务器同时在提供服务;

安装包:

链接:https://pan.baidu.com/s/1BTgwpJs4_m7CWS60m4jPIw 
提取码:AK47 
--来自百度网盘超级会员V1的分享

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨染866

用实操解决你的问题

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值