tomcat:开源的web应用服务器,基于Java代码开发。tomcat就是处理动态请求和基于Java代码的页面开发,可以在html中写入Java代码,tomcat可以解析html页面中的Java。执行动态请求,动态页面。
但是tomcat会有机制问题:不对tomcat进行优化,会出现假死,停机。
小集群,小服务,小应用适用于tomcat,大并发的场景不适用
tomcat的优点:1、免费 2、开源可以进行二次封装 3、可配置性强,可以根据需要进行自定义配置,包括端口号,虚拟主机等 4、tomcat自带安全机制,可以配置用户认证,授权,加密传输
5、部署应用非常快捷,tomcat会自动部署,自动运行
有三个:
1、web容器,完成web服务器的功能,web应用
工作方式: web→http或https→访问页面→指向到文件index.jsp
web容器中封装了一组文件,在这一组文件中进行集中化管理。就是web动态页面
2、servlet容器:名字叫catalina,用于处理servlet代码,就是处理web请求(http),以及生成动态内容的Java类,处理http请求。
3、jsp容器:jsp动态页面,翻译成servlet代码,用标准格式展示jsp的静态页面
总结:web容器:1、接受、响应请求 2 、 展示动态页面
JSP容器:翻译java--->servlet
Serverlet容器:借助于catalina来执行servelet代码(动态任务执行的标准格式)
补充:servlet功能:1、处理http请求 2、生成动态内容,是为了和用户发起的,jsp当中的数据库进行交互 3、会话管理:跟踪用户在不同请求之间的状态,通过管理可以在用户访问不同页面时保持用户的状态 4、与数据库进行交互,servlet可以连接到数据库,执行查询和更新操作
以上就是servlet能够生成动态内容的原因
jsp:java server pages 动态页面的开发技术,使用jsp标签 index.jsp
在html页面中插入java代码
java容器→html页面中的java代码翻译→执行→展示结果
Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。
其中连接器和容器相辅相成,一起构成了基本的 web 服务 Service。每个 Tomcat 服务器可以管理多个 Service。
Connector:负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。
Container:负责对内处理业务逻辑。其内部由 Engine、Host、Context和Wrapper 四个容器组成,
用于管理和调用 Servlet 相关逻辑。
Engine:引擎,用来管理多个虚拟主机,一个 Service 最多只能有一个 Engine;
Host:代表一个虚拟主机,也可以叫站点,通过配置 Host 就可以添加站点;
Context:代表一个 Web 应用,包含多个 Servlet 封装器;
Wrapper:封装器,容器的最底层。每一 Wrapper 封装着一个 Servlet,负责对象实例的创建、执行和销毁功能。
这四个组件的工作方式也是从上到下的,这四个容器之间属于父子关系。
容器 由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个 Web 应用。
每个 Web 应用会有多个 Servlet 封装器。
Service:对外提供的 Web 服务。主要包含 Connector 和 Container 两个核心组件,以及其他功能组件。
Tomcat 可以管理多个 Service,且各 Service 之间相互独立。
1、用户在浏览器中输入网址,请求被发送到本机端口 8080,被在那里监听的 Connector 获得;
2、Connector 把该请求交给它所在的 Service 的 Engine(Container)来处理,并等待 Engine 的回应;
3、请求在 Engine、Host、Context 和 Wrapper 这四个容器之间层层调用,
最后在 Servlet 中执行对应的业务逻辑、数据存储等。4、执行完之后的请求响应在 Context、Host、Engine 容器之间层层返回,最后返回给 Connector,
并通过 Connector 返回给客户端。
总结:
1、输入网址请求发送,发送到8080端口,被在那里监听的connector获得
2、connector把请求转发到container处理→Engine(管理虚拟主机,你要访问哪一台虚拟主机)
→host(主机站点,包含要请求页面的位置,weapps)→context,就是index.jsp里面的内容
→wrapper(servlet来解析,响应,处理这些请求)→jsp翻译→页面展示
把两个包拖如/opt目录下
因为是rpm包,所以是用rpm -ivh安装
设置JDK环境变量
刷新
检查
写一段java代码(了解)
下面开始安装apache
解压
做个优化,放到/usr/local/tomcat里面
后台启动tomcat
前台启动tomcat
因为tomcat会伪启动,所以要看一下他的端口有没有起来
再浏览器通过192.168.88.10:8080检查一下
下面开始做优化,打开manager页面,manager页面是tomcat的一个重要监视页面
没做优化前manager页面是不能正常访问的
第一步,允许所有主机访问
第二步:在conf,tomcat-users.xml中,添加账户密码
修改完了需要重启
刷新一下网页并输入账号密码(默认都是tomcat,也可以自定义),进入tomcat的管理页面
要看这个
在这里面主要看JVM的内存够不够,下面优化JVM内存池
如果不够需要进入catalina.sh里面进行优化
插入一行代码
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:PermSize=1024m -XX:MaxPermSize=1024m -Djava.awt.headless=true -XX:+DisableExplicitGC"
命令解析:
-server:第一个参数,指定内存池,一定放在第一个。
-Xms2048m:初始java堆的大小。分配JVM的最小内存,看cpu:cpu性能高,这个值,可以设高一点
-Xmx2048m:JAVA堆最大能多大,jvm的最大内存。和硬件内存挂钩。根据官方文档,起始值和最大值保持一致。XMS和XMX设为一样的,内存可以设为物理内存的一般。
-Xmn768m :新生代的内存大小。官方推荐为了整个堆大小的3/8.
-XX:ParallelGCThreads=2: 配置并行收集器的线程数,同时可以有多少个线程进行垃圾回收。
-XX:PermSize:设置持久代内存的大小,默认是物理内存的1/4。
-XX:MaxPermSize=1024m :最大的非堆内存的大小,默认也是物理内存的1/4;
-XX:PermSize=1024m -XX:MaxPermSize=1024m
非堆内存是不会被垃圾回收机制处理的,-XX:PermSize持久代内存与最大非堆内存不能超出操作系统可用的内存。设置成一样大,可以减轻伸缩堆大小的压力。
-Djava.awt.headless=true:避免在linux环境下,web不能正常打开以正常显示图片。
-XX:+DisableExplicitGC" :避免jvm空间大起大落,影响系统的响应时间。响应速度会很慢。
修改完配置文件需要重启
刷新一下网页,发现内存池扩大了
tomcat主要优化就是优化内存池
tomcat虚拟主机配置,一台服务器上在一个tomcat中会部署多个虚拟机服务器,减少系统的资源消耗,就是创建两个网页,网页的配置文件都在webapps里面
创建两个web服务的目录
修改server.xml的配置文件
修改前先做个备份
打开配置文件
在最底行删除他自带的host,再插入一段代码
重启服务
做host映射
在虚拟机中访问