Tomcat(四):tomcat图形管理和身份认证
tomcat 和大多数服务程序的管理不一样,tomcat 更适合使用图形管理界面进行管理,例如在不停止 tomcat 的情况下动态部署新的 webapp 或重新加载 webapp。如果不使用图形管理工具,tomcat 虽然也可以配置自动部署(autoDeploy="true"),但我们却无法掌握它重新部署的时刻。
图形管理工具的官方手册:Manager App HOW-TO (opens new window)。
直接在浏览器中输入 tomcat 所在机器的 ip 地址及其 connector 监听端口,即可进入 tomcat 的图形管理界面,也是欢迎界面。这个欢迎页面是 tomcat engine 中的默认 Host 组件 localhost 提供的页面,该资源的路径为$catalina_home/webapps/ROOT/index.jsp。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
2
这 3 个按钮对应的是 tomcat 默认就安装好的 3 个管理工具:状态查看工具、webapp 管理工具(非常重要)和虚拟主机管理工具。其中前 2 个工具都由名为 manager 的 webapp 提供,第三个工具由名为 host-manager 的 webapp 提供,因此后文将认为只提供了两个管理程序:manager 和 host-manager。它们的路径都在 webapps 目录下。
[root@xuexi tomcat]# ls webapps/
docs examples host-manager manager ROOT
2
点击这 3 个按钮,分别可以进入对应的管理界面。但第一次点击,会出现"403 Access denied"错误,并提示要去配置 conf/tomcat-users.xml,添加相应权限的角色。
对于这两个管理程序而言,总共有以下几种预定义角色:其中后两项角色是上一图中"Host Manager"需要的角色。
- manager-gui - allows access to the HTML GUI and the status pages
- manager-script - allows access to the text interface and the status pages
- manager-jmx - allows access to the JMX proxy and the status pages
- manager-status - allows access to the status pages only
- admin-gui - allows access to the HTML GUI
- admin-script - allows access to the text interface
对于使用 manager-gui 角色的用户,强烈建议不要再为其赋予 manager-script 和 manager-jmx 角色。
这些角色名称 rolename 已经预定义在各管理程序内的 web.xml 中:
[root@xuexi tomcat]# grep 'role-name' webapps/manager/WEB-INF/web.xml
<role-name>manager-gui</role-name>
<role-name>manager-script</role-name>
<role-name>manager-jmx</role-name>
<role-name>manager-gui</role-name>
<role-name>manager-script</role-name>
<role-name>manager-jmx</role-name>
<role-name>manager-status</role-name>
<role-name>manager-gui</role-name>
<role-name>manager-script</role-name>
<role-name>manager-jmx</role-name>
<role-name>manager-status</role-name>
[root@xuexi tomcat]# grep 'role-name' webapps/host-manager/WEB-INF/web.xml
<role-name>admin-script</role-name>
<role-name>admin-gui</role-name>
<role-name>admin-gui</role-name>
<role-name>admin-script</role-name>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
因此,在各管理程序的身份验证文件中可以直接引用这几个名称。那么如何配置身份验证,使得只有通过验证的用户才能使用这些管理工具?根据前面的错误页面提示,只需在$catalina_home/conf/tomcat-user.xml 中配置即可。
例如,使用预定义好的角色进行配置。
<user username="malongshuai" password="123456" roles="manager-gui,admin-gui"/>
再重启 tomcat 即可。但是,这样的配置在 tomcat 7 版本能成功,在 tomcat8 上不会成功。查看 catalina.home 下的.RUNING 文件,提示如下内容:
For example, the standard manager web application can be kept in
CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by using
the following trick:
* Copy the CATALINA_HOME/webapps/manager/META-INF/context.xml
file as CATALINA_BASE/conf/Catalina/localhost/manager.xml
* Add docBase attribute as shown below.
The file will look like the following:
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="${catalina.home}/webapps/manager"
antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1" />
</Context>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
它要求我们将 CATALINA_HOME/webapps/manager/META-INF/context.xml 复制到 CATALINA_BASE/conf/Catalina/localhost/manager.xml,并修改其内容。既然知道了操作过程,所以在 tomcat 8 中也就不用去复制了,这里直接创建文件并向里面写入内容即可,注意文件名一定不能错误。
[root@xuexi tomcat]# mkdir -p conf/Catalina/localhost
[root@xuexi tomcat]# cat conf/Catalina/localhost/manager.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="${catalina.home}/webapps/manager"
antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="^.*$" />
</Context>
2
3
4
5
6
7
8
此处 allow 定义的是允许所有主机访问此管理状态页面。还可以使用allow="127\.0\.0\.1"
定义只有本机才能访问,allow="192\.168\.100.*"
定义只有 192.168.100 网段的主机才能访问。
定义了 manager.xml 文件后,也仅能访问前两个页面,因为前两个页面是 manager 程序提供的,访问时需要在 uri 中使用/manager,或直接点击上面的按钮。以下是管理 webapp 的图形管理工具页面,从图中可以看出,可以轻松管理某个 webapp 的启动、停止、部署、重新部署、部署本地项目等。
第三个页面是管理虚拟主机的图形页面,访问时的 uri 部分是/host-manager。但要使用它,也需要将 context.xml 复制到特定路径下,并修改一点内容。如下:
[root@xuexi tomcat]# cp conf/Catalina/localhost/manager.xml conf/Catalina/localhost/host-manager.xml
[root@xuexi tomcat]# sed -i s/manager/host-manager/ conf/Catalina/localhost/host-manager.xml
2
下图是虚拟主机的管理页面。
以上是将文件 manager.xml 或 host-manager.xml 复制到 CATALINA_BASE/conf/Catalina/localhost/下,这是管理所有虚拟主机,如果想要单独管理某虚拟主机,则可以将文件按照$CATALINA_BASE/conf/[enginename]/[hostname]
路径进行复制。
- 01
- idea 热部署插件 JRebel 安装及破解,不生效问题解决04-10
- 02
- spark中代码的执行位置(Driver or Executer)12-12
- 03
- 大数据技术之 SparkStreaming12-12