当前位置: 首页 > news >正文

高性能web服务器Tomcat

一、Tomcat功能

Tomcat 的作用:是运行 Java Web 应用的服务器,能处理动态网页请求(如含 Java 代码的页面),将代码运行结果转换为浏览器可识别的内容并返回

  • 在电商网站查 “我的购物车”,这个页面不是固定的,它需要实时计算你加了哪些商品、多少钱、还有没有库存。这些需要根据你的信息实时生成的内容,就由 Tomcat 来处理:它运行背后的 Java 程序,去数据库查你的购物车数据,计算价格,最后把这些信息变成你看到的购物车页面,传到浏览器上去

    而网站里固定的图片、文字介绍(静态内容),可以由其他服务器直接提供,不用麻烦 Tomca

安装TOMCAT
  1. 首先要安装java环境
#安装iava环境
[root@tomcat ~]# yum install java-1.8.0-openjdk.x86_64 -y
#查看java版本
[root@tomcatA ~]# java -version
#查看java的文件权限
[root@tomcatA ~]# ll /usr/bin/java 
lrwxrwxrwx 1 root root 22 Jul 30 11:19 /usr/bin/java -> /etc/alternatives/java

在这里插入图片描述

  1. 安装并启动Tomcat
[root@tomcatB ~]# tar zxf apache-tomcat-9.0.107.tar.gz -C /usr/local/
[root@tomcatB ~]# cd /usr/local/
[root@tomcatB local]# ls
apache-tomcat-9.0.107  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@tomcatB local]# mv apache-tomcat-9.0.107/ tomcat
[root@tomcatB local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src  tomcat

文件系统传输命令

scp tomcat root@192.168.147.20:/usr/local

#启动
[root@tomcatA ~]# cd /usr/local/tomcat/bin/
[root@tomcatA bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.#查看端口是否开启
[root@tomcatA bin]# netstat -antlupe | grep java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      0          212698     121930/java         
tcp6       0      0 :::8080                 :::*                    LISTEN      0          214170     121930/java  

测试访问tomcat

在这里插入图片描述

tomcat的文件结构

目录结构

目录 				   说明
-------------------------------------------------------
bin					服务启动、停止等相关程序和文件
conf 				配置文件
lib 				库目录
logs 				日志目录
webapps 			应用程序,应用部署目录,相当于nginx的默认发布目录
work jsp 			编译后的结果文件,建议提前预热访问
配置Tomcat启动文件
  1. 生成Tomcat的配置文件
[root@tomcat ~]# vim /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/etc/alternatives/jre
  1. 生成启动文件
[root@tomcatA ~]# vim /lib/systemd/system/tomcat.service
####
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target[Service]
Type=forking
EnvironmentFile=/usr/local/tomcat/conf/tomcat.conf
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat[Install]
WantedBy=multi-user.target
  1. 生成tomcat用户并设定软件安装目录权限
[root@tomcatA ~]# useradd -s /sbin/nologin -M tomcat
[root@tomcatA ~]# chown tomcat.tomcat /usr/local/tomcat/ -R
  1. 设置开机启动tomcat脚本
[root@tomcatA ~]# systemctl start tomcat.service
[root@tomcatA ~]# systemctl status tomcat.service

二、反向代理实现tomcat部署

1. 常见部署方式介绍

在这里插入图片描述

2. 利用nginx反向代理

在这里插入图片描述

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

    配置路由策略

    [root@Nginx ~]# dnf install nginx -y
    [root@Nginx ~]# systemctl start nginx.service[root@Nginx ~]# vim /etc/nginx/conf.d/vhosts.conf
    upstream tomcat {hash $cookie_JSESSIONID;server 192.168.147.10:8080;server 192.168.147.20:8080;
    }
    server {listen 80;server_name www.zym.org;location ~ \.jsp$ {#proxy_pass http://172.25.254.10:8080;proxy_pass http://tomcat;}
    }#查看主机域名
    [root@Nginx conf.d]# cat /etc/hosts
    192.168.147.100 Nginx.zym.org   www.zym.org
    
  2. 在Tomcat服务器上

    两台服务器均要配置

    #把jsp页面放入该目录内
    [root@tomcatA ~]# cd /usr/local/tomcat/webapps/ROOT/
    

    在这里插入图片描述

  3. 测试访问

注意!!!

浏览器访问时,需要查看windows上是否解析了主机的域名

C:\Windows\System32\drivers\etc的host文件

如果无法保存,请先用管理员身份运行记事本,在打开host文件,编辑后保存即可
在这里插入图片描述

使用浏览器访问主机域名在这里插入图片描述

三、Memcached

  • Memcache 是一种分布式内存缓存系统,主要作用是缓存频繁访问的数据(如数据库查询结果等),通过将数据存储在内存中,加快数据访问速度,从而减轻数据库等后端存储的压力,提升应用整体响应效率

比如说:一个网站,很多人看同一篇热门文章,Memcache 会把这篇文章的内容暂时缓存这篇文章,当用户再访问时可以直接访问看,不用每次都去数据库里 “翻仓库”相当于查数据库,减缓的是数据库的压力

cookie值—会话值,来一个会话缓存存会话值,进行会话;

  • 比如说去看病,cookie为病情,每看一个医生,就要再说一遍病情是什么
1. memcached的安装与启动

在这里插入图片描述

[root@tomcatA ~]# dnf install memcached -y
[root@tomcat ~]# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 0.0.0.0,::1"[root@tomcat ~]# systemctl enable --now memcached
[root@tomcat ~]# netstat -antlupe | grep memcache
tcp        0      0 0.0.0.0:11211           0.0.0.0:                *               LISTEN      980        1201515    72                0385/memcached
tcp6       0      0 ::1:11211               :::*                                    LISTEN      980        1201516    72                0385/memcached
2. memcached操作命令

五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:set、add、replace、get、delete

#前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令,都使用如下所示的语法:
command <key> <flags> <expiration time> <bytes>
<value>#参数说明如下:
command set/add/replace
key 				用于查找缓存值
flags 				可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 	在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes 				在缓存中存储的字节数
value 				存储的值(始终位于第二行)#增加key,过期时间为秒,bytes为存储数据的字节数
add key flags exptime bytes

简单示例

[root@tomcatA ~]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
add leekey 0 60 4
test
STOREDadd leekey1 0 60 3
lee
STORED#查看
get leekey
VALUE leekey 0 4
test
END

四、session共享服务器

1. msm介绍

在这里插入图片描述

将会话数据,交叉缓存到memcached中,当一台tomcat挂掉后,数据缓存到了memcached中,可以切换到另一台tomcat也可以读取到缓存的数据

安装配置:把需要的jar包,放到/usr/local/tomcat/lib该目录下

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
2. 配置tomcat修改
#在tomcatA上配置
[root@tomcatA ~]# vim /usr/local/tomcat/conf/context.xml<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:192.168.147.10:11211,n2:192.168.147.20:11211"failoverNodes="n1"requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"#在tomcatB上配置
[root@tomcatB ~]# vim /usr/local/tomcat/conf/context.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:192.168.147.10:11211,n2:192.168.147.20:11211"failoverNodes="n2"requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"#重启服务
[root@tomcatA ~]# systemctl restart memcached.service

tomcatA的context.xml
在这里插入图片描述

3. 配置nginx修改
[root@Nginx ~]# vim /etc/nginx/conf.d/vhosts.conf
upstream tomcat {hash $cookie_JSESSIONID;server 192.168.147.10:8080;server 192.168.147.20:8080;
}
server {listen 80;server_name www.zym.org;root /web/zym;access_log /web/var/log/nginx/access.log;error_log /web/var/log/nginx/error.log;try_files $uri $uri.html $uri/index.html /error/default.htmllocation ~ \.jsp$ {proxy_pass http://tomcat;}
}
4. 进行访问测试
#两台tomcat服务确保该服务启动
[root@tomcatA ~]# systemctl restart tomcat.service
[root@tomcatA ~]# systemctl status tomcat.service

访问www.zym.org/test.jsp

现在服务是在tomcatA上,写入数据,数据正常
在这里插入图片描述

把tomcatA停掉服务

[root@tomcatA ~]# systemctl stop tomcat.service
[root@tomcatA ~]# systemctl status tomcat.service

在这里插入图片描述

查看页面是否转换服务器,数据缓存

  • 服务器转换到了tomcatB上,此时读取的是交叉缓存到memcached上的数据
  • 读取到之前的会话信息

重启服务,回到之前服务器上
在这里插入图片描述

http://www.xdnf.cn/news/1285867.html

相关文章:

  • Vue 3 + Elementui + TypeScript 实现左侧菜单定位右侧内容
  • 石英加速度计如何实现高精度测量?
  • 深度贴:前端网络基础及进阶(3)
  • 鲲鹏arm服务器安装neo4j社区版,实现图书库自然语言检索基础
  • 地图可视化实践录:显示地理区域图
  • 自然语言处理关键库解析和使用方法- FuzzyWuzzy
  • 虚拟机一站式部署Claude Code 可视化UI界面
  • 豆包 + 蘑兔 AI:你的创作搭子
  • 运维学习Day22——Anisible自动化与基本使用
  • Kafka的一条消息的写入和读取过程原理介绍
  • kafka 消费者组的概念是什么?它是如何实现消息的点对点和发布/订阅模式?
  • PO、BO、VO、DTO、POJO、DAO、DO基本概念
  • 开源!!! htop移植到OpenHarmony
  • 【网络运维】Linux和自动化: Ansible基础实践
  • ncurses 6.5 交叉编译移植到OpenHarmomy
  • 【软考中级网络工程师】知识点之 IP QoS 技术
  • 小红书笔记信息获取_实在智能RPA源码解读
  • 【Redis优化深度剖析:如何通过读写分离提升系统性能】
  • 【限时分享:Hadoop+Spark+Vue技术栈电信客服数据分析系统完整实现方案
  • Rocky Linux 10 部署 Kafka 集群
  • Bevy渲染引擎核心技术深度解析:架构、体积雾与Meshlet渲染
  • AI-调查研究-49-大数据调研报告 发展历程:从概念诞生到多元化生态1997-2025
  • msyql中,max_connections和max_user_connections区别
  • 【DL】深层神经网络
  • 记录docker使用kong consul postgresql配置dns异常解决
  • SQL180 每类试卷得分前3名
  • 【Redis在在线表单提交防重复机制中的应用策略】
  • 移动端调用大模型详解
  • Web学习笔记5
  • [git] 重配ssh key | 解决冲突