tomecat

企业级WEB应用服务器TOMCAT

一 WEB技术

1.1 HTTP协议和B/S 结构

操作系统有进程子系统,使用多进程就可以充分利用硬件资源。进程中可以多个线程,每一个线程可以
被CPU调度执行,这样就可以让程序并行的执行。这样一台主机就可以作为一个服务器为多个客户端提
供计算服务。
客户端和服务端往往处在不同的物理主机上,它们分属不同的进程,这些进程间需要通信。跨主机的进
程间通信需要使用网络编程。最常见的网络编程接口是Socket。
Socket称为套接字,本意是插座。也就是说网络通讯需要两端,如果一端被动的接收另一端请求并提供
计算和数据的称为服务器端,另一端往往只是发起计算或数据请求,称为客户端。
这种编程模式称为Client/Server编程模式,简称C/S编程。开发的程序也称为C/S程序。C/S编程往往使用
传输层协(TCP/UDP),较为底层,比如:QQ,迅雷, 云音乐, 云盘, foxmail,xshell等

二 WEB框架

2.1 web资源和访问

在这里插入图片描述
PC 端或移动端浏览器访问
从静态服务器请求HTML、CSS、JS等文件发送到浏览器端,浏览器端接收后渲染在浏览器上从图片服务
器请求图片资源显示
从业务服务器访问动态内容,动态内容是请求后有后台服务访问数据库后得到的,最终返回到浏览器端
手机 App 访问
内置了HTML和JS文件,不需要从静态WEB服务器下载 JS 或 HTML。为的就是减少文件的发送,现代前
端开发使用的JS文件太多或太大了
有必要就从图片服务器请求图片,从业务服务器请求动态数据
客户需求多样,更多的内容还是需要由业务服务器提供,业务服务器往往都是由一组服务器组成

三 tomcat的功能介绍

在这里插入图片描述
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和
并发访问用户不是很多的场合下被普遍使用,Tomcat 具有处理HTML页面的功能,它还是一个Servlet和
JSP容器

3.1下载tomcat

安装JDK版本

[root@tomcat1 ~]# dnf install java-1.8.0-openjdk.x86_64

在这里插入图片描述

查找JDK位置

[root@tomcat1 ~]# rpm -ql java-1.8.0-openjdk

在这里插入图片描述
在这里插入图片描述
解压TOMCAT

[root@tomcat1 ~]# tar zxf apache-tomcat-9.0.93.tar.gz -C /usr/local/
[root@tomcat1 ~]# ln -s /usr/local/apache-tomcat-9.0.93/ /usr/local/tomcat
[root@tomcat1 ~]# /usr/local/tomcat/bin/startup.sh

在这里插入图片描述

启动运行

[root@tomcat1 ~]# /usr/local/tomcat/bin/startup.sh
[root@tomcat1 ~]# netstat -antlupe | grep java

在这里插入图片描述

3.2配置启动文件

[root@tomcat1 ~]# vim /usr/local/tomcat/conf/tomcat.conf
[root@tomcat1 ~]# vim /usr/local/tomcat/conf/tomcat.conf
[root@tomcat1 ~]# cd /etc/alternatives/
[root@tomcat1 alternatives]# cd
[root@tomcat1 ~]# useradd -s /sbin/nologin -M tomcat
[root@tomcat1 ~]# chown -R tomcat.tomcat /usr/local/tomcat/
[root@tomcat1 ~]# vim /lib/systemd/system/tomcat.service
[root@tomcat1 ~]# systemctl daemon-reload
[root@tomcat1 ~]# systemctl enable --now tomcat.service 

在这里插入图片描述
在这里插入图片描述

查看启动情况

在这里插入图片描述

同步到另一台主机

[root@tomcat1 ~]# rsync -ar /usr/local/apache-tomcat-9.0.93 root@172.25.253.20:/usr/local/apache-tomcat-9.0.93
[root@tomcat1 ~]# rsync -ar /lib/systemd/system/tomcat.service root@172.25.253.20:/lib/systemd/system/tomcat.service
[root@tomcat1 ~]# rsync -ar /usr/local/tomcat root@172.25.253.20:/usr/local/tomcat

在这里插入图片描述

创建用户与提权和上一台主机一致

另一台主机配置与上一台主机一致

查看网页情况

在这里插入图片描述

四 结合反向代理实现tomcat部署

4.1 常见部署方式介绍

在这里插入图片描述

  • standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。
  • 反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp代理给Tomcat
    LNMT:Linux + Nginx + MySQL + Tomcat
    LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat
  • 前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更适合
    LNMT:Linux + Nginx + MySQL + Tomcat
  • 多级代理 LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat

TOMCAT实现负载均衡

两台tomcat主机都做此操作

在这里插入图片描述

4.2 利用 nginx 反向代理实现

![
利用nginx反向代理功能,实现图中的代理功能,将用户请求全部转发至指定的同一个tomcat主机利用nginx指令proxy_pass 可以向后端服务器转发请求报文,并且在转发时会保留客户端的请求报文中的host首部

[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf
location ~ .jsp$ {
proxy_pass http://172.25.254.10:8080;
}

4.3 实现tomcat中的负载均衡

动态服务器的问题,往往就是并发能力太弱,往往需要多台动态服务器一起提供服务。如何把并发的压
力分摊,这就需要调度,采用一定的调度策略,将请求分发给不同的服务器,这就是Load Balance负载
均衡。
当单机Tomcat,演化出多机多级部署的时候,一个问题便凸显出来,这就是Session。而这个问题的由
来,都是由于HTTP协议在设计之初没有想到未来的发展。

4.3.1 HTTP的无状态,有连接和短连接

  • 无状态:指的是服务器端无法知道2次请求之间的联系,即使是前后2次请求来自同一个浏览器,也
    没有任何数据能够判断出是同一个浏览器的请求。后来可以通过cookie、session机制来判断。
  • 有连接:是因为它基于TCP协议,是面向连接的,需要3次握手、4次断开。
    -短连接:Http 1.1之前,都是一个请求一个连接,而Tcp的连接创建销毁成本高,对服务器有很大的
    影响。所以,自Http 1.1开始,支持keep-alive,默认也开启,一个连接打开后,会保持一段时间
    (可设置),浏览器再访问该服务器就使用这个Tcp连接,减轻了服务器压力,提高了效率。

4.3.2 tomcat负载均衡实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五 Memcached

5.1 Memcached简介

Memcached 只支持能序列化的数据类型,不支持持久化,基于Key-Value的内存缓存系统memcached
虽然没有像redis所具备的数据持久化功能,比如RDB和AOF都没有,但是可以通过做集群同步的方式,
让各memcached服务器的数据进行同步,从而实现数据的一致性,即保证各memcached的数据是一样
的,即使有任何一台 memcached 发生故障,只要集群中有一台 memcached 可用就不会出现数据丢
失,当其他memcached 重新加入到集群的时候,可以自动从有数据的memcached 当中自动获取数据并
提供服务。

5.2 memcached的安装与启动

在这里插入图片描述

安装telnet

在这里插入图片描述

查看memcached

在这里插入图片描述

六 session 共享服务器

6.1 msm 介绍

在这里插入图片描述
msm(memcached session manager)提供将Tomcat的session保持到memcached可以实现高可用。
项目早期托管在google code,目前在Github

6.2 安装

kryo-3.0.3.jar
asm-5.2.jar
objenesis-2.6.jar
reflectasm-1.11.9.jar
minlog-1.3.1.jar
kryo-serializers-0.45.jar
msm-kryo-serializer-2.3.2.jar
memcached-session-manager-tc9-2.3.2.jar
spymemcached-2.12.3.jar
memcached-session-manager-2.3.2.jar

6.3 配置过程

修改tomcat配置

[root@tomcat-1 ~]# vim /usr/local/tomcat/conf/context.xml
@@@@内容省略@@@@
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.254.10:11211,n2:172.25.254.20:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFacto
ry"
/>
[root@tomcat-2 tomcat]# vim /usr/local/tomcat/conf/context.xml
@@@@内容省略@@@@
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.254.10:11211,n2:172.25.254.20:11211"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFacto
ry"
/>

测试:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值