2019/06/27 tomcat基础配置(03)

在这里插入图片描述
tomcat如何安装
java体系包含4个组成部分,编程语言,class文件格式,java编程接口api,jvm

在这里插入图片描述
EE其实就是在jdk基础上增加了企业级才会用到的类库,比如servlet,ejb,jsp
在这里插入图片描述
在这里插入图片描述
yum安装的在/etc/tomcat下
如果采用的是展开解压的方式来做的话,有conf目录,下面也有server.xml

在这里插入图片描述
整个tomcat配置文件,大体上有很多个

Tomcat:
使用java语言编写:
tomcat的配置文件构成:
server.xml:主配置文件;
web.xml:每个webapp只有“部署”后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认部署相关的配置;
context.xml:每个webapp都可以使用的配置文件,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认配置;
tomcat-users.xml:用户认证的账号和密码文件;角色(role),用户(User);此文件在tomcat启动时被装入内存;
catalina.policy:当使用 start/run -security选项启动tomcat时,用于为tomcat设置安全策略;
catalina.properties(属性):Java属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数;
logging.properties:日志系统相关的配置;
每个server等于一个tomcat实例,表现为一个java进程,一个server内部可以有多个service,
service

在这里插入图片描述
类似于之前httpd中的alias,url在哪里,可以放在默认的网页站点的跟文件路径
在这里插入图片描述 context.xml:每个webapp都可以使用的配置文件,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认配置;

tomcat-users.xml:用户认证的账号和密码文件;角色(role),用户(User);此文件在tomcat启动时被装入内存;

catalina.policy:当使用-security选项启动tomcat时,用于为tomcat设置安全策略;
secrity就会试着读取这个文件,来设置安全策略,多数情况下无须修改,除非你知道代码如何写

在这里插入图片描述

**catalina.properties:Java属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数;
类库在哪个路径下 **
logging.properties:日志系统相关的配置
在这里插入图片描述
一个服务器上可以运行多个实例,每个实例可以用server来表示,一个server相当于运行了一个tomcat进程
表现为一个java进程,一个server内部可以有多个service,主要作用是让engine与connector关联起来,从而使得某个连接器接收请求后路由到某个引擎
一个connector只能属于一个引擎,一个引擎可以有多个connector,一个引擎内部可以有一到多个虚拟主机
每个部署应用需要有context来定义
context可以有多个

在这里插入图片描述
最外层是server,内部可以有一到多个service,一个service内部可以有一个到多个连接器,但只能有一个引擎,一个引擎内部可以有多个host,一个host可以有多个context
每一个组件都是java编写,因此在java中都有一个类来表示
类可能有多种,连接器有多种,http,https,ajp分别用不同的类来实现,

在这里插入图片描述
tomcat如果直接用http协议提供服务,很可能用户不通过反代链接,而绕过反代直接访问tomcat,就可以支持ajp协议,浏览器是不支持ajp协议的,因为是二进制格式的,所以比http的更加高效
因此前端httpd服务器,用它的代理协议中的ajp连接器就能够让它两之间完成通讯了
配置httpd的时候可以用反代的方式,与后端的fastcgi进行通讯,fastcgi模块,
这样一来用户就只能通过httpd反代服务来进行通讯
组合叫做at httpd+tomcat

在这里插入图片描述
比如以后接触到集群,前端是nginx,反代以后,静态,内容到一个组件上,动态内容到一个组件上(httpd+tomcat,nginx+tomcat)
在这里插入图片描述
在这里插入图片描述
容器就是可以部署jsp应用的,应该部署在host之上,如果有必要的话一个host,可以有多个应用程序,
嵌套的组件可以放在engine,host中,可以有各种各样的valve(访问控制的valve,基于主机名访问控制的valve,等等一大堆),每一个都使用不同的类来实现,
logger日志记录器,realm,所有url的认证,领域范围
manager管理器
为什么要组成集群
为了追踪用户有三种操作,session stick,session server session cluste
不论调度到哪个主机的会话,都能通过多播方式同步给同一个集群中的其他任意主机,所以可以随意调度,而不至于会话丢失。这就叫会话集群,
这种不适合大规模应用,访问太多的时候,意味着每台主机上保存的会话信息太多了,而且传输也不高效,所以可以用第三种方式,找一台主机专门存储session,这是个单点(最好做冗余),通常用memcached来保存会话,memcached自身没有冗余能力,为了保证系统出了故障,数据不丢失,那么只能人工冗余 了,做double right。,双险,自己存的时候自己留一份,而不依赖于后端的主机

在这里插入图片描述
为了能够实现tomcat集群,需要有listener 侦听器(监听别人所发过来的多播信息),clutster定义成员关系,该从哪个信道发多播,从哪个信道接收多播以及如何判定是一个成员等是在cluster组件上来进行定义的
在这里插入图片描述
现看下主配置文件
在这里插入图片描述
第一组件server
在这里插入图片描述向类的属性赋值就可以实例化了 监听在8005上,这个端口是可以接收shutdown命令的,默认是监听在127.0.0.1上
试试是否远程可以实现shutdown

在这里插入图片描述
在这里插入图片描述
8080,8005就全部关闭了
在这里插入图片描述
为了避免别人能远程链接,最好把这个端口改掉,可以改成 -1(表示不监听),可以把shutdown命令改成随机字符串
在这里插入图片描述
有很多listner监听器,查看是否对应的类都加载了,加载了就需要启动起来,以便监听某些资源
在这里插入图片描述
定义全局命名资源的,完成主机,用户的解析
在这里插入图片描述
加载这个文件做用户认证
在这里插入图片描述
关键的service,有一个catalina,主要是把连接器和engine关联起来
在这里插入图片描述
connertor 指明连接器的协议,监听端口,链接超时时间,一旦用户访问https,就跳转到的8443
在这里插入图片描述
使用什么类,如果不使用默认类,就自己定义了,最大线程数,sslenable代表启用ssl功能
在这里插入图片描述
在这里插入图片描述
defaulthost 表示当用户访问时,与内部的主机没有一个匹配的时候,就找一个默认的来响应
一个engine有host ,多个连接器

在这里插入图片描述
在这里插入图片描述
网页根目录在哪里 appbase来定义,应用程序基路径
unpackwars 是否自动展开
autodeplay 是否自动部署

在这里插入图片描述
**对这个valve定义的类 accesslogvalve访问日志valve
directory=logs 相对路径下
prefix 有前缀,suffix有 后缀
pattern 日志格式,调用的字符和httpd很相似 **
在这里插入图片描述
在这里插入图片描述
要想改变某个属性,直接定义某个组件的值就可以
fastcgi协议监听在9000端口上,tomcat使用ajp协议8009,另外还能提供http协议监听在8080端口,这个端口是可以随意改的
tomcat不会去接受用户请求,前面有个反代器,反代器前面还有一个调度器(一般ssl是在这建立的),所以不会连接到你的tomcat,所以一般tomcat上不会定义https
既然是web站点,当你访问tomcat某个应用程序的时候,应用程序通过appbase,来定义在的网页存放位置
网页文件确有多种组织格式,而且每个网页文件有自己特定的路径

在这里插入图片描述
在这里插入图片描述
随便下一个jsp开源程序
在这里插入图片描述
在这里插入图片描述
如果有自己的专用的类,可能会有个lib或class目录
install是安装程序
upload上传的文件存放的位置
展开的这个位置,叫做应用程序的跟
index.jsp 主页

在这里插入图片描述
JSP WebAPP的组织结构:
/: webapps的根目录
index.jsp, index.html:主页;
WEB-INF/:当前webapp的私有资源路径;通常用于存储当前webapp的web.xml和context.xml配置文件;如果有就不会使用/etc/tomcat/webxml

在这里插入图片描述
META-INF/:类似于WEB-INF/;无法通过url访问里面资源的,私有资源的路径,定义当前工作站点的工作属性,属于很敏感资源
在这里插入图片描述
classes/:类文件,当前webapp所提供的类;
lib/:类文件,当前webapp所提供的类,被打包为jar格式;
DocumentRooot /webdata/htdocs/
/images/

运维工程师拿到jar包,不用解压缩或者展开,因为这个文件往网站目录下一扔,会自己展开
打包格式有好几种

webapp归档格式:
.war:webapps; 打包整个网站,web应用程序的归档问
.jar:EJB的类打包文件(类库);有很多的类想要打包成一个节约空间
.rar:资源适配器类打包文件;
.ear:企业级webapp;
将来拿到别人开发好的文件,一般是war格式的,如果我们的运维环境是一个持续部署的环境,一般不会从程序员手里拿这个文件,只需要从线上管理控制系统上去剪除,checkout后者甚至于从自动部署环境上自动部署
如果还处于史前时代运维,就手动解决,刀耕火种

这个应用程序可以扔到 appbase指定的目录下
在这里插入图片描述如果使用rpm安装这个webapps,会在/usr/lib/tomcat或者/var/lib/tomcat
在这里插入图片描述
examples示例程序,docs文档,host manager主机管理器,manager管理器
root 主站也要放在root下
sample 也是 示例

DocumentRooot :
如果定义的根目录是 /var/www/html:
之前是这样 url /-> /var/www/html/
而如果是jsp程序 url/ ->/var/www/html/ROOT/ 如果是jsp程序

本来放在html下的程序可以放在ROOT下,这样会显得结构比较明晰
可以把自己部署的扔到这个路径下了
在这里插入图片描述
在这里插入图片描述
测试代码,定义当前网站页面语言是java,并指明导如java。util
在这里插入图片描述
在这里插入图片描述
<%@ page language=“java” %>
<%@ page import=“java.util.*” %>


Test Page


<% out.println(“hello world”);
%>

现在可以把test目录打包成一个war格式文档
在这里插入图片描述
要导入其他的类到jvm才能运行
在这里插入图片描述
在这里插入图片描述
好在应用程序自动在部署
在这里插入图片描述
只要应用程序扔进jvm,自动就能部署,autodeplay就能做热部署
如果是war文件,就直接把war文件扔进去就可以了,会自动展开的
unpackwars 要不要自动展开文件

在这里插入图片描述
在这里插入图片描述
虽然是autodeplay,没准是要重启做冷部署的
在这里插入图片描述
这样其他应用程序就访问不到了,所以一般而言不会这么做,需要一些部署工具帮助,做热部署
在这里插入图片描述
如果要做热部署
在这里插入图片描述
冷部署是重启tomcat完成部署
热部署是指在不停止tomcat下,进行部署,可以用部署工具来实现,比如manager,ant脚本,tcd(tomcat client deployer)远程部署工具
好在将来一般都是做冷部署,站点做应用更新时应该是灰度发布,蓝绿发布
部署deploy

deploy:将webapp的源文件放置于目标目录(网页程序文件存放目录),配置tomcat服务器能够基于web.xml和context.xml文件中定义的路径来访问此webapp;将其特有的类和依赖的类通过class loader装载至JVM;
需要自动装载类,就有可能需要重启服务才能装载
如果不想让人访问还能undeploy

在这里插入图片描述
jsp页面首先要被翻译成java源代码文件,然后编译成class,工作在work目录下
在这里插入图片描述
在这里插入图片描述
对localhost而言有很多应用程序,哪个应用程序访问都要先进行编译的
/编译成了index_jsp。class
在这里插入图片描述
在这里插入图片描述
定义的各种内容都转换成了java代码
在这里插入图片描述
一切java的内容都会自动转换成java代码进行输出
在这里插入图片描述
同样的功能,jsp比php快四倍以上,更重要的是,jsp更适合开发大小企业应用
在这里插入图片描述
在这里插入图片描述
需要认证以后才能进行访问
manager是管理应用程序的
host-manager管理虚拟主机的,
manager让你不用关闭tocmcat,能完成虚拟主机的增删改查,能完成应用程序的热部署
停止启动也都能实现

在这里插入图片描述
现在访问的错误页也是一个jsp程序
在这里插入图片描述
提示你该怎么进行访问
manager_status 只能访问只读页面,仅能访问状态页
如果能访问jmx,就能访问jmx反代的远程管理接口
script 基于我的接口来进行管理
gui 基于图形界面管理

在这里插入图片描述
所以只需要编辑下配置文件,来设定下就可以了在这里插入图片描述
这里的user角色和用户名都没有启用起来
xml文件的注释符是前后 <!-- --》的格式

在这里插入图片描述

角色启用起来,然后再定义一个用户使用这个角色就可以了
在这里插入图片描述
要想生效必须得重启服务,因为这个文件是在tomcat启动时装在你内存中生效的,不是临时读文件的在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对应的application都在这,/主站
docs文档
examples示例
自己定义的test
可以把test这个站点停掉

在这里插入图片描述
就不能访问了,这只是停止
在这里插入图片描述
继续访问可以start
在这里插入图片描述
如果要反部署undeploy
重新部署 reload
每个应用程序都会有会话自动保存30分钟,追踪用户身份的,会保存下来,默认30分钟,30分钟就点一下这个
expiresession按钮,自动帮你清理掉30分以上的会话

在这里插入图片描述
deploy可以热部署了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以只需要把你的url路径,在你的webapp下放的,目录往那那一放,点一下deploy就可以了
在这里插入图片描述
如果部署是个war文件的话更简单,点一下选择文件就可以 了,war文件不用扔,会自动展开
还有内建的查看tomcat server工作的状态页

在这里插入图片描述
显示的是jvm虚拟机,内存运行可以分为好几段
方法区

本地方法栈
pc寄存器
下面主要就是展示堆内存空间,分成了很多区域
新生代,老年代

在这里插入图片描述
堆当中是放对象,堆对象放进来以后,java要做垃圾收集,删掉的是不在用的
新生代(是新创建的在使用的 ,分为eden space 伊甸园区),大多数对象创建一次就不在使用了,回收该如何回收,
eden之外还有两个区,存活区(把所有引用不为0的,移到这个避难所里),存活区有两个,对于第一个存活区里面的有可能是也要回收的
老年代,活过了好几个生命周期依然在用,
对于java来讲这两个段是分别回收的
新生代会经常回收,老年代很久才回收一次(因为将来这里面可能也有些对象不在用了
新的老的如果都满了,那就需要都拿过来回收,把内存空间腾出来,免得不能用了这个适合无论java程序跑的是什么都得停下来专门做回收,
stw
收垃圾的过程中你的java进程全部停下来,什么事情也做不了

在这里插入图片描述
eden 伊甸园区, 堆内存
survival存活区 堆内存
tenured gen 老年代 堆内存
code 代码缓存 非堆内存
compress class space 压缩类空间 非堆内存
meta space 元空间(1.8的jdk才会有元空间 非堆内存

在这里插入图片描述
哪个连接器的什么端口
在这里插入图片描述
对于链接器来讲,会记住当前有多少链接,stage表示现在什么状态,
s表示正在提供服务的service,r表示ready,这个链接准备好了,p 读取和分析用户请求,f正在关闭用户链接
但是有时候访问量大的时候,你的探测操作会让你雪上加霜

host manager 是管理虚拟主机的
用户所属的角色叫admin-gui ,可以使用图形接口
admin-script 只能使用命令行接口
要使用gui接口,一定要启用admin-gui

在这里插入图片描述
在这里插入图片描述
对于admin-gui而言可以再建立一个用户,也可以用之前的用户
在这里插入图片描述
重启下服务在这里插入图片描述
列出了虚拟主机,只有一个loacalhost
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以添加一个虚拟主机
app basee 网站文件路径

autodeploy 是否自动给部署
是否启动自动部署 deployonstartup
部署时是否基于xml文件 deployxml
如果时war文件自动展开 unpackwar
是否用manager app 来管理

在这里插入图片描述
回到manager app,查看是否能访问
没有显示是因为这个也是默认是localhost

在这里插入图片描述
让当前客户端解析能到www。linux。io
在这里插入图片描述
在这里插入图片描述
主机不同显示的就是当前主机的应用程序
在这里插入图片描述
在这里插入图片描述
这个应用程序就是让我们区部署管理主机的
可以在线热部署虚拟主机
假如重启以后还会不会存在
systemct stop tomcat.service,再去start tomcat
查看是否会存在
没了,到默认虚拟主机上了,说明是定义在内存中的

在这里插入图片描述
要想一直用还得写在配置文件里
在这里插入图片描述
用host来定义
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值