源码安装tomcat脚本
#!/bin/bash
# *************************************
# * 功能: JDK或者tomcat源码环境部署
# * 作者: 刘丹玉
# * 联系: v649352141@163.com
# * 版本: 2025-04-30
# *************************************
# 上传相关jdk源码包
Rocky_jdk="jdk-23_linux-x64_bin.rpm"
Rocky_tomcat="apache-tomcat-10.1.33"
Ubuntu_jdk="jdk-23_linux-x64_bin.deb"
Ubuntu_tomcat11="apache-tomcat-11.0.4"
Ubuntu_tomcat9="apache-tomcat-9.0.97"
# 错误处理:如果命令执行失败,脚本将终止
set -e
# 颜色脚本,通用
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
# 查看属于Rocky、Ubuntu、openEuler系列
os_type () {
awk -F'[ "]' '/^NAME/{print $2}' /etc/os-release
}
# 源码安装JDK
install_jdk_resource (){
color "$(os_type) 开始安装JDK" 0
mkdir /data/{softs,server,app} -p
cd /data/softs
if [ $(os_type) == "Rocky" ] || [ $(os_type) == "openEuler" ];then
[ -f $Rocky_jdk ] && rpm -ivh $Rocky_jdk > /dev/null 2>&1 || { color "$Rocky_jdk 文件不存在,安装失败,退出!" 1 ;exit; }
elif [ $(os_type) == "Ubuntu" ] ;then
[ -f $Ubuntu_jdk ] && dpkg -i $Ubuntu_jdk > /dev/null 2>&1 || { color "$Ubuntu_jdk 文件不存在,安装失败,退出!" 1 ;exit; }
else
color "$(os_type) 暂不支持此版本" 3
fi
color "$(os_type) JDK 安装成功" 0
}
# rocky源码安装tomcat
install_tomcat_resource_rocky (){
color "$(os_type) 开始安装java环境" 0
yum -y install java-11-openjdk > /dev/null 2>&1
cat > /etc/profile.d/java.sh<<EOF
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.25.0.9-3.el9.x86_64
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$JAVA_BIN:$PATH
EOF
source /etc/profile.d/java.sh
color "$(os_type) java环境安装成功" 0
color "$(os_type) 开始安装tomcat" 0
[ -f $Rocky_tomcat.tar.gz ] && { tar xf $Rocky_tomcat.tar.gz -C /data/server/; } || { color "$Rocky_tomcat.tar.gz 文件不存在,安装失败,退出!" 1 ;exit; }
ln -s /data/server/$Rocky_tomcat /data/server/tomcat
cat > /etc/profile.d/tomcat.sh <<EOF
export CATALINA_BASE=/data/server/tomcat
export CATALINA_HOME=/data/server/tomcat
export CATALINA_TMPDIR=$CATALINA_HOME/temp
export CLASSPATH=$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar
export PATH=$CATALINA_HOME/bin:$PATH
EOF
source /etc/profile.d/tomcat.sh
useradd -r -s /sbin/nologin tomcat
chown -R tomcat:tomcat /data/server/tomcat
chown -R tomcat:tomcat /data/server/tomcat/*
if [ $(os_type) == "Rocky" ];then
cat > /usr/lib/systemd/system/tomcat.service <<EOF
[Unit]
Description=Tomcat
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.25.0.9-3.el9.x86_64/
ExecStart=/data/server/tomcat/bin/startup.sh
ExecStop=/data/server/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
EOF
elif [ $(os_type) == "openEuler" ];then
cat > /usr/lib/systemd/system/tomcat.service <<EOF
[Unit]
Description=Tomcat
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.25.9-3.oe2403.x86_64/
ExecStart=/data/server/tomcat/bin/startup.sh
ExecStop=/data/server/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
EOF
else
color "$(os_type) 暂不支持此版本" 3
fi
systemctl daemon-reload
systemctl start tomcat
color "$(os_type) tomcat安装成功" 0
}
# 源码安装tomcat11
install_tomcat11_resource_ubuntu (){
color "$(os_type) 开始安装java环境" 0
apt update > /dev/null 2>&1 && apt install openjdk-17-jdk -y > /dev/null 2>&1
cat > /etc/profile.d/java.sh<<EOF
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$JAVA_BIN:$PATH
EOF
source /etc/profile.d/java.sh
color "$(os_type) java环境安装成功" 0
color "$(os_type) 开始安装tomcat11" 0
cd /data/softs
[ -f $Ubuntu_tomcat11.tar.gz ] && { tar xf $Ubuntu_tomcat11.tar.gz -C /data/server/; } || { color "$Ubuntu_tomcat11.tar.gz 文件不存在,安装失败,退出!" 1 ;exit; }
ln -s /data/server/$Ubuntu_tomcat11 /data/server/tomcat
cat > /etc/profile.d/tomcat.sh <<EOF
export CATALINA_BASE=/data/server/tomcat
export CATALINA_HOME=/data/server/tomcat
export CATALINA_TMPDIR=$CATALINA_HOME/temp
export CLASSPATH=$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar
export PATH=$CATALINA_HOME/bin:$PATH
EOF
source /etc/profile.d/tomcat.sh
useradd -r -s /sbin/nologin tomcat
chown -R tomcat:tomcat /data/server/tomcat
chown -R tomcat:tomcat /data/server/tomcat/*
cat > /usr/lib/systemd/system/tomcat.service <<EOF
[Unit]
Description=Tomcat
After=syslog.target network.target
[Service]
Type=forking
# Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
ExecStart=/data/server/tomcat/bin/startup.sh
ExecStop=/data/server/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start tomcat
color "$(os_type) tomcat11安装成功" 0
}
# 源码安装tomcat9
install_tomcat9_resource_ubuntu (){
color "$(os_type) 开始安装java环境" 0
apt update > /dev/null 2>&1 && apt -y install openjdk-11-jdk > /dev/null 2>&1
cat > /etc/profile.d/java.sh<<EOF
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$JAVA_BIN:$PATH
EOF
source /etc/profile.d/java.sh
color "$(os_type) java环境安装成功" 0
color "$(os_type) 开始安装tomcat9" 0
cd /data/softs
[ -f $Ubuntu_tomcat9.tar.gz ] && { tar xf $Ubuntu_tomcat9.tar.gz -C /data/server/; } || { color "$Ubuntu_tomcat9.tar.gz 文件不存在,安装失败,退出!" 1 ;exit; }
ln -s /data/server/$Ubuntu_tomcat9 /data/server/tomcat
cat > /etc/profile.d/tomcat.sh <<EOF
export CATALINA_BASE=/data/server/tomcat
export CATALINA_HOME=/data/server/tomcat
export CATALINA_TMPDIR=$CATALINA_HOME/temp
export CLASSPATH=$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar
export PATH=$CATALINA_HOME/bin:$PATH
EOF
source /etc/profile.d/tomcat.sh
useradd -r -s /sbin/nologin tomcat
chown -R tomcat:tomcat /data/server/tomcat
chown -R tomcat:tomcat /data/server/tomcat/*
cat > /usr/lib/systemd/system/tomcat.service <<EOF
[Unit]
Description=Tomcat
After=syslog.target network.target
[Service]
Type=forking
# Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
ExecStart=/data/server/tomcat/bin/startup.sh
ExecStop=/data/server/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start tomcat
color "$(os_type) tomcat9安装成功" 0
}
# 定义菜单函数
show_menu_tomcat() {
echo "请选择以下操作:"
echo "1. 源码部署tomcat9环境"
echo "2. 源码部署tomcat11环境"
echo "3. 退出"
read -p "请输入你的选择(1-3): " choice_tomcat
}
# 安装tomcat
install_tomcat (){
mkdir /data/{server,softs,code} -p
cd /data/softs
if [ $(os_type) == "Rocky" ] || [ $(os_type) == "openEuler" ];then
install_tomcat_resource_rocky
elif [ $(os_type) == "Ubuntu" ] ;then
show_menu_tomcat
case $choice_tomcat in
1)
install_tomcat9_resource_ubuntu
;;
2)
install_tomcat11_resource_ubuntu
;;
3)
echo "退出程序"
break
;;
*)
echo "无效的选择,请输入 1 到 3 之间的数字。"
;;
esac
else
color "$(os_type) 暂不支持此版本" 3
fi
color "$(os_type) 源码部署tomcat成功 " 0
}
# 定义菜单函数
show_menu() {
echo "请选择以下操作:"
echo "1. 源码部署JDK环境"
echo "2. 源码部署tomcat环境"
echo "3. 退出"
read -p "请输入你的选择(1-3): " choice
}
main () {
color "$(os_type) 源码部署,请提前上传源码到/data/softs中 " 0
show_menu
case $choice in
1)
install_jdk_resource
;;
2)
install_tomcat
;;
3)
echo "退出程序"
break
;;
*)
echo "无效的选择,请输入 1 到 3 之间的数字。"
;;
esac
}
main
endl
评论