前文我们聊到了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基础配置(一)的更多相关文章

  1. Java应用服务器之tomcat基础配置(二)

    前文我们聊了下tomcat的配置文件相关格式和组件简介以及webapp目录结构,manger部署和host managera部署,回顾请参考https://www.cnblogs.com/qiuhom ...

  2. Java应用服务器之tomcat session server msm搭建配置

    在上一篇博客中,我们介绍了tomcat自带的cluster组件配置session replication cluster,回顾请参考https://www.cnblogs.com/qiuhom-187 ...

  3. Java应用服务器之tomcat部署

    一.相关术语简介 首先我们来了解下tomcat是什么,tomcat是apache软件基金会中的一个项目,由apache.Sun 和其他一些公司及个人共同开发而成.主要作用是提供servlet和jsp类 ...

  4. Java应用服务器之tomcat会话复制集群配置

    会话是识别用户,跟踪用户访问行为的一个手段,通过cookie(存在客户端)或session(存在服务端)来判断本次请求是那个客户端发送过来:常用的会话保持有绑定会话,就是前边我们聊的在代理上通过算法或 ...

  5. JAVA企业级应用服务器之TOMCAT实战

    JAVA企业级应用服务器之TOMCAT实战 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App ...

  6. Tomcat基础配置和高级配置

    **********  第一部分 Tomcat基础配置   *********** 一.Apatch Tomcat 在win下配置 大部分转载自:http://blog.csdn.net/liuhao ...

  7. Web —— java web 项目 Tomcat 的配置 与 第一个web 项目创建

    目录: 0.前言 1.Tomcat的配置 2.第一个Web 项目 0.前言 刚刚开始接触web开发,了解的也不多,在这里记录一下我的第一个web项目启动的过程.网上教程很多,使用的java IDE 好 ...

  8. 使用Java管理Azure(1):基础配置

    Azure针对Java开发人员提供了非常丰富的开发库,开发工具,和相关插件,让你通过Java对Azure进行服务管理和开发,本文第一步先介绍如何快速的配置Java开发工具,主要针对目前比较流行的Ecl ...

  9. Tomcat基础配置(一)

    详情请看散尽浮华的tomcat相关配置技巧梳理 本次只用于自己的查看,谢谢作者的谅解. tomcat常用架构:1)nginx+tomcat:即前端放一台nginx,然后通过nginx反向代理到tomc ...

随机推荐

  1. 2、Redis如何配置成一个windows服务并且设置一键安装卸载与启停

    每天启动redis虽然只是一个命令行的事情,但是还是比较烦,所以…… 参考文档:Windows Service Documentation.docx 默认前提:Redis已安装并配置完成(不知道如何配 ...

  2. ADB命令 使用

    简介 ADB,即 Android Debug Bridge  ,它是 Android 开发/测试人员不可替代的强大工具 .安卓调试桥 (Android Debug Bridge, adb),是一种可以 ...

  3. 定量度量程序复杂度的McCabe方法

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 请画出下面代码的 ...

  4. easymock案例2

    public interface IStudent { public String doMethod1(); public String doMethod2(); public String doMe ...

  5. docker 安装mysql:latest 问题

    背景 周末闲着没事,然后想着在虚拟机用docker装个mysql吧.然后就开始安装了. 正文 打开dockerhub.com,在输入框输入mysql,选择mysql第一个,进入后找到How to us ...

  6. 入门大数据---Flume 简介及基本使用

    一.Flume简介 Apache Flume 是一个分布式,高可用的数据收集系统.它可以从不同的数据源收集数据,经过聚合后发送到存储系统中,通常用于日志数据的收集.Flume 分为 NG 和 OG ( ...

  7. 入门大数据---Spark部署模式与作业提交

    一.作业提交 1.1 spark-submit Spark 所有模式均使用 spark-submit 命令提交作业,其格式如下: ./bin/spark-submit \ --class <ma ...

  8. ES6躬行记 笔记

    ES6躬行记(18)--迭代器 要实现以下接口## next() ,return,throw 可以用for-of保证迭代对象的正确性 例如 var str = "向

  9. MongoDB快速入门教程 (4.4)

    4.5.Mongoose索引和方法 4.5.1.设置索引 let UserSchema = mongoose.Schema({ sn: { type: Number, // 设置唯一索引 unique ...

  10. IIS发布之后可能出现的问题集及解决方案

    1,首先注意发布的net目标框架,和发布的服务器所使用的框架是否一致