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

 

 

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