Tomcat 管理器应用程序和 HTTP 404 错误

Tomcat 管理器应用程序和 HTTP 404 错误

我正在尝试为 Tomcat 6.0.24 实例设置管理应用程序。我所做的所有搜索均未找到任何可以使用的内容。我对 Apache 2.2.14 使用此配置:

Alias /manager /usr/share/tomcat6-admin/manager

<Directory "/usr/share/tomcat6-admin/manager">
        Options Indexes FollowSymLinks
        AllowOverride None
        allow from all
</Directory>

ProxyPass /manager ajp://localhost:8009/manager

在 tomcat-users.xml 中我有这个:

<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="admin"/>
  <role rolename="operator"/>
  <role rolename="manager"/>
  <user username="admin" password="nopasswordforyou" roles="admin,tomcat,manager"/>
  <user username="operator" password="nevermind" roles="operator"/>
</tomcat-users>

我发现文档建议我需要manager-gui安装和定义角色,但这似乎是 Tomcat 7,而不是 Tomcat 6。

manager.xml 是 Ubuntu Lucid Lynx 10.04 默认提供的:

<Context path="/manager" 
        docBase="/usr/share/tomcat6-admin/manager" 
        antiResourceLocking="false" privileged="true" />

如果我/manager从 Web 浏览器访问,我会收到 Tomcat 的 404 错误:“请求的资源不可用”。如果我访问,/manager/images我会得到同样的结果。如果我访问,/manager/401.jsp我会得到实际的页面。

此外,server.xml 不仅具有常用的 Realm ( UserDatabaseRealm),还具有用于 MySQL 身份验证的 Realm ( JDBCRealm)。调查后发现,用户的角色manager不存在admin;我通过执行以下操作解决了该问题:

INSERT USER_ROLE_DB SET USER_NAME='admin', ROLE_NAME='manager';

我重新启动了 Tomcat,尽管我怀疑这有点过头了。没有变化。我没有在 catalina.out 或 localhost.* 日志文件中看到任何错误。

我遗漏了什么?不同领域之间的交互是什么?如何让管理器应用程序运行?

答案1

我遇到了同样的情况,tomcat 管理器无法启动。我在 logs/manager.DDD-MM-YY.log 中发现了此异常:

org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter CSRF
java.lang.ClassNotFoundException: org.apache.catalina.filters.CsrfPreventionFilter
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        ...

引发此异常是因为我使用了没有 CSRF 预防过滤器的 tomcat 版本。

Tomcat 6.0.24 没有 CSRF 预防过滤器。第一个有它的版本是 6.0.30 版本(至少根据更新日志)。

因此,Tomcat Manager 与我使用的 Tomcat 版本不兼容。我发现这个描述这个问题。

修复步骤:

  1. 通过从 tomcat/bin 目录运行“sh version.sh”来检查安装的 tomcat 版本
  2. 下载对应版本的tomcat
  3. 停止 tomcat
  4. 删除您的 webapps/manager 目录并从您下载的分发包中复制管理器应用程序。
  5. 启动 tomcat

现在您应该可以访问 tomcat 管理器了。

答案2

404 的意思是,您没有要访问的文件。我在 Amazon EC2 上安装了 tomcat 7,但收到了 404 消息。默认没有附带管理器包和文档。

sudo yum install tomcat6-webapps tomcat6-docs-webapp tomcat6-admin-webapps

答案3

直接访问/manager/html。对我有用。

答案4

我尝试在 ubuntu 上使用“sudo apt-get install tomcat6-admin”安装 tomcat6-admin,系统提示我软件包已经更新。我决定将 /usr/share/tomcat6-admin/manager 复制到 tomcat6 webapps 目录。现在可以正常工作了。

我不确定为什么安装程序不会将管理器应用程序复制到 webapps 目录。

相关内容