Java应用服务器之tomcat基础配置(一)
前文我们聊到了java相关重要组件和它们之间的关系以及jdk、tomcat部署回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13302938.html;今天我们来聊一聊tomcat的配置使用相关话题;
一、tomcat配置相关文件简介
1、server.xml
server.xml的配置文件格式大致如下
<Server>
<Service>
<connector/>
<connector/>
...
<Engine>
<Host>
<Context/>
<Context/>
...
</Host>
<Host>
...
</Host>
...
</Engine>
</Service>
</Server>
提示:server.xml是tomcat的主配置文件,主要定义server属性相关参数,而server中核心的组件有service(服务)、connector(连接器)、engine(引擎)、host(虚拟主机)、context(上下文);这些组件它们都有一定联系,其中一个service中可以包含一个或多个连接器(connector),其次就是引擎(engine),引擎是tomcat运行jsp代码的核心组件,通常情况一个连接器只能对应一个引擎,而一个引擎可以对应多个连接器,可以包含多个host,host我们可以理解为httpd中的基于名称的虚拟主机;一个host中可以一个或多个context;context的主要作用是定义location与文件系统路径的对应关系和访问权限相关配置;
对于tomcat配置文件server.xml中的组件,其实都是Java的类实现,这些组件大体可分为如下类型:
顶级组件:Server
服务类组件:Service
连接器组件:http, https, ajp(apache jserv protocol)
容器类:Engine, Host, Context
被嵌套类:valve, logger, realm, loader, manager, ...
集群类组件:listener, cluster, ...
2、web.xml:每个webapp只有部署后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;通常情况每个webapp项目中都会有WEB-INF或META-INF目录,该目录就是用于存放该项目部署相关配置(web.xml或者context.xml),如果对应项目里没有这个目录,那么tomcat中的web.xml就提供默认部署相关配置;
3、context.xml:webapp的专用配置文件,其存放位置为WEB-INF/目录中;该文件和web.xml文件类似,如果对应webapp项目中没有WEB-INF或META-INF目录,那么tomcat中的content.xml就是为其提供默认配置;
4、tomcat-users.xml:用户认证的账号和密码文件;
5、catalina.policy:当使用-security选项启动tomcat时,用于为tomcat设置安全策略;
6、catalina.properties:Java属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数;
7、logging.properties:日志系统相关的配置;
二、webapp的组织结构
/:webapps的根目录
index.jsp:主页脚本,类似fpm中的index.php;
WEB-INF/:当前webapp的私有资源路径;通常用于存储当前webapp的web.xml和context.xml配置文件;所谓私有资源路径就是在对应url上无法进行访问的资源(不能以uri的方式被其他人访问到);
META-INF/:此目录作用类似WEB-INF/;
class/:存储当前webapp所提供的类文件;
lib/:存储类文件目录,当前webapp所提供的类被打包成jar格式的类文件;
webapp归档格式:
.war这类文件是webapp的归档文件,里面包含了整个webapp的所有文件,类,我们可以理解.war格式的文件就是整个webapp所有文件的压缩归档文件,通常我们直接把该文件放在webapps目录下然后启动tomcat,这个包会自动展开;通常.war包用于部署单元来使用;
.jar这类文件通常是把类和类相关的资源封装压缩在一起的归档文件;通常用于部署和封装库、组件和插件程序;
.rar这类文件主要是资源适配器类打包文件的格式;
.ear这类文件是企业级webapp打包文件,和.war不同的是,ear是针对EJB容器,.war针对web容器;ear包含war;
三、部署webapp的相关术语:
1、deploy(部署):所谓部署就是把webapp的源文件放置于目标目录(网页程序文件存放目录,类似httpd中的documentroot指定的目录),然后配置tomcat服务器能够基于web.xml和context.xml文件中定义的路径来访问webapp;然后将其特有的类和依赖的类通过类加载器(class loader)装载至jvm的这一过程;部署第方式有两种,一种是自动部署(auto deploy),自动部署就是我们直接把webapp文件放置对应目录下就可以实现访问,不需要人为手动的去配置部署;另外一种就是手动部署,手动部署又可以分为冷部署和热部署;所谓冷部署就是把webapp源码文件放到指定位置,然后启动tomcat这种方式叫冷部署;热部署指的是在不停止tomcat的前提下进行部署的方式;常用的部署工具有:manager、ant脚本和tcd(tomcat client deployer)等;
2、undeploy(反部署):所谓反部署就是部署的逆向操作,停止webapp并从tomcat实例上卸载webapp的操作叫反部署;
3、start:启动处于停止状态的webapp;
4、stop:停止webapp,使其不再像客户提供服务,但是类依然在jvm上;
5、redeploy:重新部署;
示例:手动提供一测试类应用,并冷部署到tomcat上
1、创建目录结构
提示:在webapps目录下创建项目目录;这里说一下webapps目录,这个目录默认配置是支持热部署的,其中ROOT目录是主站点源码文件存放地,存放在ROOT目录下的文件在访问时可以不用加任何uri就可以访问得到,其他目录需要加对应目录名为uri才可以被访问;
2、创建index.jsp文件
提示:index.jsp文件中就做了一件事,打印hello world这句话;
3、更改目录权限
提示:新建的文件我们需要保证tomcat用户有可以正常的读取即可,对于目录tomcat用户可以进入即可;
4、启动tomcat
提示:默认情况tomcat所在webapps目录下的子目录是可以通过访问对应目录名称访问到的,我们把网页脚本文件放到webapps目录下的子目录下,不停tomcat也是可以访问到,原因是tomcat默认就支持热部署;如下配置文件所示
验证:用浏览器访问我们刚才部署testwebapp,看看是否能够被访问到?
提示:可以看到我们访问对应子目录的名称是可以正常访问到对应目录下的index.jsp文件;
四、利用tomcat的两个管理应用来部署webapp
1、给manager应用配置账号
提示:tomcat-user.xml这个配置文件主要是定义用户相关配置;以上配置表示启动manager-gui角色,并添加tomcat用户拥有manager-gui角色的所有权限;这需要注意一点username password roles 这几个变量之间是用空格做分割的,不要忘记每个变量赋值后,用空格分割,最后一个不需要有空格;
重启tomcat服务
网页登陆manager app
提示:登录到manager app后,我们就可以看到tomcat上所有的webapp,我们可以在后面进行操作,停止启动,和重载以及卸载对应webapp;
测试:停止/test 看看对应webapp是否还可以访问?
提示:可以看到当我们把对应webapp停止后,对应webapp就不能够访问了,访问它会告诉我们该资源未找到,404错误;
启动/test webapp,看看是否马上就可以访问了呢?
2、给host-manager配置账号
提示:启动admin-gui角色,并把admin-gui角色拥有的权限附加到tomcat用户上;
重启tomcat
登录主站的host manager
提示:可以看到登录host-manager 应用中,我们可以看到有一个默认的host是localhost,和一些服务器相关信息;
添加一个host
提示:app base路径需要在服务器上有该路径,并且需要我们把对应的源码文件放进去;还需要注意对应目录tomcat用户可以读和进入到该目录的权限;
在windows上配置解析www.test.com 为192.168.0.22
测试:访问我们刚才添加的host,看看是否能够访问到?
提示:tomcat监听在8080,所以我们访问添加的虚拟主机也需要把端口带上;从上面的访问结果看,它提示我们404网页文件未找到;其原因是我们在/tmp/下的/test/目录没有ROOT目录,默认情况访问虚拟主机,就相当于访问这个虚拟主机的主站,所谓主站就是访问的rul上没有rui,如上图所示;这时tomcat它会去对应目录下找ROOT目录里的主页文件(index.jsp);
提示:修改了/tmp/test/下的目录结构后,现在在访问看看?
提示:更改了/tmp/test/目录结构后,直接访问就可以访问到对应的页面了,这里需要注意一点,如果我们刚才添加虚拟主机时,没有勾选支持自动部署,我们还需要去部署才可以访问;
登录server status 应用
提示:用刚才的tomcat用户就可以直接登录server status 应用,因为刚才配置的tomcat用户是 admin-gui角色和manager-gui角色,这两个角色都有登录访问server status的权限;
提示:server status 应用主要是用于查看服务器状态相关的信息;该页面主要记录了tomcat版本,jvm版本和对应服务器的版本信息以及服务器主机名,ip地址;jvm内存池使用相关信息;ajp连接器相关链接信息和http连接器相关信息;通过查看状态页面,我们可以了解到服务器和tomcat的情况,从而进行优化和调整;
Java应用服务器之tomcat基础配置(一)的更多相关文章
- Java应用服务器之tomcat基础配置(二)
前文我们聊了下tomcat的配置文件相关格式和组件简介以及webapp目录结构,manger部署和host managera部署,回顾请参考https://www.cnblogs.com/qiuhom ...
- 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 ...
- Web —— java web 项目 Tomcat 的配置 与 第一个web 项目创建
目录: 0.前言 1.Tomcat的配置 2.第一个Web 项目 0.前言 刚刚开始接触web开发,了解的也不多,在这里记录一下我的第一个web项目启动的过程.网上教程很多,使用的java IDE 好 ...
- 使用Java管理Azure(1):基础配置
Azure针对Java开发人员提供了非常丰富的开发库,开发工具,和相关插件,让你通过Java对Azure进行服务管理和开发,本文第一步先介绍如何快速的配置Java开发工具,主要针对目前比较流行的Ecl ...
- Tomcat基础配置(一)
详情请看散尽浮华的tomcat相关配置技巧梳理 本次只用于自己的查看,谢谢作者的谅解. tomcat常用架构:1)nginx+tomcat:即前端放一台nginx,然后通过nginx反向代理到tomc ...
随机推荐
- MongoDB——基本使用及集群搭建
文章目录 什么是MongoDb? 基本概念 与关系型数据库的比较 Mongo的高效性 文件存储 基本使用 启动/连接服务 基础操作命令 高可用集群搭建 概念 环境准备 实践 应用场景 总结 什么是Mo ...
- 阿里P7终于讲完了JDK+Spring+mybatis+Dubbo+SpringMvc+Netty源码
前言 这里普及一下,每个公司都有职别定级系统,阿里也是,技术岗以 P 定级,一般校招 P5, 社招 P6 起.其实阅读源码也是有很多诀窍的,这里分享几点心得: 首先要会用.你要知道这个库是干什么的,掌 ...
- Spring事务方法上增加synchronized真的有效果吗?
此文转载,Spring事务本身是一个非常复制的问题,再加上线程并发处理就更加要主要了,由于再开发中有很多朋友会范与下文同样的错误,因分享给大家. 前言 Spring事务的一个奇怪的问题. 朋友问了我一 ...
- Dubbo面试专题
Dubbo面试专题 1. 什么是dubbo Dubbo是阿里巴巴SOA服务化治理方案的核心框架,是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 2. ...
- springMVC --@RequestParam注解(后台控制器获取参数)
在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取. 1.获 ...
- 向强大的SVG迈进
作者:凹凸曼 - 暖暖 SVG 即 Scalable Vector Graphics 可缩放矢量图形,使用XML格式定义图形. 一.SVG印象 SVG 的应用十分广泛,得益于 SVG 强大的各种特性. ...
- oracle 索引失效原因_汇总
1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上没有使用引导列 3) 查询的数量是大表的大部分,应该是30%以上. 4) 索引本身失效 5) 查询条件使用函数在索引列上,或者对索引列进 ...
- 【解读】TCP三次握手和四次挥手
TCP有6种标识: 1.SYN(建立连接) 2.ACK(确认) 3.PSH(传送) 4.FIN(结束) 5.RST(重置) 6.URG(紧急) 一.TCP三次握手 第一次握手(发送:连接请求 ...
- 手写spring事务框架-蚂蚁课堂
1.视频参加C:\Users\Administrator\Desktop\蚂蚁3期\[www.zxit8.com] 0017-(每特教育&每特学院&蚂蚁课堂)-3期-源码分析-手写Sp ...
- JavaWeb网上图书商城完整项目--day02-19.修改密码功能流程分析
我们来看看修改密码的业务流程操作: