简介

通过 Tomcat Host Manager 应用程序,可以在 Tomcat 中创建、删除和管理虚拟主机。 本操作指南最好与以下文档一起使用:

Tomcat Host Manager 应用程序是 Tomcat 安装的一部分, 默认情况下可使用以下上下文: /host-manager。 可以通过以下方式使用主机管理器:

  • 使用图形用户界面,访问地址为 {server}:{port}/host-manager/html

  • 使用一组适合脚本编写的最小 HTTP 请求。访问该模式的网址是 {server}:{port}/host-manager/text

这两种方式都可以添加、删除、启动和停止虚拟主机。 使用 persist 命令可以持久保存更改。本文重点介绍文本界面。 有关图形界面的更多信息,请参阅 Host Manager App — HTML Interface

配置管理器应用程序访问权限

下面的描述使用 $CATALINA_HOME 指代基本 Tomcat 目录。 这是安装 Tomcat 的目录,例如 C:\tomcat9,或 /usr/share/tomcat9

主机管理器应用程序要求用户具有以下角色之一:

  • admin-gui - 图形网络接口使用此角色。

  • admin-script - 将此角色用于脚本网络接口。

要访问 Host Manager 应用程序的文本接口, 要么授予 Tomcat 用户相应的角色,要么创建一个具有正确角色的新用户。 例如,打开 ${CATALINA_BASE}/conf/tomcat-users.xml 并输入以下内容:

<user username="test" password="chang3m3N#w" roles="admin-script"/>

无需进一步设置。现在访问 {server}:{port}/host-manager/text/${COMMAND} 时, 可以使用创建的凭据登录。例如:

$ curl -u ${USERNAME}:${PASSWORD} http://localhost:8080/host-manager/text/list
OK - Listed hosts
localhost:

如果使用的是不同的域,则需要使用该域的标准用户管理工具为相应用户添加必要的角色。

命令列表

支持以下命令:

  • list罗列

  • add添加

  • remove删除

  • start启动

  • stop停止

  • persist持久化

在以下小节中,用户名和密码假定为 test:test。 对于使用的环境,请使用前几节创建的凭据。

罗列命令

使用 list 命令查看 Tomcat 实例上的可用虚拟主机。

命令示例:

响应示例:

OK - Listed hosts
localhost:

添加命令

使用 add 命令添加新虚拟主机。add命令使用的参数:

  • 字符串 name:虚拟主机名称。必须

  • 字符串 aliases: 虚拟主机的别名。

  • 字符串 appBase: 此虚拟主机将提供的应用程序的基本路径。提供相对路径或绝对路径。

  • Boolean manager: 如果为 true,管理器应用程序将添加到虚拟主机。可以使用 /manager 上下文访问它。

  • Boolean autoDeploy(自动部署): 如果为 true,Tomcat 会自动重新部署放置在 appBase 目录中的应用程序。

  • Boolean deployOnStartup(启动时部署): 如果为 true,Tomcat 会在启动时自动部署 appBase 目录中的应用程序。

  • Boolean deployXML:布尔值: 如果为 true,Tomcat 将读取并使用 /META-INF/context.xml 文件。

  • Boolean copyXML: 如果为 true,Tomcat 将复制 /META-INF/context.xml 文件并使用原始副本,而不管应用程序的 /META-INF/context.xml 文件是否更新。

命令示例:

curl -u test:test http://localhost:8080/host-manager/text/add?name=www.awesomeserver.com&aliases=awesomeserver.com&appBase/mnt/appDir&deployOnStartup=true

响应示例:

add: Adding host [www.awesomeserver.com]

删除命令

使用 remove 命令删除虚拟主机。remove命令使用的参数:

  • 字符串 name:要删除的虚拟主机的名称。必须

命令示例:

curl -u test:test http://localhost:8080/host-manager/text/remove?name=www.awesomeserver.com

响应示例:

remove: Removing host [www.awesomeserver.com]

启动命令

使用 start 命令启动虚拟主机。start命令使用的参数:

  • 字符串 name:要启动的虚拟主机的名称。必须

命令示例:

curl -u test:test http://localhost:8080/host-manager/text/start?name=www.awesomeserver.com

响应示例:

OK - Host www.awesomeserver.com started

停止命令

使用 stop 命令停止虚拟主机。stop 命令使用的参数:

  • 字符串 name:要停止的虚拟主机的名称。必须

命令示例:

curl -u test:test http://localhost:8080/host-manager/text/stop?name=www.awesomeserver.com

响应示例:

OK - Host www.awesomeserver.com stopped

持久化命令

使用 persist 命令将虚拟主机持久化到 server.xml。用于persist命令的参数:

  • 字符串 name:要持久化的虚拟主机的名称。必须

默认禁用此功能。要启用此选项,必须先配置 StoreConfigLifecycleListener 监听器。 为此,请在 server.xml 中添加以下监听器:

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

命令示例:

curl -u test:test http://localhost:8080/host-manager/text/persist?name=www.awesomeserver.com

响应示例:

OK - Configuration persisted

手动条目示例:

<Host appBase="www.awesomeserver.com" name="www.awesomeserver.com" deployXML="false" unpackWARs="false">
</Host>