Tomcat(四):tomcat图形管理和身份认证
Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html
tomcat和大多数服务程序的管理不一样,tomcat更适合使用图形管理界面进行管理,例如在不停止tomcat的情况下动态部署新的webapp或重新加载webapp。如果不使用图形管理工具,tomcat虽然也可以配置自动部署(autoDeploy="true"),但我们却无法掌握它重新部署的时刻。
图形管理工具的官方手册:Manager App HOW-TO。
直接在浏览器中输入tomcat所在机器的ip地址及其connector监听端口,即可进入tomcat的图形管理界面,也是欢迎界面。这个欢迎页面是tomcat engine中的默认Host组件localhost提供的页面,该资源的路径为$catalina_home/webapps/ROOT/index.jsp。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">

这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
点击这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>
因此,在各管理程序的身份验证文件中可以直接引用这几个名称。那么如何配置身份验证,使得只有通过验证的用户才能使用这些管理工具?根据前面的错误页面提示,只需在$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>
它要求我们将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>
此处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
下图是虚拟主机的管理页面。

以上是将文件manager.xml或host-manager.xml复制到CATALINA_BASE/conf/Catalina/localhost/下,这是管理所有虚拟主机,如果想要单独管理某虚拟主机,则可以将文件按照$CATALINA_BASE/conf/[enginename]/[hostname]路径进行复制。
Tomcat(四):tomcat图形管理和身份认证的更多相关文章
- 权限管理学习 一、ASP.NET Forms身份认证
说明:本文示例使用的VS2017和MVC5. 系统无论大小.牛逼或屌丝,一般都离不开注册.登录.那么接下来我们就来分析下用户身份认证. 简单实现登录.注销 以前在学习.net的时候不知道什么Forms ...
- 【转】权限管理学习 一、ASP.NET Forms身份认证
[转]权限管理学习 一.ASP.NET Forms身份认证 说明:本文示例使用的VS2017和MVC5. 系统无论大小.牛逼或屌丝,一般都离不开注册.登录.那么接下来我们就来分析下用户身份认证. 简单 ...
- 构建基于分布式SOA架构的统一身份认证体系
摘要:本文充分利用SOA架构松耦合的特点,通过规范统一网络接口实现业务系统整合,既提升系统安全性,又简化资源访问操作,具有重要的理论和现实意义. 统一身份认证旨在将分散在各个信息系统中的用户和权限资源 ...
- java web项目war包部署,使用tomcat对指定接口设置身份认证
先简单说一下需求: 将一个基于springboot2.0开发的java web项目打成war包,通过tomcat部署到一台linux服务器上,项目相关的一些图片等资源也按照一定规则放置在服务器构建好的 ...
- 【转】Tomcat组件生命周期管理
Tomcat组件生命周期管理 Tomcat中Server,Service,Connector,Engine,Host,Context,它们都实现了org.apache.catalina.Lifecyc ...
- 【Tomcat】Tomcat配置与优化(内存、并发、管理)【自己配置】
一.JVM内存配置优化 主要通过以下的几个jvm参数来设置堆内存的: -Xmx512m 最大总堆内存,一般设置为物理内存的1/4 -Xms512m 初始总堆内存,一般将它设置的和最大堆内存一样大,这样 ...
- Nginx+Tomcat关于Session的管理
前言 Nginx+Tomcat对Session的管理一直有了解,但是一直没有实际操作一遍,本文从最简单的安装启动开始,通过实例的方式循序渐进的介绍了几种管理session的方式. nginx安装配置 ...
- springboot(十四):springboot整合shiro-登录认证和权限管理(转)
springboot(十四):springboot整合shiro-登录认证和权限管理 .embody{ padding:10px 10px 10px; margin:0 -20px; border-b ...
- Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(四)
在上一讲中,我们已经完成了一个完整的案例,在这个案例中,我们可以通过Angular单页面应用(SPA)进行登录,然后通过后端的Ocelot API网关整合IdentityServer4完成身份认证.在 ...
随机推荐
- javascript 执行环境细节分析、原理-12
前言 前面几篇说了执行环境相关的概念,本篇在次回顾下 执行环境(Execution context,简称EC,也称执行上下文 ) 定义了变量或者函数有权访问的数据,决定了各自行为,每个执行环境都有一个 ...
- 登陆模块的进化史,带大家回顾java学习历程(一)
一直在想着写点特别点的东西,让有兴趣学编程的人确实能学到点干货,今天就来随意写写. 大家在网上查找资料看到最多的demo估计就是登陆功能的演示了,为何大家偏爱拿登陆来做demo呢?因为行业应用类程序的 ...
- Android开发之漫漫长途 XI——从I到X的小结
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- Codeforces #448 Div2 E
#448 Div2 E 题意 给出一个数组,有两种类型操作: 选定不相交的两个区间,分别随机挑选一个数,交换位置. 查询区间和的期望. 分析 线段树区间更新区间求和. 既然是涉及到两个区间,那么对于第 ...
- Java与算法之(6) - 八皇后问题
在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. (文字和图片来自百度百科) 如果动手来摆放皇后,可以用这样一种思路:在最左侧 ...
- Java模拟http上传文件请求(HttpURLConnection,HttpClient4.4,RestTemplate)
先上代码: public void uploadToUrl(String fileId, String fileSetId, String formUrl) throws Throwable { St ...
- echarts饼图点击事件
/** * 点击事件 */myChart2.on('click', function (param) { var index = param.dataIndex; alert(index);});
- (转)Docker之Compose服务编排
转自:https://www.cnblogs.com/52fhy/p/5991344.html Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过 ...
- [bzoj1227] [SDOI2009]虔诚的墓主人
终于填上了这个万年巨坑....从初二的时候就听说过这题...然后一直不敢写QAQ 现在感觉也不是很烦(然而我还是写麻烦了 离散化一波,预处理出组合数什么的.. 要维护对于当前行,每列上方和下方节点凑出 ...
- POJ2407-Relatives-欧拉函数
欧拉函数: 对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目. 对于一个正整数N的素数幂分解N=P1^q1*P2^q2*...*Pn^qn. Euler函数表达通式:euler(x)=x(1 ...