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.以上目錄同級啓動