一、說明
Tomcat版本:Apache Tomcat/8.5.41
部署環境:CentOS Linux release 7.4
場景:單機多實例部署應用(操作步驟在“附一”中介紹)
前提:以下問題及解決方案均以tomcat啓動成功爲前提
二、問題
1、應用tomcat啓動後無法通過IP+端口的形式訪問Tomcat的歡迎界面
2、進行Tomcat歡迎界面後,點擊“Manager App”,訪問被拒絕,報錯“403 Access Denied”
3、應用tomcat映射服務器目錄,訪問時報404錯誤
三、問題解決
1、無法進入Tomcat歡迎界面的問題解決
使用的是單機多實例配置,很可能像我一樣忘記拷貝webapps目錄下的文件到應用tomcat,因爲通過IP+端口的形式訪問,實際上請求的是webapps/ROOT/index.jsp。
2、點擊tomcat管理頁面下的Server Status、Manager App、Host Manager,訪問被拒絕
(1)首先,在tomcat的conf/tomcat-user.xml中的<tomcat-users>標籤下需要配置內容如下示例:
<role rolename="manager-gui"/>
<user username="tomcat" password="wolfword" roles="manager-gui "/>
(2)如果此時仍然出現403 Access Denied錯誤,很可能是訪問的IP受限。打開/webapps/manager/META-INF/目錄下context.xml文件,將下面的內容刪除或註釋掉:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
同理,訪問“Host Manager”修改同上。
3、配置了目錄映射,通過tomcat實現簡單文件訪問,但訪問時報404錯誤
修改tomcat的conf/web.xml中<servlet>標籤下,名爲“listings”的屬性值爲true即可。
附一:單機多實例部署
閱讀以下內容需要對tomcat的部署有一定的瞭解,因爲我描述得會比較簡單。
1、下載並解壓tomcat到安裝目錄
2、在某個目錄下創建應用tomcat目錄,比如tomcat1、tomcat2、tomcat3……
3、分別拷貝tomcat安裝目錄下的conf文件到應用tomcat目錄(用於不同的實例配置),修改server.xml中的相關端口號
4、分別拷貝tomcat安裝目錄下的webapps文件到應用tomcat目錄(否則啓動後無法訪問tomcat主頁界面)
5、分別在應用tomcat目錄下創建bin目錄,並編寫startup.sh和shutdown.sh腳本,內容可參考如下:
(1)startup.sh
#!/bin/bash
export JRE_HOME=/usr/local/tools/java/jdk1.8.0_161/jre
export CATALINA_HOME=/tomcat/tomcat_base
export CATALINA_BASE="/tomcat/tomcat_8000_file"
export CATALINA_TMPDIR="$CATALINA_BASE/temp"
export CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid"
export JAVA_OPTS="-server -Xms512m -Xmx1024m -Djava.awt.headless=true -Dtomcat.name=tomcat_8000_file"
#創建logs目錄
if [ ! -d "$CATALINA_BASE/logs" ]; then
mkdir $CATALINA_BASE/logs
fi
#創建temp目錄
if [ ! -d "$CATALINA_BASE/temp" ]; then
mkdir $CATALINA_BASE/temp
fi
# 調用tomcat啓動腳本
bash $CATALINA_HOME/bin/startup.sh "$@"
(2)shutdown.sh
#!/bin/bash
export JRE_HOME=/usr/local/tools/java/jdk1.8.0_161/jre
export CATALINA_HOME=/tomcat/tomcat_base
export CATALINA_BASE="/tomcat/tomcat_8000_file"
export CATALINA_TMPDIR="$CATALINA_BASE/temp"
export CATALINA_PID="$CATALINA_BASE/bin/tomcat.pid"
bash $CATALINA_HOME/bin/shutdown.sh "$@"
6、添加shell文件的執行權限後執行啓動、停止
附二:Tomcat 8.5版本文件上傳後無權限訪問
業務:文件上傳下載
場景:tomcat升級到8.5版本後,下載文件報錯“403 Forbidden”
如果之前的版本訪問正常,多半是tomcat8.5的umask導致的。tomcat 8.5的catalina.sh中搜索 umask關鍵字,找到如下內容
# Set UMASK unless it has been overridden
if [ -z "$UMASK" ]; then
UMASK="0027"
fi
umask $UMASK
umask 0027的對應的目錄權限是750,文件權限是640。
輸入umask命令,顯示0022,即系統默認文件權限,其目錄權限爲755,文件權限爲644;如果系統默認umask爲0002,其目錄權限爲775,文件權限爲664。
較低版本的tomcat,默認umask爲0022,升級到8.5版本後,umask的設值導致了以上問題,可將catalina.sh中相應值改爲0022,問題解決。
注:
1、關於linux權限相關知識請自行了解
2、文件默認權限:umask的相關知識自行了解
3、umask值和目錄權限之間的關係,除了umask的第1位,各位數字相加等於7