Tomcat Manager App 指南

1.简介

在本教程中,我们将深入了解 Tomcat 管理器应用程序。

简而言之,Tomcat Manager App 是一个与 Tomcat 服务器打包在一起的 Web 应用程序,它为我们提供了管理已部署的 Web 应用程序所需的基本功能。

正如我们将要看到的,该应用程序具有许多功能和服务。除了允许我们管理已部署的应用程序外,我们还可以查看服务器及其应用程序的状态和配置。

2.安装Tomcat

在深入研究 Tomcat Manager App 之前,我们首先需要安装一个 Tomcat 服务器。

幸运的是,安装 Tomcat 是一个简单的过程。请参阅我们的 Apache Tomcat 简介指南以获取安装 Tomcat 的帮助。在本教程中,我们将使用最新的Tomcat 9 版本

3. 访问Tomcat Manager App

现在,让我们看看如何使用Tomcat Manager App。我们在这里有两个选择——我们可以选择使用基于 Web (HTML) 的应用程序或基于文本的 Web 服务。

基于文本的服务非常适合编写脚本,而 HTML 应用程序是为人类设计的。

基于Web 的应用程序可在以下位置获得:

  • http[s]://<服务器>:<端口>/manager/html/

虽然相应的文本服务可在以下位置获得:

  • http[s]://<服务器>:<端口>/manager/text/

但是,在我们可以访问这些服务之前,我们需要配置 Tomcat。默认情况下,它只能由具有正确权限的用户访问。

让我们继续通过编辑conf/tomcat-users文件添加此类用户:

<tomcat-users>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <user username="tomcatgui" password="s3cret" roles="manager-gui"/>
  <user username="tomcattext" password="baeldung" roles="manager-script"/>
</tomcat-users>

如我们所见,我们添加了两个新用户:

  • tomcatgui – 具有manager-gui角色,可以使用基于 Web 的应用程序
  • tomcattext – 具有管理脚本角色,可以使用基于文本的 Web 服务

在下一节中,我们将了解如何使用这两个用户来演示 Tomcat 管理器应用程序的功能。

4. 列出当前部署的应用程序

在本节中,我们将学习如何查看当前部署的应用程序列表。

4.1。使用网络

让我们打开http://localhost:8080/manager/html/来查看 Tomcat Manager App 网页。为此,我们需要以tomcatgui用户身份进行身份验证。

登录后,网页会在页面顶部列出所有已部署的应用程序。对于每个应用程序,我们可以查看它是否正在运行、上下文路径以及活动会话的数量。我们还可以使用几个按钮来管理应用程序:

 

4.2. 使用文本服务

或者,我们可以使用文本 Web 服务列出所有已部署的应用程序。这次我们使用tomcattext用户发出curl请求进行身份验证:

curl -u tomcattext:baeldung http://localhost:8080/manager/text/list

就像网页一样,响应显示所有已部署的应用程序及其当前状态和活动会话数。例如,我们可以看到管理器应用程序正在运行并且有一个活动会话:

OK - Listed applications for virtual host [localhost]
/:running:0:ROOT
/examples:running:0:examples
/host-manager:running:0:host-manager
/manager:running:1:manager
/docs:running:0:docs

5. 管理应用程序

Tomcat 管理器应用程序允许我们执行的关键功能之一是停止、启动和重新加载应用程序。

5.1。使用网络

对于 Web 应用程序,停止和启动应用程序只需单击网页上的按钮即可。结果和任何问题都会在页面顶部的消息字段中报告。

5.2. 使用文本服务

同样,我们可以使用文本服务停止和启动应用程序。让我们停止然后使用curl请求启动示例应用程序:

curl -u tomcattext:baeldung http://localhost:8080/manager/text/stop?path=/examples
OK - Stopped application at context path [/examples]
curl -u tomcattext:baeldung http://localhost:8080/manager/text/start?path=/examples
OK - Started application at context path [/examples]

路径查询参数指示要管理哪个应用程序,并且必须与应用程序的上下文路径匹配。

我们还可以重新加载应用程序以获取对类或资源的更改。但是,这仅适用于解压缩到目录中且未部署为 WAR 文件的应用程序。

以下是我们如何使用文本服务重新加载docs应用程序的示例:

curl -u tomcattext:baeldung http://localhost:8080/manager/text/reload?path=/docs
OK - Reloaded application at context path [/docs]

但是请记住,我们只需要单击重新加载按钮即可在 Web 应用程序中实现相同的功能。

6. 到期会话

除了管理应用程序,我们还可以管理用户会话。Tomcat Manager App 显示当前用户会话的详细信息,并允许我们手动使会话过期。

6.1。通过网络界面

我们可以通过点击所有列出的应用程序的会话列中的链接来查看当前用户会话。

在下面的示例中,我们可以看到管理器应用程序有两个用户会话。它显示会话的持续时间、不活动的时间以及过期的时间(默认为 30 分钟)。

我们还可以通过选择会话并选择Invalidate selected sessions来手动销毁会话:

 

在主页上,有一个Expire sessions按钮。这也会破坏在指定分钟内空闲的会话。

6.2. 通过文本 Web 服务

同样,文本服务等价物很简单。

要查看当前用户会话的详细信息,我们使用我们感兴趣的应用程序的上下文路径调用会话端点。在此示例中,我们可以看到管理器应用程序当前有两个会话:

curl -u tomcattext:baeldung "http://localhost:8080/manager/text/sessions?path=/manager"
OK - Session information for application at context path [/manager]
Default maximum session inactive interval is [30] minutes
Inactive for [2 - <3] minutes: [1] sessions
Inactive for [13 - <14] minutes: [1] sessions

如果我们想销毁非活动用户会话,那么我们使用expire端点。在此示例中,我们为管理器应用程序过期超过 10 分钟的非活动会话:

curl -u tomcattext:baeldung "http://localhost:8080/manager/text/expire?path=/manager&idle=10"
OK - Session information for application at context path [/manager]
Default maximum session inactive interval is [30] minutes
Inactive for [5 - <6] minutes: [1] sessions
Inactive for [15 - <16] minutes: [1] sessions
Inactive for [>10] minutes: [1] sessions were expired

7. 部署应用程序

现在我们已经了解了如何管理我们的应用程序,让我们看看如何部署新的应用程序。

首先,请下载 Tomcat示例WAR,以便我们部署一个新应用程序。

7.1。使用网络

现在,我们有几个选项可以使用网页部署我们的新示例 WAR。最简单的方法是上传示例 WAR 文件并进行部署

 

WAR 使用与WAR 名称匹配的上下文路径进行部署。如果成功,示例应用程序将被部署、启动并显示在应用程序列表中。如果我们按照上下文路径中的/sample链接,我们可以查看正在运行的示例应用程序:

 

为了我们可以再次部署相同的应用程序,让我们单击Undeploy按钮。顾名思义,这将 取消部署应用程序。请注意,这也会删除已部署应用程序的所有文件和目录。

接下来,我们可以通过指定文件路径来部署示例 WAR 文件。我们指定 WAR 文件的文件路径 URI 或解压后的目录加上上下文路径。在我们的例子中,示例 WAR 位于/tmp目录中,我们将上下文路径设置为/sample

 

或者,我们可以指定XML 部署描述符的文件路径。这种方法允许我们指定影响应用程序部署和运行方式的附加属性。在下面的示例中,我们正在部署示例 WAR 应用程序并使其可重新加载。

请注意,部署描述符中指定的任何路径都将被忽略。上下文路径取自部署描述符的文件名。查看通用属性以了解原因,以及所有其他可能属性的描述:

<Context docBase="/tmp/sample.war" reloadable="true" />

 

7.2. 使用文本服务

现在让我们看看使用文本服务部署应用程序。

首先,让我们取消部署我们的示例应用程序

curl -u tomcattext:baeldung "http://localhost:8080/manager/text/undeploy?path=/sample"
OK - Undeployed application at context path [/sample]

再次部署它,我们指定示例 WAR 文件的上下文路径和位置 URI:

curl -u tomcattext:baeldung "http://localhost:8080/manager/text/deploy?path=/sample&war=file:/tmp/sample.war"
OK - Deployed application at context path [/sample]

此外,我们还可以使用 XML 部署描述符部署应用程序:

curl -u tomcattext:baeldung "http://localhost:8080/manager/text/deploy?config=file:/tmp/sample.xml"
OK - Deployed application at context path [/sample]

8. 查看 SSL 配置

我们需要在 Tomcat 中启用 SSL,然后才能看到任何 SSL 配置。首先,让我们在 Tomcat 的conf目录中创建一个带有自签名证书的新证书 Keystore :

keytool -genkey -alias tomcat -keyalg RSA -keystore conf/localhost-rsa.jks

接下来,我们更改conf/tomcat-server.xml文件以在 Tomcat 中启用 SSL 连接器:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="conf/localhost-rsa.jks" type="RSA" />
    </SSLHostConfig>
</Connector>

重新启动 Tomcat 后,我​​们发现它在 8443 端口上安全运行!

8.1。使用网络

让我们打开https://localhost:8443/manager/html再次查看 Tomcat Manager App。它应该看起来完全一样。

我们现在可以使用Diagnostics下的按钮查看我们的 SSL 配置:

 

  • 密码按钮显示 Tomcat 理解的所有 SSL密码
  • 接下来,“证书”按钮显示我们的自签名证书的详细信息
  • 最后,Trusted Certificates按钮显示受信任的 CA 证书详细信息;在我们的示例中,它没有显示任何感兴趣的内容,因为我们没有添加任何受信任的 CA 证书

此外,SSL 配置文件可以随时动态重新加载。我们可以通过输入主机名重新加载每个虚拟主机。否则,将重新读取所有配置:

 

8.2. 使用文本服务

同样,我们可以使用文本服务获得相同的信息。我们可以查看全部:

  • 使用sslConnectorCiphers资源的 SSL 密码:
curl -ku tomcattext:baeldung "https://localhost:8443/manager/text/sslConnectorCiphers"
  • 使用sslConnectorCerts资源的证书:
curl -ku tomcattext:baeldung "https://localhost:8443/manager/text/sslConnectorCerts"
  • 使用sslConnectorTrustedCerts资源的可信证书:
curl -ku tomcattext:baeldung "https://localhost:8443/manager/text/sslConnectorTrustedCerts"

可以使用以下方式重新加载SSL配置:

curl -ku tomcattext:baeldung "https://localhost:8443/manager/text/sslReload"
OK - Reloaded TLS configuration for all TLS virtual hosts

注意curl命令中的-k选项,因为我们使用的是自签名证书。

9. 查看服务器状态

Tomcat Manager App 还向我们展示了服务器的状态和已部署的应用程序。当我们想要查看整体使用统计信息时,这些页面特别方便。

如果我们点击右上角的服务器状态链接,我们会看到服务器的详细信息。Complete Server Status链接显示有关应用程序的其他详细信息:

 

没有相应的文字服务。但是,我们可以修改 Server Status链接以查看 XML 中的服务器状态。不幸的是 ,根据我们使用的 Tomcat 版本,对Complete Server Status链接执行相同操作可能会也可能不会起作用。

10. 保存配置

文本服务允许我们将当前配置保存到 Tomcat conf/server.xml中。如果我们更改了配置并希望将其保存以备后用,这将非常有用。

值得庆幸的是,这也备份了以前的conf/server.xml,尽管任何以前的注释都可能在新的conf/server.xml配置文件中被删除。

但是,在我们这样做之前,我们需要添加一个新的监听器。编辑conf/server.xml并将以下内容添加到现有侦听器列表的末尾:

<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener" />

重新启动 Tomcat 后,我​​们可以使用以下命令保存配置:

curl -u tomcattext:baeldung "http://localhost:8080/manager/text/save"
OK - Server configuration saved

11. 诊断

最后,让我们看看 Tomcat Manager App 提供的其他诊断功能。

11.1。线程转储

我们可以使用文本服务来获取正在运行的 Tomcat 服务器的线程转储:

curl -u tomcattext:baeldung "http://localhost:8080/manager/text/threaddump"
OK - JVM thread dump
2019-10-06 23:19:10.066
Full thread dump Java HotSpot(TM) 64-Bit Server VM (11.0.3+12-LTS mixed mode):
...

这在我们需要分析或查找导致性能问题的线程时特别有用,例如长时间运行或死锁的线程。

11.2. 查找内存泄漏

Tomcat 通常在防止内存泄漏方面做得很好。但是当我们确实怀疑内存泄漏时,Tomcat Manager App 有一个内存泄漏检测服务来帮助我们。它执行完整的垃圾回收并检测自上次重新加载应用程序以来仍驻留在内存中的任何类。

我们只需要在网页上运行Find Leaks按钮来检测泄漏。

同样,文本服务可以运行内存泄漏检测:

curl -u  tomcattext:baeldung "http://localhost:8080/manager/text/findleaks?statusLine=true"
OK - No memory leaks found

11.3. 显示可用资源

文本服务提供可用资源的列表。在这个例子中,我们看到我们有一个可用的内存数据库:

curl -u tomcattext:baeldung "http://localhost:8080/manager/text/resources"
OK - Listed global resources of all types
UserDatabase:org.apache.catalina.users.MemoryUserDatabase

12. 结论

在本文中,我们详细了解了 Tomcat 管理器应用程序。我们首先安装应用程序并了解如何通过为两个不同的用户配置权限来授予访问权限。

然后我们探索了几个使用基于 Web 的应用程序和基于文本的 Web 服务的示例。我们看到了如何使用各种方法查看、管理和部署应用程序。然后我们看看如何查看服务器的配置和状态。

要了解有关 Tomcat 管理器应用程序的更多信息,请查看在线文档

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值