标签搜索

源码安装tomcat脚本rocky/ubuntu

lilymaxyz
2025-04-30 / 0 评论 / 26 阅读 / 正在检测是否收录...

源码安装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

0

评论

博主关闭了所有页面的评论