Java应用服务器之tomcat基础配置(二)
前文我们聊了下tomcat的配置文件相关格式和组件简介以及webapp目录结构,manger部署和host managera部署,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13307892.html;今天我们来详细聊一聊server.xml中的各组件配置和属性;
server:在tomcat中,一个server就代表一个tomcat实例;所谓tomcat实例就是在服务器上表现为一个Java进程,默认监听在8005端口,该套接字默认只接收"SHUTDOWN"来关闭tomcat实例;因此,在同一物理主机上启动多个tomcat实例时,需要修改其监听端口为不同其他tomcat实例所监听的端口;
示例:修改server默认用于关闭tomcat实例的命令
默认配置
使用默认配置关闭tomcat实例
提示:可以看到当我们使用telent去连接8005端口,然后给它发送一个SHUTDOWN命令就可以实现关闭tomcat实例;
更改关闭tomcat实例
提示:以上配置表示使用SHUTDOWN-TOMCAT命令来关闭tomcat实例
测试:重启tomcat服务,然后用原来的SHUTDOWN命令看看是否可以关闭tomcat实例呢?
提示:可以看到现在我们使用shutdown命令就不能把tomcat实例关闭掉了;
测试:用SHUTDOWN-TOMCAT命令是否可关闭tomcat实例呢?
提示:我们使用SHUTDOWN-TOMCAT命令就可以实现关闭tomcat实例;这里建议把这个关闭实例的命令修改成其他不容器被猜到的命令,这样相对要安全点;
Service:用于实现将一个或多个connector组件关联至一个engine组件;
提示:以上配置上默认配置,默认service名称叫catalina ,它关联了一个connector 端口为8080 ,协议是http/1.1,连接超时时长为20秒,如果启用了https,访问对应资源如果必须是https,它默认会跳转至8443端口;其实service的属性就 一个name,这个没有什么好说的,默认情况我们都不会去更改service的名称,用默认的catalina就行;
Connector连接器组件:主要作用负责接收请求,常见的连接器有三种,分别是http连接器,https连接器,和ajp连接器;进入tomcat的请求可分为两类,一类是来自客户端浏览器的访问,一类是来自其他web server反代访问;如果想配置tomcat只能通过代理来访问,并且不能绕过代理来访问,我们可以选择把http和https连接器给禁用了,只留一个ajp连接器,这样一来tomcat就只能通过httpd的ajp反代来访问,因为浏览器不支持ajp协议;
Connector组件的属性有:port用于指定连接器监听的端口,如果只指定监听端口没有指定ip地址,表示监听本机所有可用地址的对应端口;protocol用于指定用于连接该连接器所用到的协议;connectionTimeout用于指定连接该连接器的超时时长;address用于指定监听的ip地址,不指定默认是本机所有可用地址;maxThreads用于指定该连接器的最大连接数,不指定默认为200;enableLookups用于指定是否启用DNS查询功能,如果开启了此功能,每次访问它都会把对应IP地址反接成主机名,其实这个是很消耗访问时间的,所以通常情况下都是把这个属性关闭的;acceptCount用于指定等待连接队列的长度,如果链接队列已经满载了,这个属性就是来指定后面排队的长度;redirectPort用于指定重定向端口,假如我们访问一个资源,而该资源又限定必须通过https协议访问,此时我们用http连接器访问该资源,它会跳转至对应端口的连接器上;sslProtocol用于指定ssl协议;URIEnconding用于指定uri的字符集,这个在有些uri是中文的场景中需要指定;
实例:添加一个连接器,监听本机127.0.0.1:9090 使用协议为http1.1
提示:以上配置标签名称区分大小写,里面的属性不区分大小;通常建议还是区分大小写去配置;tomcat的配置文件都遵循Java变量命名规范,都是驼峰式命名;
测试:重启tomcat服务,看看127.0.0.1:9090是否处于监听状态?
提示:可以看到127.0.0.1:9090已经处于监听状态;
Engine组件:主要作用实例化一个Servlet实例,用于运行servlet代码,其内部可以一个或多个host组件来定义站点;如果有多个虚拟主机通常需要通过defaultHost属性来定义默认的虚拟主机;这里的虚拟主机和httpd里的虚拟主机概念没有本质不同;engine的常用属性有:name用于指定引擎的名称;通常engine的名称为catalina不会去改变,这是因为tomcat内建代码中相关引擎的名称为catalina;defaulthost用于指定默认虚拟主机;jvmroute用于指定tomcat集群jvm标识,意思是多个tomcat实例组成的集群,对应请求路由该发往那个引擎上,就是靠jvmroute来指定;这个有点类似ipvs中给报文打标记的意思;通常用于tomcat集群基于cookie的会话绑定或sessions stick中使用;
Host组件:位于engine内部用于接收请求并进行相应处理的主机或虚拟主机;常用的属性有:name用于指定host的名称;appBase用于指定此Host的webapps的默认存放目录,指存放非归档的web应用程序的目录或归档的WAR文件目录路径;可以使用基于$CATALINA_BASE变量所定义的路径的相对路径;uppackwars用于指定是否将.war格式的包展开;autodeploy用于指定是否支持自动部署(在Tomcat处于运行状态时,将某webapp放置于appBase所定义的目录中时,是否自动将其部署至tomcat);
示例:添加一个虚拟主机,名为www.test1.com ,对应网页目录根文件路径为/appdata/test 支持展开.war包,支持自动部署
更改配置文件,新增一个host
提示:注意appBase必须区分大小写,否则配置不会生效;
新建host所指定的目录和目录结构
提示:这里新建的虚拟主机就相当于访问对应虚拟主机名称,然后就返回一个页面;访问的URL中是除了虚拟主机名称就没有别的uri了;所以我们需要在指定目录下新建一个ROOT的目录;
新建一个测试页
重启服务,访问我们新建的虚拟主机,看看是否能够访问到我们提供的测试页面?
用浏览器访问新建的虚拟主机,看看是否访问到我们提供的测试页面?
提示:可以看到我们访问www.test1.com 是可以正常访问到我们提供的测试页面,这意味着我们配置的虚拟主机生效了;
Context组件:该组件主要作用是用于定义url路径和网页文件路径的对应关系;有点类似nginx里的alias指令
示例:把/helloapp/helloword 部署到www.test1.com虚拟主机上,并可以通过www.test1.com:8080/helloword访问到
创建目录结构,并准备测试网页
提供测试页面
修改配置文件,新增context 把/helloapp/helloword 部署到www.test1.com上 并实现访问www.test1.com:8080/helloword
提示:以上配置表示访问www.test1.com/helloword 对应页面文件存放在/helloapp/helloword/下;context组件中path用于指定uri的路径;docBase用于指定网页目录;
重启tomcat,访问www.test1.com:8080/helloword看看是否访问到我们提供的测试页面?
提示:我们提供的测试页面能够被访问到;
Valve组件:该组件根据不同类的实例不同,其作用也不同;常用于定义日志,访问控制;
示例:给www.test1.com定义一个访问日志
提示:Valve组件中className 用于指定类,不同类对于Valve有着不同的意义,也决定了valve的作用;directory用于指定存放日志的目录,如果使用相对路径则相对CATALINA_BASE所指定的位置;prefix用于指定日志文件前缀名称;suffix用于指定日志文件后缀名称;中间部分通常是年月日时间用中横线连接的字串;pattern用于指定日志格式;有关日志格式的宏定义相关说明请查看官方文档https://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/valves/AccessLogValve.html;这里需要说明一下,"表示一个双引号,如果pattern中间有双引号,请使用"去表示;
重启tomcat,访问www.test1.com 看看是否有日志生成
提示:重启tomcat后,在对应目录就可以看到有我们刚才定义的日志文件;
测试:访问www.test1.com 看看是否在记录日志到对应日志文件中?
示例:定义只允许192.168.0.21访问www.test1.com
提示:以上配置表示只允许192.168.0.21这台主机访问www.test1.com这台虚拟主机所提供的内容,其他主机都无法访问,包括本机;
测试:重启tomcat,在ip为192.168.0.21上访问www.test1.com看看是否可访问?
测试:在非192.168.0.232的主机上访问看看是否可访问?
提示:可以看到在非192.168.0.21上访问提示为权限拒绝,是不能访问www.test1.com这台虚拟主机所提供的页面的;当然上面的配置使用allow来指定只允许的IP地址,这种是白名单机制;如果使用deny去指定,表示拒绝指定的IP访问,开放未指定的IP访问,这就是黑名单机制;
Java应用服务器之tomcat基础配置(二)的更多相关文章
- Java应用服务器之tomcat基础配置(一)
前文我们聊到了java相关重要组件和它们之间的关系以及jdk.tomcat部署回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13302938.html:今天我们 ...
- Java应用服务器之tomcat session server msm搭建配置
在上一篇博客中,我们介绍了tomcat自带的cluster组件配置session replication cluster,回顾请参考https://www.cnblogs.com/qiuhom-187 ...
- Java应用服务器之tomcat部署
一.相关术语简介 首先我们来了解下tomcat是什么,tomcat是apache软件基金会中的一个项目,由apache.Sun 和其他一些公司及个人共同开发而成.主要作用是提供servlet和jsp类 ...
- Java应用服务器之tomcat会话复制集群配置
会话是识别用户,跟踪用户访问行为的一个手段,通过cookie(存在客户端)或session(存在服务端)来判断本次请求是那个客户端发送过来:常用的会话保持有绑定会话,就是前边我们聊的在代理上通过算法或 ...
- JAVA企业级应用服务器之TOMCAT实战
JAVA企业级应用服务器之TOMCAT实战 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App ...
- Tomcat基础配置和高级配置
********** 第一部分 Tomcat基础配置 *********** 一.Apatch Tomcat 在win下配置 大部分转载自:http://blog.csdn.net/liuhao ...
- #Java学习之路——基础阶段二(第十二篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- tomcat安全配置(二)
1. JVM 1.1. 使用 Server JRE 替代JDK. 服务器上不要安装JDK,请使用 Server JRE. 服务器上根本不需要编译器,代码应该在Release服务器上完成编译打包工作. ...
- Web —— java web 项目 Tomcat 的配置 与 第一个web 项目创建
目录: 0.前言 1.Tomcat的配置 2.第一个Web 项目 0.前言 刚刚开始接触web开发,了解的也不多,在这里记录一下我的第一个web项目启动的过程.网上教程很多,使用的java IDE 好 ...
随机推荐
- 原来你是这样的BERT,i了i了! —— 超详细BERT介绍(一)BERT主模型的结构及其组件
原来你是这样的BERT,i了i了! -- 超详细BERT介绍(一)BERT主模型的结构及其组件 BERT(Bidirectional Encoder Representations from Tran ...
- Jmeter(十二) - 从入门到精通 - JMeter逻辑控制器 - 终篇(详解教程)
1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ...
- Git在windows使用git时出现:warning: LF will be replaced by CRLF
$ rm -rf .git // 删除.git $ git config --global core.autocrlf false //禁用自动转换 $ git init $ git add
- JavaWeb网上图书商城完整项目-数据库操作工具类
1.首先安装数据库,在windows上安装和在unix上面安装环境不一样,我在自己的本地电脑上安装,安装成功之后,如果使用navicat远程工具访问,需要允许mysql远程能被访问 方法二.直接授权( ...
- MAC安装VMware fusion
1.下载VMware fusion 11 https://www.vmware.com/cn/products/fusion/fusion-evaluation.html 2.安装后启用输入注册码 V ...
- 表达式计算开源组件(NCalc.NetCore)
首先,这款组件是开源的,NCalc是.net中的一个数学表达式求值程序.NCalc可以解析任何表达式并计算结果,包括静态或动态参数和自定义函数. 官网地址:http://ncalc.codeplex. ...
- STL初步学习(set)
2.set set可以看作一个集合,可以实现自动排序(升序)和去重 在许多题目中,都可以使用这个模板库,减少很多操作,例如P1923 第k小数,当然,这道题有很多奇奇怪怪的做法,分值都不同,之后会讲解 ...
- css实现内容渐变隐藏效果,手机网页版知乎内容隐藏效果的实现
看到一个需求,如下图,知乎手机网页版的一个视觉效果,对内容很长的部分有一个渐变的隐藏的效果,个人觉得这个设计还是很好的,符合手机大小的应用场景,没有一下子显示完全,可以很快的滑倒页面底部,一定程度上减 ...
- 小程序被冻结,忘记原始ID,如何找回?
登录成功,提示被冻结,选择"账号找回": 阅读须知:账号类型选择“小程序”,需要输入小程序的原始ID,此时已经不记得了~~ 微信:搜索 “ 公众平台安全助手 ” 并关注 点击查 ...
- zabbix fping 监控网络质量
1,zabbix server (proxy)安装fping wget http://www.fping.org/dist/fping-3.16.tar.gz tar zxvf fping-3.16. ...