我正在尝试为 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 版本不兼容。我发现这个描述这个问题。
修复步骤:
- 通过从 tomcat/bin 目录运行“sh version.sh”来检查安装的 tomcat 版本
- 下载对应版本的tomcat
- 停止 tomcat
- 删除您的 webapps/manager 目录并从您下载的分发包中复制管理器应用程序。
- 启动 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 目录。