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完成身份认证.在 ...
随机推荐
- 【转载】netstat--查看服务器[有效]连接数--统计端口并发数--access.log分析
简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...
- ubuntu下查看-卸载软件(卸载.net core sdk的方法)
查看已安装的包:dpkg --list 查看正则匹配的包:dpkg --list 'dotnet-*' //查看以dotnet-开头的包 卸载匹配的包:sudo apt-get --purge rem ...
- FWT模板
代码来自51nod1570 #include<cstdio> #include<cstring> #include<algorithm> #define MN 50 ...
- UVA10382-Watering Grass-贪心 NYOJ6-喷水装置(一)-贪心
10382 - Watering Grass Time limit: 3.000 seconds n sprinklers are installed in a horizontal strip of ...
- c语言基础学习02_windows系统下的cmd命令
=============================================================================注意:cmd的命令很多,需要用的时候可以查询即 ...
- spring自带定时器
http://www.cnblogs.com/pengmengnan/p/6714203.html 注解模式的spring定时器1 , 首先要配置我们的spring.xmlxmlns 多加下面的内容. ...
- typedef和define具体的详细区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错.例如: #define PI 3.141 ...
- [学习OpenCV攻略][010][写入AVI文件]
cvSize(文件宽度,文件高度) 通过图片或视频文件的宽高得到尺寸信息,返回值是CvSize cvCreateVideoWriter(输出文件名,编码格式,帧率,图像大小) 通过设置输出视频的格式信 ...
- [国嵌笔记][028][Bootloader设计蓝图]
Bootloader的作用就是启动Linux内核 U-Boot简介 1.U-Boot是用于多种嵌入式CPU(ARM.x86.MIPS等)的bootloader程序,U-Boot不仅支持嵌入式Linux ...
- 程序员是这样区分Null和Undefined
Null类型 Null类型是第二个只有一个值的数据类型,这个特殊的值是null.从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null值时会返回"obje ...