如何查看 Apache Tomcat 服务器版本
1. 概述
Apache Tomcat 是一个开源的 Java Servlet 容器和 Web 服务器。它通过在服务器端执行 Java Web 应用程序来创建动态 Web 内容。
在本教程中,我们将讨论如何查找 Tomcat 服务器的版本。示例中使用的 Tomcat 服务器版本为 10.1.52,运行在 Debian 12 发行版上。
2. Web 界面
**我们可以通过在 Web 浏览器中打开 URL *http://localhost:8080*,从运行服务器的节点访问该服务器**:
[LOADING...]
Apache Tomcat 服务器默认运行在 8080 端口上。显然,服务器版本是 10.1.52。如果尝试从远程主机检查,则需要将 URL 中的 localhost 替换为服务器的 IP 地址。
网页的标题为 Apache Tomcat/10.1.52。因此,我们也可以使用 curl 从标题中获取版本信息:
-s 选项通过在输出中跳过进度表,以静默模式运行 curl。我们使用 grep 来过滤响应内容,并仅打印定义网页标题的 HTML <title> 标签。
3. version.sh 脚本
我们可以使用 Tomcat 服务器 bin 目录下的 version.sh 脚本来显示其版本:
在我们的设置中,服务器位于 /opt/tomcat 目录中。该脚本位于 /opt/tomcat/bin 目录中。从输出可以看出,服务器版本为 10.1.52。我们可以通过使用 grep 过滤输出来仅打印服务器版本:
即使服务器没有运行,我们也可以运行此脚本并获取版本信息。
4. catalina.sh 脚本
另一个选择是使用 bin 目录下的 catalina.sh 脚本:
该脚本有多种用途。例如,我们可以用它来启动和停止服务器,因此它接受多个命令。我们传入 version 命令来显示有关服务器的信息。
该脚本的输出与 version.sh 的输出相同。实际上,version.sh 在后台调用了 catalina.sh。就像 version.sh 一样,即使服务器没有运行,我们也可以运行此脚本并获取版本。
我们在 Linux 上运行了 version.sh 和 catalina.sh,但由于 Apache Tomcat 是跨平台服务器,这些脚本也存在于其他操作系统中。例如,我们可以在 Windows 上使用 version.bat 和 catalina.bat。
5. catalina.jar 文件
另一个替代方法是使用 java 命令运行 lib 目录下的 jar 文件 catalina.jar。包含服务器版本的 org.apache.catalina.util.ServerInfo 类就驻留在该 jar 文件中:
输出与前几节中的输出类似。即使服务器没有运行,我们也可以运行此 jar 文件并获取版本。
6. 日志文件
每次服务器启动时,版本都会打印在日志文件的开头。因此,我们可以从日志文件中获取版本:
服务器的日志文件 catalina.out 位于 logs 目录中。我们使用 grep 在日志文件中搜索 "Starting Servlet engine" 表达式。此外,由于日志文件中可能存在多个实例,我们使用 tail 命令(即 tail -1)仅打印最后一个实例。
如果服务器至少启动过一次,则此方法适用。
7. 发行说明
服务器主目录下的 RELEASE-NOTES 文件包含版本信息。因此,我们可以使用 grep 打印该版本:
从输出中可以明显看出,版本是 10.1.52。
8. 通过 Java 应用程序以编程方式获取
也可以从正在运行的 Java 应用程序中检查服务器版本。我们已经了解了如何使用 java 命令从命令行调用 org.apache.catalina.util.ServerInfo 类。我们可以调用该类的静态 getServerInfo() 方法来获取版本:
或者,如果我们正在使用 Servlet,则可以使用 ServletContext 接口中的 getServerInfo() 方法获取运行该 Servlet 的服务器的名称和版本:
此方法不仅适用于 Tomcat 服务器,也适用于其他 Servlet 容器。
9. 结论
在本文中,我们讨论了如何查找 Tomcat 服务器的版本。
首先,我们了解了如何通过 Web 界面获取服务器版本。我们还了解到,可以通过在命令行使用 curl 命令来自动化此方法。
然后,我们讨论了使用多个脚本和文件的方法。这些方法包括使用 version.sh 和 catalina.sh 脚本、catalina.jar 文件、服务器日志文件以及发行说明。根据服务器安装目录的权限,使用这些文件可能需要 root 权限。
最后,我们学习了如何从 Java 应用程序和 Servlet 中获取服务器版本。