實現tomcat簡便多項目,ssl部署

 

1. 準備tomcat版本與jdk版本

   tomcat版本:apache-tomcat-8.5.38.tar.gz

   jdk版本:jdk-8u121-linux-x64.tar.gz

  部署腳本:tomcatconfig.sh

  ssl以及tomcat配置目錄 config

2. 腳本

#!/bin/bash

tomcatzip=apache-tomcat-8.5.38.tar.gz
tomcatName=apache-tomcat-8.5.38
jdkzip=jdk-8u121-linux-x64.tar.gz
configfile=config
jdkfile=jdk1.8.0_121
project=""
pNum=0
childProject=""

function checkJdkConfig(){
    echo `pwd`
    if [ -d `pwd`/$jdkfile ]; then
        echo "JDK文件夾不存在,請檢查JDK配置是否存在"
    else
        echo "JDK文件夾不存在,創建中........"
        if [ -f `pwd`/$jdkzip ]; then
           echo "JDK壓縮包存在,解壓中"
           tar -xf `pwd`/$jdkzip
           echo "JDK解壓中完成,進入下一步"
        else
           echo "JDK壓縮包不存在,請檢查壓縮包是否存在"
           exit 1
        fi
    fi
}

function checkTomcatConfig(){
    echo `pwd`
    if [ -f `pwd`/$tomcatzip ]; then
        echo "$tomcatzip 已存在"
    else
        echo "$tomcatzip 不存在,請檢查壓縮包是否存在"
        exit 1
    fi
}

function checkConfig(){
    checkJdkConfig
    checkTomcatConfig
    buildProject
}

function buildProject(){
    read -p "請輸入項目名: " projectName
    project="$projectName"
    echo $project
    makeAdmindir
    read -p "請輸入子項目個數: " projectNum
    pNum="$projectNum"
    echo $pNum

    makeChildren
}

function makeAdmindir(){
    if [ -d `pwd`/$project ]; then
        echo "`pwd`/$project 項目已經存在,下一步,創建子項目"
    else
        mkdir `pwd`/$project
        echo "$project已創建 下一步,創建子項目"
    fi
}

function makeChildren(){
    for((i=1;i<=$pNum;i++));
    do

        read -p "請輸入子項目名: " childName
        childProject="$childName"
        cpath="`pwd`/$project/$childProject"
        if  [ -d `pwd`/$project/$childProject ]; then
            echo "`pwd`/$project/$childProject已存在,下一步,配置環境"
        else
            tar -xf `pwd`/$tomcatzip -C `pwd`/$project
            mv `pwd`/$project/$tomcatName $cpath
            chmod 777 -R $cpath
            echo "$project創建完成 下一步,配置環境"
        fi

        cp -r `pwd`/config/common/* $cpath/bin/

        read -p "是否支持ssl[yes/no]: " https
        echo $https
        if [ $https = "yes" ]; then
            cp -r `pwd`/config/https/* $cpath/conf/
        else
            cp -r `pwd`/config/http/* $cpath/conf/
            echo "$project創建完成 下一步,配置環境"
        fi  
        echo "相關文件準備完善,開始配置參數" 
        echo "設置setclasspath.sh中JDK參數,設置中.........." 
        jdkpath="`pwd`/$jdkfile"
        echo $jdkpath
        sed -i -e "s#project_jdk#$jdkpath#g" $cpath/bin/setclasspath.sh
        echo "設置setclasspath.sh中JDK參數,設置完成,路徑爲:`pwd`/$jdkfile"

        echo "設置catalina.sh中路徑參數,設置中.........."
        
        sed -i -e "s#project_path#$cpath#g" $cpath/bin/catalina.sh

        read -p "是否支持本地上傳:[yes/no]: " upload
        echo $upload
        if [ $upload = "yes" ]; then
            sed -i -e "s/project_photo/0022/g" $cpath/bin/catalina.sh
            echo "設置本地上傳參數成功"  
        else
            sed -i -e "s/project_photo/0027/g" $cpath/bin/catalina.sh
        fi  

        echo "設置catalina.sh中路徑參數,設置完成,路徑爲:`pwd`/$project/$childProject"  
        
        echo "設置server.xml中SHUTDOWN端口,路徑$cpath/conf/server.xml" 
        read -p "請設置shutdown端口 :" shutdownPort
        if [ $shutdownPort -eq 0 ]; then
            echo "設置shutdown端口"  
            exit 1
        else
            sed -i -e "s/project_8005/$shutdownPort/g" $cpath/conf/server.xml
        fi 

        echo "設置server.xml中tomcat啓動端口,路徑$cpath/conf/server.xml" 
        read -p "請設置tomcat端口: " tomcatPort
        if [ $tomcatPort -eq 0 ]; then
            echo "設置tomcat端口"  
            exit 1
        else
            sed -i -e "s/project_8080/$tomcatPort/g" $cpath/conf/server.xml
        fi    

        if [ $https = "yes" ]; then
            echo "設置server.xml中https啓動端口,路徑$cpath/conf/server.xml"
            read -p "請設置https端口: " httpsPort
            if [ $httpsPort -eq 0 ]; then
                echo "設置https端口"  
                exit 1
            else
                sed -i -e "s/project_8443/$httpsPort/g" $cpath/conf/server.xml
            fi  

            echo "設置server.xml中ssl證書路徑,路徑$cpath/conf/server.xml"
            read -p "請設置ssl密碼: " sslpasswd
            if [ $sslpasswd = "" ]; then
                echo "請設置ssl密碼"  
                exit 1
            else
                sed -i -e "s/project_passwd/$sslpasswd/g" $cpath/conf/server.xml
            fi  

            sed -i -e "s#project_path#$cpath#g" $cpath/conf/server.xml
            echo "證書路徑設置完成"

            read -p "請設置域名: " netName
            if [ $netName = "" ]; then
                echo "請設置域名"  
                exit 1
            else
                sed -i -e "s/project_localhost/$netName/g" $cpath/conf/server.xml
            fi  

            echo "域名設置完成"
        else
            sed -i -e "s/project_8443/8443/g" $cpath/conf/server.xml
        fi 

        echo "設置server.xml中AJP啓動端口,路徑$cpath/conf/server.xml" 
        read -p "請設置AJP端口: " AJPPort
        if [ $AJPPort -eq 0 ]; then
            echo "設置AJP端口"  
            exit 1
        else
            sed -i -e "s/project_8009/$AJPPort/g" $cpath/conf/server.xml
        fi

        echo "設置server.xml中熱部署,路徑$cpath/conf/server.xml" 
        read -p "請設置熱部署文件夾名稱: " hotConfig
        if [ $hotConfig != "" ]; then
            hotinfo="$cpath/webapps/$hotConfig"
            sed -i -e "s#project_hot#$hotinfo#g" $cpath/conf/server.xml
        fi
    done
}

checkConfig

3. 準備tomcat配置文件

config/common config/http config/https

common 裏面文件配置文件catalina.sh setclasspath.sh來自於原始文件

catalina.sh 新增 設置tomcat環境:

export JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/shanghai"

# myself : add
export CATALINA_BASE=project_path
export CATALINA_HOME=project_path
export TOMCAT_HOME=project_path

 catalina.sh 新增 設置tomcat圖片上傳權限:

# Set UMASK unless it has been overridden
if [ -z "$UMASK" ]; then
    UMASK="project_photo"
fi
umask $UMASK

 setclasspath.sh 設置jdk環境

export JAVA_HOME=project_jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:%{JAVA_HOME}/lib:%{JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

http裏面配置server.xml  

http裏面配置server.xml  web.xml

如果是https web.xml新增

  <security-constraint>
    <!-- Authorization setting for SSL -->
    <web-resource-collection >
        <web-resource-name >SSL</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
  </security-constraint>

server.xml 修改如下:

設置關閉端口:

<Server port="project_8005" shutdown="SHUTDOWN">

設置http端口:

    <Connector port="project_8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="project_8443" />

設置https端口:

    <Connector port="project_8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               scheme="https" secure="true" connectionTimeout="30000"  maxThreads="30000" SSLEnabled="true"
               keystoreFile="project_path/tomcat.keystore" keystorePass="project_passwd"
                clientAuth="false" sslProtocol="TLS">
    </Connector>

設置AJP端口:

  <Connector port="project_8009" protocol="AJP/1.3" redirectPort="project_8443" />

設置域名:

    <Engine name="Catalina" defaultHost="project_localhost">

      <Host name="project_localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

設置熱部署:在host下面:

        <Context docBase="project_hot" path="" reloadable="true" />

4.以上目錄同級啓動

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章