一、介绍
Tomcat manager是Tomcat自带的、使用HTML界面的、管理Tomcat自身以及部署在Tomcat上的应用的web应用。
参考官网:http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html
它支持的功能包括:
-
- 通过war包部署新应用;
- 在服务器上指定的路径部署新应用;
- 列出当前部署的Web应用程序,以及当前这些Web应用程序处于活动状态的会话;
- 重新加载现有Web应用程序,以反映/WEB-INF/classes或/WEB-INF/lib下内容的更改;
- 列出操作系统和JVM属性;
- 列出可用的全局JNDI资源;
- 启动已停止的应用程序;
- 停止现有应用程序,但不取消部署;
- 取消部署已部署的Web应用程序并删除其所在目录文件(除非它是被文件系统部署的)
三种使用方式:
-
- 作为具有用户界面的应用程序,您可以在浏览器中使用。
- HTTP请求,命令作为请求URI的一部分。
- 对于Ant(1.4版或更高版本)构建工具提供一组方便的任务定义。
四种角色:
-
- manager-gui — 访问HTML界面
- manager-status — 只能访问"Server Status"页
- manager-script — 访问本文档中描述的工具友好的纯文本界面,以及“Server Status”页面
- manager-jmx — 访问JMX代理接口和“Server Status”页面
二、使用背景和目的
如何优雅的重新加载重新部署的web应用。有两个并不太优雅的方法可以触发重新加载:
-
- 重启Tomcat:Tomcat启动会加载应用class文件;为了一个应用重启整个容器,效率比较低;
- 在配置文件中,为该应用加上reloadable="true"属性:Tomcat会启动一个守护进程,持续监测应用/WEB-INF/classes或/WEB-INF/lib下内容的更改,若有更新则重新加载;这样显然增加了服务器的负担
那么,比较优雅的方式是通过Tomcat manager,如图所示,每个应用都配备了start/stop/reload等操作按钮,对应用进行管理。
使用背景:
- Tomcat部署在弹性云上申请的容器;
- 希望从本机远程访问容器上部署Tomcat的manager应用;
三、配置
-
修改远程访问限制:修改webapps/manager/META-INF/context.xml和webapps/host-manager/META-INF/context.xml,在<Context>下<Value>属性,可看到allow属性,它用正则表达式表示,默认仅允许本机访问,例如可修改为:
<Context antiResourceLocking="false" privileged="true" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="172.22.27.*" /> <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>
- 添加manager-gui权限的用户:修改conf/tomcat-users.xml,对于默认文件,依次进行如下修改:
- 文件末尾,去掉对<role>和<user>填写示例的注释;
-
配置如下:(注意<tomcat-users>标签头在一坨注释的上面,不要重复添加;配置文件格式错误会导致用户名和密码不生效;)
<role rolename="manager-gui"/> <user name="admin" password="admin" roles="manager-gui"/>
- 重启Tomcat;
-
访问:manager web应用的HTML界面位于:
http://{host}:{port}/manager/html