当前位置: 首页 > 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.dtcms.com/a/327759.html

相关文章:

  • 嵌入式Linux内存管理面试题大全(含详细解析)
  • 元宇宙虚拟金融服务全景解析:技术创新、场景重构与未来趋势
  • 数据结构:链表栈的操作实现( Implementation os Stack using List)
  • LDAP 登录配置参数填写指南
  • 文件io ,缓冲区
  • 【智慧城市】2025年湖北大学暑期实训优秀作品(3):基于WebGIS的南京市古遗迹旅游管理系统
  • 简单的双向循环链表实现与使用指南
  • 小黑课堂计算机一级Office题库安装包2.93_Win中文_计算机二级考试_安装教程
  • 使用shell脚本执行需要root权限操作,解决APK只有系统权限问题
  • mysql参数调优之 sync_binlog (二)
  • 计算机网络摘星题库800题笔记 第2章 物理层
  • 防御保护11
  • Flutter GridView的基本使用
  • 17、CryptoMamba论文笔记
  • 基于大数据的在线教育评估系统 Python+Django+Vue.js
  • scikit-learn/sklearn学习|岭回归python代码解读
  • CVPR 2025丨机器人如何做看懂世界
  • 全面解析远程桌面:功能实现、性能优化与安全防护全攻略
  • 第十篇:3D模型性能优化:从入门到实践
  • AWT与Swing深度对比:架构差异、迁移实战与性能优化
  • 自己动手造个球平衡机器人
  • 基于 gRPC 的接口设计、性能优化与生产实践
  • open Euler--单master部署集群k8s
  • 【能耗监控数据聚合处理策略应用】
  • IIS 多用户环境中判断服务器是否为开发用电脑,数据状态比较
  • GeoScene 空间大数据产品使用入门(2)数据资源
  • 英伟达被约谈?国产替代迎来新机遇
  • 中国网络安全处罚综合研究报告(2020-2025)
  • 项目部署总结
  • iceberg FlinkSQL 特性