Tomcat6.0 管理器配置
最近忙着毕业答辩,填写材料,好多事情都给耽搁了!一个月都没有继续翻译tomcat,这回有点时间赶紧补上。 这部分,其实对开发者或者tomcat管理者来说,只要会登录页面管理器或者使用写简单的http就可以了,如果想要通过java方法调用,那还需要看一些API: 这里就简单介绍下如何通过页面进行tomcat的管理。
Tomcat管理器是什么?
tomcat经过不断的沉淀,不仅仅是个JSP和Servlet的容器,它也可以当做一个生产环境的服务器来使用,国外的很多大型企业也都有使用Tomcat的例子。
因此,对于生产环境的web服务器来说,在不关闭或者重启服务器的情况下,部署或者停止某些应用是很必要的。
通过tomcat管理器就可以做到这一点。
因此,为了支持这个功能,tomcat在默认的下载包中webapps目录下包含了一个manager应用(这个是默认就有的)。
用户就是通过访问这个应用,来控制其他的应用的。
这个应用主要包括以下的 功能 :
1 根据上传的war包部署文件
2 通过配置上下文路径,部署文件
3 列出当前所有部署的应用,以及其会话信息
4 当/WEB-INF/classes和/WEB-INF/lib有修改时,重新加载应用
5 列出系统以及JVM的属性值
6 列出可用的JNDI资源
7 列出数据库中的安全角色
8 开启关闭应用
9 关闭正在运行的应用
10 解除应用的部署,删除其目录
如何配置tomcat管理器?
tomcat支持多种管理方式:
1 manager-gui 通过html页面管理(由于管理器应用使用CSRF方式配置,所以使用了这种方式,就无法使用2、3方式)
2 manager-script 通过文本管理
3 manager-jmx 通过JMX管理
4 manager-status 通过只读接口管理
其中通过web页面也就是GUI来管理tomcat的大体过程如下:
由于管理器manager应用,不是任何人都可以登录的,因此需要配置用户密码:
修改tomcat下conf下的tomcat-users.xml文件
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<user username="xingoo" password="test" roles="manager"/>
</tomcat-users>
添加user和role标签,注意roles里面的角色名字,必须包含manager。
登录后的配置界面如下,剩下的点来点去的,就不多啰嗦了。
如何通过http报文获取管理器信息?
也可以使用http报文获取tomcat的信息,例如:
http://{host}:{port}/manager/{command}?{parameters}
例如发布应用程序,可以使用:
http://localhost:8080/manager/deploy?path=/foo
其他的可以参考原文官方手册,这里一般不适用这种方式,因此也不过多的研究了。
一些疑问!有待解决
官方文档中,可以配置管理器登录的IP或者域名限制,实在manager.xml中,配置如下的信息:
<Context docBase="${catalina.home}/webapps/manager"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="49.140.69.48"/>
</Context>
可惜测试了下,没好使。其他IP仍然可以访问,很纳闷!
这个问题还要多多指教,之后也会更新原因。
参考
【1】Tomcat6.0 Manager:http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html
- TensorFlow从0到1 - 1 - Hello, TensorFlow!
- iOS自动布局——Masonry详解
- BZOJ 3450: Tyvj1952 Easy
- [编程经验] TensorFlow实现线性支持向量机SVM
- TensorFlow从0到1 - 2 - TensorFlow核心编程
- BZOJ 4318: OSU!
- 讨厌算法的程序员 5 - 合并算法
- 洛谷 P2679 子串
- [编程经验] CVPR2017论文全集下载代码脚本分享
- 讨厌算法的程序员 6 - 归并排序
- [编程经验] Tensorflow中的共享变量机制小结
- 洛谷 P1313 计算系数
- 一文搞懂浏览器自动化测试框架selenium!
- 三分钟Python充电-解压序列赋值给多个变量
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【每日一题】28. Implement strStr()
- 小程序组件开发 -- 疫情动态
- 超干货!为了让你彻底弄懂MySQL事务日志,我通宵肝出了这份图解!
- Tomcat 的使用及原理分析(IDEA版)
- 面试了个30岁的程序员,让我莫名其妙的开始慌了
- GitLab CI + Docker 持续集成操作手册
- centos7 如何安装与使用 Anaconda
- Launcher 启动 activity 流程
- 【每日一题】29. Divide Two Integers
- Ubuntu19.1 中 GitLab 的安装配置与卸载
- Linux 中的存储结构与磁盘划分
- Linux 中用户与权限管理
- Netty入门教程——认识Netty
- 14.VBA处理xml文件
- 一文带你理解Spring Cloud高并发微服务架构核心理念的五脏六腑