Tomcat8.5版本啓動後無法訪問的問題總結

一、說明

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

 

 

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