#!/bin/bash
# 停止防火墙并关闭SELinux
systemctl stop firewalld
setenforce 0
# 安装Nginx依赖
echo "正在安装Nginx依赖..."
yum -y install wget vim net-tools &>/dev/null
# 安装Nginx
echo "正在安装Nginx……"
yum install -y epel-release &>/dev/null && yum install -y nginx &>/dev/null
# 检查并添加upstream tomcats配置
grep "upstream tomcats" /etc/nginx/nginx.conf &>/dev/null
if [ $? -ne 0 ]; then
sed -i -e '39a upstream tomcats {\n\tserver 192.168.99.155:8080 weight=1;\n\tserver 192.168.99.140:8081 weight=1;\n\tserver 192.168.99.140:8082 weight=1;\n\t}' /etc/nginx/nginx.conf
fi
# 检查并添加server_name配置
grep "server_name 192.168.99.137;" /etc/nginx/nginx.conf &>/dev/null
if [ $? -ne 0 ]; then
echo -i -e 'listen 80;\n\tserver_name 192.168.99.137;\n\tlocation ~ .*\.jsp$ {\n\t\tproxy_pass http://tomcats;\n\t\tproxy_set_header Host $host;\n\t\tproxy_set_header X-Real-IP $remote_addr;\n\t\tproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n\t}' /etc/nginx/conf.d/tomcatweb.conf
fi
# 重启Nginx服务
systemctl restart nginx
# 在/opt目录下安装三个Tomcat实例
cd /opt
for i in {1..3}; do
{
# 创建并配置Tomcat安装脚本
cat >/opt/tomcat$i.sh <<EOF
#!/bin/bash
cd /opt
rpm -ivh /opt/jdk-8u371-linux-x64.rpm
echo "export JAVA_HOME=/usr/java/jdk1.8.0-x64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH" >> /etc/profile.d/java.sh
# 使环境变量配置立即生效
source /etc/profile.d/java.sh
tar xf apache-tomcat-9.0.78.tar.gz
mv -f apache-tomcat-9.0.78 tomcat$i
cat >/opt/tomcat$i/webapps/ROOT/index.jsp <<EOF$i
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test$i page</title>
</head>
<body>
<% out.println("动态页面 $i");%>
</body>
</html>
EOF$i
grep "<Context docBase=" /opt/tomcat$i/conf/server.xml &>/dev/null
if [ $? -eq 0 ];then
sed -i -e '163d' /opt/tomcat$i/conf/server.xml
fi
/opt/tomcat$i/bin/startup.sh
if [ $? -eq 0 ]; then
echo "tomcat$i启动成功"
else
echo "tomcat$i启动失败"
exit $i
fi
EOF
chmod +x /opt/tomcat$i.sh
}
done
# 安装expect工具,用于自动化交互式命令行操作
yum install expect -y &>/dev/null
# 创建并配置expect脚本,用于自动部署Tomcat到远程服务器
cat >/opt/tomcat1.exp <<EOF
#!/usr/bin/expect
set timeout 300
spawn scp /opt/tomcat1.sh /opt/apache-tomcat-9.0.78.tar.gz /opt/jdk-8u371-linux-x64.rpm root@192.168.99.155:/opt
expect {
"*yes/no*" {send "yes\r";exp_continue}
"*password*" {send "root\r";exp_continue}
}
spawn ssh root@192.168.99.155 "bash /opt/tomcat1.sh"
expect {
"*password*" {send "root\r";exp_continue}
}
EOF
cat >/opt/tomcat2.exp <<EOF
#!/usr/bin/expect
set timeout 300
spawn scp /opt/tomcat2.sh /opt/tomcat3.sh /opt/apache-tomcat-9.0.78.tar.gz /opt/jdk-8u371-linux-x64.rpm root@192.168.99.140:/opt
expect {
"*yes/no*" {send "yes\r";exp_continue}
"*password*" {send "root\r";exp_continue}
}
spawn ssh root@192.168.99.140 "bash /opt/tomcat2.sh && bash /opt/tomcat3.sh"
expect {
"*password*" {send "root\r";exp_continue}
}
EOF
chmod +x /opt/tomcat1.exp
chmod +x /opt/tomcat2.exp
/opt/tomcat1.exp
/opt/tomcat2.exp
【shell语言学堂】bash脚本实现Nginx负载均衡Tomcat
最新推荐文章于 2024-07-11 14:22:23 发布