Tomcat

版权声明:原创作品,谢绝转载!否则将追究法律责任。 ————— 作者:kirin

一、Tomcat基本介绍

1.1.JVM基本介绍

Java业务都是运行在java虚拟机上的,java虚拟机简称为JVM(java Virtual Machine)
所谓虚拟机是指:通过软件模拟具有完整硬件系统的功能、运行在一个完全隔离环境中的计算机系统。

1.2.为什么Java需要VM虚拟机?

像早前的C语言不支持跨平台,因为C语言要想在Windows、Linux、Mac上运行,需要进行分别编译。那么在Linux上有非常多的优秀软件,如果需要在Windows上使用则需要重新进行编译。移植性很差。
而java则不同,java是可以跨平台,只需要将源代码进行一次编译,能够在多处运行。

# 那么java怎么做到?
它只需要在Windows、Linux系统上运行一个JVM,这样我们能将java编译好的war包在Windows和Linux平台运行起来,无需我们重复编译。而JVM是由jre提供。(java运行环境 java runtime Enviroment) 

1.3.java环境re和JDK环境的区别在哪?

jre是java的运行环境,会包含jvm
jdk是java的开发环境,会包含java的运行环境re。
如果说单纯的运行java代码,只需要jre足够,但如果需要提供开发环境以及运行环境则需要jdk。

1.4.什么是Tomcat?

Tomcat和此前学习过的Nginx类似,也是一个web服务器软件。
只不过tomcat是基于java开发的web服务,主要解析java代码。

1.5.Tomcat与nginx有什么区别?

Nginx仅支持静态资源解析,而Tomcat支持解析java开发的web应用,还支持解析静态资源(效率不高)。
Nginx适合做前端负载均衡,而Tomcat适合做后端应用服务处理。
通常情况下,企业会使用Nginx+tomcat结合,由Nginx处理静态资源,tomcat处理动态资源。

二、环境准备与部署

Web03
Web03 Jdk tomcat 10.0.0.9 172.16.1.9
2.1.yum方式安装
web03】#  yum install -y java
web03】#  mkdir -p /soft && cd /soft
web03】#  wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-9/v9.0.46/bin/apache-tomcat-9.0.46.tar.gz
web03】#   tar xf apache-tomcat-9.0.46.tar.gz
web03】#   ln -s /soft/apache-tomcat-9.0.46 /soft/tomcat
web03】#   /soft/tomcat/bin/startup.sh  ##启动服务
web03】#   ss -lntup|grep java   ##默认8080端口
浏览器输入10.0.0.9:8080

##编辑配置文件、目的是使用systemctl来启动、关闭等功能
web03】#   vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Server
After=network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
ExecStart=/soft/tomcat/bin/startup.sh
ExecStop=/soft/tomcat/bin/shutdown.sh
 
[Install]
WanteBy=multi-user.target
 
web03】#    systemctl start tomcat.service
web03】#    systemctl enable tomcat.service
web03】#    systemctl status tomcat.service

2.2.Tomcat的配置文件

bin tomcat启动与停止脚本,启动前需要
conf Tomcat配置文件 server.xml
Lib Tomcat依赖jar文件,连接数据库,就需要jar支持
Logs Tomcat的日志文件,catalina.out
Temp Tomcat临时目录
Webapps Tomcat的默认站点路径 webapps/ROOT
Work Tomcat缓存目录

2.3.tomcat主配置文件——>图解

一个server可以启动一个tomcat实例(当然也可以启动多个tomcat实例)
一个tomcat实例中包含多个tomcat连接器,connector的主要功能是接收、响应用户的http请求。
service的作用是:将connector关联至rngine(catalina引擎)
host就是一个站点,类似于nginx的server_name
context类似于nginx中的location概念

2.4.Tomcat的http请求过程

用户发出一个请求,如:http://tomcat.kirin.com:8080/index.jsp
Connector发现是http/1.1协议,而且还是8080端口,于是就把请求接收后交给副歌条件的Engine
Engine通过请求中的主机名tomcat.kirin.com匹配满足条件的虚拟主机(Host)
域名匹配成功后,则上虚拟机指定的AppBase(代码存放目录)最后将解析产生的结果返回给用户。

三、Tomcat管理端

Tomcat管理端应用场景
搭建与测试的时候 开启管理端 进 行调试 开启管理端 debug
生产环境中 关闭管理端 ,清除管理端相关 文档

注意:tomcat 8.5 对管理端限制更严格

要配置tomcat-user.xml之外

还限制只能在本地使用127.0.0.1访问管理的

从tomcat8.5开始管理端默认只能通过本地使用 127.0.0.1访问(类似于nginx allow127.0.0.1 ; deny all;)

默认情况下,只能从与Tomcat运行在同一台计算机上的浏览器访问管理器。如果要修改此限制,则需要编辑管理器的context.xml文件

[root@web01 /app/tomcat]# find -type f -name  "context.xml" |xargs grep allow
./webapps/host-manager/META-INF/context.xml:         allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
./webapps/manager/META-INF/context.xml:         allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
[root@web01 /app/tomcat]# grep allow ./webapps/host-manager/WEB-INF/manager.xml
         allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

#重启服务
[root@web01 /app/tomcat]# bin/shutdown.sh 
Using CATALINA_BASE:   /app/tomcat
Using CATALINA_HOME:   /app/tomcat
Using CATALINA_TMPDIR: /app/tomcat/temp
Using JRE_HOME:        /app/jdk
Using CLASSPATH:       /app/tomcat/bin/bootstrap.jar:/app/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
[root@web01 /app/tomcat]# bin/startup.sh 
Using CATALINA_BASE:   /app/tomcat
Using CATALINA_HOME:   /app/tomcat
Using CATALINA_TMPDIR: /app/tomcat/temp
Using JRE_HOME:        /app/jdk
Using CLASSPATH:       /app/tomcat/bin/bootstrap.jar:/app/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

四.tomcat日志与进程信息

4.1 进程信息

\#ps命令查询 java进程信息
[root@web01 /app/tomcat]# ps -ef |grep java
\# jps java ps

[root@web01 /app/tomcat]# jps -lvm |grep -v jps
\# java 高级命令 Troubleshooting Tools
\##jmap 取出 java进程信息 jvm内存信息 heap memory details for a process, core file
\##导出 信息

[root@web01 /app/tomcat]# jmap -heap 2016

4.2 Tomcat日志

catalina.out 持续增加#error 错误#startup 或 finished 启动所需的时间
catalina-年-月-日.log 日志切割
xxxxxaccess.log 访问日志

五、Tomcat配置文件

\#server.xml
\#端口部分 ###8005 shutdown端口
\###tomcat shutdown端口 telnet/nc 连接到这个端口 输入暗号 tomcat将会关闭


8080 http协议端口

8009 ajp协议端口 与apache连接使用

8009端口 是用来给 apache与tomcat进行连接使用

现在 tomcat+nginx 可以把 这一行8009注释 提高tomcat性能

tomcat管理端 相应的配置

管理端 实际生产环境 关闭

配置 tomcat 虚拟主机的内容

Nginx tomcat

Server_name Host name 域名

root appBase 站点目录

unpackWARs #自动解压war包 #autoDeploy 自动部署 把代码加载到jvm内存中

#%h  客户端ip地址或者是域名
#%l  (小写L) 远程用户
#%u  用户客户端 Remote user that was authenticated (if any), else '-' (escaped if required)
#%t 时间 日期和时间
#&quot 双引号#
#%r 请求起始行 $request
#%s  $status 状态码
#%b  大小

六、tomcat部署应用及方式

1) 部署应用方式
如果开发给你的是war包 则把war包放入到 tomcat webapps 自动 解压 自动部署
如果开发给你的是jar包 相当于jar包里面已经集成了tomcat java - jar xxxx.jar

2) java开源软件
zrlog java blog

3) 部署应用-zrlog

七、tomcat 3种工作模式: bio , nio , apr

1) io模型区别

bio blocking io tomcat 7及之 前, 同步模型 阻 塞 一个线程处理一个请求,缺 点:并发量高时,线程数较 多,浪费资源。
nio new io tomcat 8及以后 的工作模式 异步 非阻塞 nio1(默认的) nio2 可以通过少 量的线程处理大量的请求
apr Apache Portable Runtime 应对高并发场景 Tomcat对静态文件的处理性 能。 Tomcat apr也是在Tomcat 上运行高并发应用的首选模式

2) 查看当前使用的io模型

3) 修改io模型

修改配置文件

查看修改结果-catalina.out日志
apr
#安装apr环境
yum -y install apr apr-devel tomcat-native
#修改8080&8009端口对应的server.xml
protocol="org.apache.coyote.http11.Http11Nio2Protocol" 把Nio2 修改为Apr

八、tomcat多实例

多实例:在同一台服务器上面运行多个tomcat

应用场景: 让服务器资源充分利用 使用多实例

注意事项: 端口不同与路径不同.

/app/tomcat 8005

/app/tomcat_8081 8006

/app/tomcat_8082 8007

\#配置tomcat多实例 tomcat_8081 tomcat_8082
[root@web01 /app/tomcat/webapps]# cp -r /app/tomcat/ /app/tomcat_8081
[root@web01 /app/tomcat/webapps]# cp -r /app/tomcat/ /app/tomcat_8082
[root@web01 /app/tomcat/webapps]# sed -i 's#8080#8081#g' /app/tomcat_8081/conf/server.xml

[root@web01 /app/tomcat/webapps]# sed -i 's#8005#8006#g' /app/tomcat_8081/conf/server.xml

[root@web01 /app/tomcat/webapps]# sed -i 's#8080#8082#g' /app/tomcat_8082/conf/server.xml

[root@web01 /app/tomcat/webapps]# sed -i 's#8005#8007#g' /app/tomcat_8082/conf/server.xml

挨个启动
然后curl或浏览器访问tomcat多实例

##注意事项
index.jsp 直接访问首页文件或展示首页文件 #这个首页文件存放在webapps/ROOT下面
:8080/code/index.jsp
posted @ 2022-05-28 17:11  kirin(麒麟)  阅读(148)  评论(0编辑  收藏  举报
Δ