博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019/06/26 M tomcat基础及安装(02)
阅读量:3925 次
发布时间:2019-05-23

本文共 5173 字,大约阅读时间需要 17 分钟。

tomcat是ASF旗下的产品,和httpd类似,都属于顶级项目

在这里插入图片描述
主流的是tomat 8
tomcat也有很多的组件,为了能够让tomcat做一个web服务器,在内部也需要支持一些应用,比如虚拟主机,所以为了能够支撑这些组件,tomcat作为一个jsp的容器来讲,
大致有这些组件组成(在一个主机上能否运行两个ls进程,可以,一个主机能否运行两个httpd进程,可以,不同的http需要到不同的位置下加载主机的网页文件)tomcat,一台主机上想要运行多个tomcat,可以,但是它们运行时的环境,加载的文件,监听的端口,任何服务的程序的监听端口都是独占的,所以不应该冲突,而对tomcat来讲一个主机上的实例,叫一个server,所以为了表示在同一主机上运行的tomcat彼此之间能分割开来,每一个tomcat运行的就是一个server
一台主机上是可以同时存在多个server的
java虚拟机有个特点,32G内存,单进程使用内存不能超过32g,超过会遇到问题,有一些专业服务器可能没准会有64g内存,用这个主机专门跑tomcat的,这时候起两个进程,剩下的,每个进程的内存空间不超过32g,所以出现多个实例的可能性还是存在的,为了区别实例,每一个tomcat,用server来表示,server还可以监听在某个套接字上,
跟varnish类似6082,每个server监听在不同的端口上,对tomcat而言没有认真功能,所以一把只能监听在127.0.0.1上
tomcat还需要一个容器组件,叫做engine
引擎简单来讲是用来实现让用户能够存储所谓的java代码,jsp,并把代码运行之后生成结果的组件,可以想象成这是一个jvm的实例,说白了就是一个java虚拟机进程,而这整个是一个tomcat环境,engine是运行jsp代码的引擎。也是jsp容器
用户请求的动态资源都应该由引擎运行,引擎组件为了接受用户请求,能跨主机通讯,现在都是基于套接字的,所以引擎需要监听端口,但是引擎自身只是一段代码,它不能监听端口,所以为了能监听,靠另外一个组件来实现,连接器,在server内部可以定义一个到多个的连接器功能connector,相当于定义了一个监听地址和端口
在tomcat中有这样的特殊组件,一个httpd进程可以监听多个端口,所以这里的engine也可以监听多个端口,每个端口是一个connector,因此connector是可以有多个的
**在一个server内部是可以存在多个引擎的,因此你的连接器和engine之间只能一一对应,如果到第一个链接器,这个连接器属于哪个引擎,这个请求就被路由到哪个引擎,他们的链接器和引擎如何来建立关联关系
为了让引擎和链接器建立关联关系,在server内部还有一个组件,叫做service
在一个server内部是可以出现多个service,service服务组件,这里的服务主要作用在于把一个或多个连接器,与某个特定的引擎关联,一个service内部只能有一个引擎,但可以有多个连接器,从而让引擎和链接器建立起来关联关系
一个连接器只能属于一个service,因此属于这个service的引擎
链接器用来定义监听的套接字但是本身不能和引擎建立直接连接,引擎是真正执行请求执行代码的,为了能够建立关联关系,所以用service,一个连接器只能属于一个引擎,引擎有多个连接器,表示监听多个端口
既然tomcat提供web服务,那么应该也有虚拟主机(之前的虚拟主机可以基于端口,基于ip,基于FPM)
部署多个jsp程序,为了区分,在一个引擎内部是可以有多个主机的,主机host
一般tomcat仅适用基于主机名的虚拟主机
每个虚拟主机需要定义自己的document root,只不过在tomcat内部通常称为应用程序的跟路径
**
在这里插入图片描述
一个虚拟主机能否部署一个wordpress,一个discuz,pma,使用不同的url来实现,比如在跟下可以做主站来使用,主页有一个链接可以指向wordpress之类的,每一个url表现为一个独立的应用程序,如果保持会话,wordpress的会话和pma和discuz是没有任何关系的,基于这个层面,要想对每个会话做单独管理,我们要自己组织这个应用成为独立的应用程序,对于jsp来讲比较麻烦,每一个应用程序,它的代码在运行时都要依赖jdk类库中的类,
eshop的代码加载到虚拟机上运行的时候,还要使用依赖的类库加载进去,这个是需要用户决定是否允许,这个过程称为用户是否部署的过程,部署任何应用,不但要部署这个应用本身,还要确保这个应用所依赖的每个环境和组件被满足才可以,这才叫部署
在这里插入图片描述
因此这里的每一个虚拟主机内部的,如果要在某一个url下独立部署一个应用程序,这每一个应用程序都得有自己的环境设定,这每一个独立的应用程序,该定义如何去加载它所依赖的类等等,每一个应用成为context,是一个独立被管理的应用程序,一个虚拟主机上也可以部署多个应用程序(eshop,discuz)每一个都需要每一个程序所依赖的类,该如何去部署,
需要把每一个应用定义成一个独立的context
在这里插入图片描述
tomcat还可以组织成集群,还需要一些集群组件,不像httpd,java有自己的日志系统
有个类叫做logging。调用这个模块就能实现日志记录了
记录用户哪些请求,记录请求中的哪些信息,也需要定义日志格式,并指明哪是context日志,每个host日志
这些信息,需要额外调用组件,叫过滤器组件,过滤这些日志中需要保留的部分
valve(日志过滤,用户请求过滤,访问控制(基于主机名也可以基于ip地址))这个组件一般很少用,tomcat即便有自己的web服务,一般不会让tomcat直接接受用户请求,毕竟是java程序,对每个用户连接量支撑还是有限的,对于大型站点,tomcat一般只服务于动态资源,所有的服务应该有另外一组组件,所以网站的建构形式
在这里插入图片描述所以网站的建构形式
用户请求来了,先到达调度器,调度器根据用户请求分割开来,持久不变的数据,调度带反代缓存服务器主机上,缓存服务器主机再反代到专门提供静态资源的服务器上如(nginx)
nginx显然用 更强大的静态资源处理
tomcat只是处理动态资源的,所以tomcat所接受的请求应该是来自调度器的,即便如此,也不会让调度器上的请求直接到tomcat上,因为支持的并发链接能力是有限的
(虽然是动态资源,但是网站部署分为三类,
一类是图片资源,持久不变的
二类CSS,和动态资源一般部署在tomcatserver,对tomcat来讲既有动态内容又有静态内容,tomcat自己不善于处理高并发静态内容请求,每个tomcat在本机上其实都是被反代的,每一个tomcat主机都不会直接接前端请求,动态请求会过来,静态请求可以用nginx,nt来组合,nginx处理一部分对于js,css等静态文件的请求对于动态内容给反代到tomcat主机上,这每一台主机都是这样子的,所以css文件,js文件都部署在同一个路径下是没有问题的,只不过静态内容由nginx直接返回动态内容由nginx反代给tomcat,tomcat运行,返回给nginx,nginx再返回给调度器)
所以tomcat主机每一个都是nt主机
第一层接入层,第二层缓存层,第三层应用服务器层,第4层存储层
在这里插入图片描述
tomcat,jdk安装各自分了两个版本,Hadoop也是javav程序,都需要安装jdk
jdk
oraclejdk 到官方站点下载
openjdk 组织的发行版
centos7 自带的是openjdk
在这里插入图片描述
在这里插入图片描述
比较用的多的是1.7,1.8
tomcat较新版本能兼任1.8,1.7,真正能否兼容还要取决于你部署的jsp代码是依赖于1.7还是1.8的
要想部署应用程序,要写代码,需要jdk,如果只允许,就要jre
安装devel会依赖其他组件
三个版本是,1.6.7,8是可以并存的,有一个默认程序alternatives可以改,设定哪个应用程序时默认应用的
在这里插入图片描述
alternatives是修改的意思
list可以看到程序是使用的版本
在这里插入图片描述
不加-devel,开发组件是不会安装的
在这里插入图片描述
在这里插入图片描述
安装以后,java-version查看当前版本
在这里插入图片描述
**jvm为server vm
定义java环境变量 **
在这里插入图片描述
javahome是usr
在这里插入图片描述
在这里插入图片描述
如果要使用oracle jdk,要去官方站点去获取
在这里插入图片描述
时间同步应该当作一种习惯来做
在这里插入图片描述
安装其实在usr/java目录下,default代表默认版本,latest最新版指向1.8
在这里插入图片描述
man手册
lib库文件,bin程序文件,include 头文件,jre环境
在这里插入图片描述
写环境文件
在这里插入图片描述
在这里插入图片描述
**重读一下配置. /etc/profile.d/java.sh
这是oracle jdk的安装方式 **
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
**jsp运行格式,由jasper翻译成.java,由javac编译成class,才能借助jvm来运行,对于 jsp出现,使得代码可以嵌入到html去了
用户请求时,如果是jsp就交给tomcat,tomcat看到jsp文件就开始执行
执行之前有几步,1.把。jsp文件调到jasper组件里,翻译成能运行的xxx_jsp.java,然后编译成类文件,字节码,由javac编译器来执行,转换成index_jsp.class
需要在jvm上运行,java engine容器运行
**
在这里插入图片描述

.jsp -->jasper–> .java --> javac --> .class --> jvm

注意:基于jasper将静态输出的数据转为java代码进行输出,结果为servlet规范的代码
能运行jsp的容器就交 jsp container
在这里插入图片描述
JSP Container: jsp容器
JSP + Servlet Container
Java Web Server:JWS
ASF:JServ
O’Reilly
Tomcat 3.x
Tomcat 4.x
Catalina
http://tomcat.apache.org/
商业实现:
WebSphere, WebLogic, Oc4j (oracle, Glassfish, Geronimo, JOnAS, JBoss(红帽收购了) …
开源实现:
Tomcat, Jetty, Resin, …
Tomcat: Java 2 EE技术体系的不完整实现

如何安装tomcat

应该会在base仓库中

在这里插入图片描述
tomcat其实有很多组件的在这里插入图片描述
webapps 示例应用程序,也是jsp格式的
admin-webapps页面管理程序
jsp servlet 两个核心的类库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
另外几个组件没有安装,如果需要用另外安装
想获得主页或者各种apps
就需要安装 webapps tomcat-admin-webapps docs-webapp
在这里插入图片描述
查看安装文件在哪里
在这里插入图片描述
主程序/usr/sbin/tomcat,安装以后什么也不用做,默认就可以启动
在这里插入图片描述
ps aux可以看到运行tomcat是用什么程序运行
在这里插入图片描述
但是tomcat作为普通用户无法使用80端口,其实有一个应用程序可以让普通用户监听使用1024以内端口
在这里插入图片描述
manager app 和host manager 是有tomcat -admin-webapps提供的、
docs-webapps 是提供的文档
其他都是由webapps来提供的
这个是rpm安装的
二进制安装时编译好的,binary
在这里插入图片描述
完整发行版 full documentation 要用文档下载这个
core是核心组件
在这里插入图片描述
一般需要这个文件在usr/local路径下,这是二进制格式的版本,一般这个版本会升级的所以创建软连接
在这里插入图片描述在这里插入图片描述
webapps, 网页根目录 work工作目录(所有的jsp代码需要转换成java文件,都在work下工作)
安装以后要指明catalina home /base
在这里插入图片描述
在这里插入图片描述
source /etc/profile.d/tomcat.sh,装载这个文件
在这里插入图片描述
configtest。sh检查配置文件有无语法错误,version,sh查看tomcat版本
主配置文件 server.xml
在这里插入图片描述
catalina.sh是个总脚本
在这里插入图片描述
能测试语法是否错误
在这里插入图片描述
没看见error就不用担心了在这里插入图片描述
在这里插入图片描述有两种方式启懂
stop n 代表等上几秒停止
默认是5秒
-force强制停止’
run 启动之后附着在当前终端上
start 类似运行了守护进程
在这里插入图片描述
8009,ajp
8005,
8080 web端口都是tomcat的端口
在这里插入图片描述
就也可以访问了,要使用完整文档需要加一个fulldocument
在这里插入图片描述

转载地址:http://gbkgn.baihongyu.com/

你可能感兴趣的文章
Mysql 事务处理
查看>>
Linux实操--实用指令Day4
查看>>
Linux实操--实用指令Day3
查看>>
spring+springboot认识
查看>>
Leetcode 136. 只出现一次的数字
查看>>
Leetcode 11. 盛最多水的容器
查看>>
Leetcode 121. 买卖股票的最佳时机
查看>>
Leetcode 123. 买卖股票的最佳时机 III
查看>>
Leetcode 24. 两两交换链表中的节点
查看>>
Leetcode 100. 相同的树
查看>>
Leetcode 257. 二叉树的所有路径
查看>>
Leetcode 4. 寻找两个正序数组的中位数
查看>>
Leetcode 101. 对称二叉树
查看>>
Leetcode 108. 将有序数组转换为二叉搜索树
查看>>
Leetcode 303. 区域和检索 - 数组不可变
查看>>
Leetcode 110. 平衡二叉树
查看>>
Leetcode 111. 二叉树的最小深度
查看>>
Leetcode 226. 翻转二叉树
查看>>
Leetcode 617. 合并二叉树
查看>>
Leetcode 654. 最大二叉树
查看>>