tomcat实战演练

news2024/12/25 9:27:16

一.tomcat介绍

       Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用, Tomcat 具有处理 HTML 页面的功能,它还是一个 Servlet JSP容器。Tomcat 仅仅实现了 Java EE 规范中与 Servlet JSP 相关的类库,是 JavaEE 不完整实现。

二.安装Tomcat 

1.安装java环境

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

 2.安装并启动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 local]# /usr/local/tomcat/bin/startup.sh 

 3.查看端口

[root@tomcat1 local]# netstat -antlupe | grep java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      0          59554      32787/java          
tcp6       0      0 :::8080                 :::*                    LISTEN      0          59545      32787/java 

4.测试:查看端口

二.生成tomcat的启动文件

目录
说明
bin
服务启动、停止等相关程序和文件
conf
配置文件
lib
库目录
logs
日志目录
webapps
应用程序,应用部署目录,相当于 nginx 的默认发布目录
work jsp
编译后的结果文件,建议提前预热访问
1. 生成 tomcat 的主配置文件
[root@tomcat1 ~]# vim /usr/local/tomcat/conf/tomcat.conf

JAVA_HOME=/etc/alternatives/jre_openjdk
2. 生成启动文件
[root@tomcat1 ~]# useradd -s /sbin/nologin -M tomcat
[root@tomcat1 ~]# chown -R tomcat.tomcat /usr/local/apache-tomcat-9.0.93/
[root@tomcat1 ~]# 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

3.重启服务

[root@tomcat1 ~]# systemctl daemon-reload 
[root@tomcat1 ~]# systemctl enable --now tomcat.service 

三.实现tomcat中的负载均衡

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

1.将test.jsp文件放到 /usr/local/tomcat/webapps/ROOT/目录下

[root@tomcat1 ~]# ls
anaconda-ks.cfg  apache-tomcat-9.0.93.tar.gz  test.jsp
[root@tomcat1 ~]# cp test.jsp /usr/local/tomcat/webapps/ROOT/

2.nginx服务器编辑子配置文件并重启

[root@nginx ~]# vim /usr/local/nginx/conf.d/tomact.conf
upstream memcache {
    server 127.0.0.1:11211;
    keepalive 512;
}

upstream tomcat {
    hash $cookie_JSESSIONID;
    server 172.25.254.10:8080;
    server 172.25.254.20:8080;
}

server {
    listen *:80;
    server_name www.rhel9.org;
    root /data/web/html;
    index index.html;

    location ~ \.jsp$ {
        proxy_pass http://tomcat;
    }
}

3.浏览器测试www.rhel9.org/test.jsp

四.tomcat的session会话保持

        Memcached 只支持能序列化的数据类型,不支持持久化,基于 Key-Value 的内存缓存系统 memcached虽然没有像 redis 所具备的数据持久化功能,比如 RDB AOF 都没有,但是可以通过做集群同步的方式, 让各 memcached 服务器的数据进行同步,从而实现数据的一致性,即保证各 memcached 的数据是一样 的,即使有任何一台 memcached 发生故障,只要集群中有一台 memcached 可用就不会出现数据丢 失,当其他 memcached 重新加入到集群的时候 , 可以自动从有数据的 memcached 当中自动获取数据并 提供服务。
        Memcached 借助了操作系统的 libevent 工具做高效的读写。 libevent 是个程序库,它将 Linux epoll 、BSD 类操作系统的 kqueue 等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥高 性能。 memcached 使用这个 libevent 库,因此能在 Linux BSD Solaris 等操作系统上发挥其高性能。
        Memcached 支持最大的内存存储对象为 1M ,超过 1M 的数据可以使用客户端压缩或拆分报包放到多个 key 中,比较大的数据在进行读取的时候需要消耗的时间比较长, memcached 最适合保存用户的 session 实现 session 共享。
        Memcached 存储数据时 , Memcached 会去申请 1MB 的内存 , 把该块内存称为一个 slab, 也称为一个 page。

1.安装tomcat服务器安装缓存软件

[root@tomcat1 ~]# yum install memcached telnet -y

2.编辑memcached文件并开启服务

[root@tomcat1 ~]# vim /etc/sysconfig/memcached 

[root@tomcat1 ~]# systemctl start memcached.service 

3.spymemcached.jarmemcached-session-managekyro相关的jar文件都放到Tomcatlib目录

[root@tomcat1 ~]# ls
anaconda-ks.cfg  apache-tomcat-9.0.93.tar.gz  jar  test.jsp
[root@tomcat1 ~]# cd jar/
[root@tomcat1 jar]# cp * /usr/local/tomcat/lib/
[root@tomcat1 jar]# ls
asm-5.2.jar                              minlog-1.3.1.jar
kryo-3.0.3.jar                           msm-kryo-serializer-2.3.2.jar
kryo-serializers-0.45.jar                objenesis-2.6.jar
memcached-session-manager-2.3.2.jar      reflectasm-1.11.9.jar
memcached-session-manager-tc9-2.3.2.jar  spymemcached-2.12.3.jar

3.修改context.xml配置文件并重启memcacged服务

[root@tomcat1 ~]# 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.KryoTranscoderFactory"
    />

4.浏览器测试

       没做缓存前当其中一台服务器挂机时,页面所保存的内容刷新后会消失,做缓存后当其中一台服务器挂机时,页面所保存的内容刷新后会一直存在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2072586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python优化算法13——飞蛾扑火优化算法(MFO)

科研里面优化算法都用的多&#xff0c;尤其是各种动物园里面的智能仿生优化算法&#xff0c;但是目前都是MATLAB的代码多&#xff0c;python几乎没有什么包&#xff0c;这次把优化算法系列的代码都从底层手写开始。 需要看以前的优化算法文章可以参考&#xff1a;Python优化算…

三种插入排序详解和代码实现(直接插入排序、折半插入排序和希尔排序)

目录 基本思想直接插入排序排序方法代码实现复杂度分析 折半插入排序排序方法代码实现复杂度分析 希尔排序排序方法代码实现复杂度分析最佳情况平均情况最坏情况增量序列的影响 基本思想 插入排序的基本思想是&#xff1a;每一趟将一个待排序的元素按照其关键字的大小插入到已经…

Hadoop 分布式集群搭建

HDFS分布式集群搭建 一、部署规划1.1 进程规划1.2 软件规划1.3 用户规划1.4 目录规划 二、 搭建HDFS 分布式集群2.1 HDFS 集群配置2.1.1 下载安装 Hadoop2.1.2 修改 hadoop-env.sh 配置文件2.1.3 修改 core-site.xml 配置文件2.1.4 修改 hdfs-site.xml 配置文件2.1.5 修改 slav…

力扣刷题(1)

两数之和 两数之和-力扣 思路&#xff1a; 动态开辟一个数组&#xff0c;用来存放下标&#xff1b;两个for循环嵌套来判断&#xff0c;数组中的两个数相加是否与target相等若相等&#xff0c;则将 * returnSize赋值为2&#xff0c;表示数组中两个数&#xff0c;并将arr数组…

数学建模之数据分析【九】:数据清理总结

文章目录 一、什么是数据清理二、为什么数据清理很重要三、执行数据清洁的步骤四、如何执行数据清理五、数据清理的Python库实现5.1 数据检查与探索5.2 使用df.info()检查数据信息5.3 检查分类和数字列5.4 检查分类列中唯一值的总数5.5 执行数据清理的步骤5.5.1 删除所有上述不…

真的爽到了!Coze的黑神话 “循环“ 闪亮登场,啥都能循环,让你一次通关!

心心念念了很久&#xff0c;Coze工作流终于支持循环操作啦&#xff0c;泪奔~~ 看&#xff0c;就在工作流节点的“选择器”和“意图识别”当中偷偷摸摸地多了一个“循环” 这玩意可比批处理强太多了&#xff0c;批处理只能在当前节点循环&#xff0c;做一些简单的循环任务还不错…

【日记】狗尾巴草与暗恋(1519 字)

写在前面 消极内容注意 正文 好想吃火龙果。 下周会变得异常艰难。因为事情已经垒到天上去了&#xff0c;还要来检查。 上午&#xff0c;同事送了一点水果&#xff0c;我从来没见过。问了一下别人&#xff0c;有的说是灯笼果&#xff0c;有的说是菇凉果、姑娘果。搜了一下&am…

深入理解Elasticsearch:让搜索性能飞起来!

Elasticsearch 概述 Elasticsearch是一个基于lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。 ELK 技术栈是Elasticsearch、Logstash、Kibana三大开元框架首字母大写简称。 而Elasticsearch 是一个开源的高扩展的分布式全文搜索引擎&#xff0c; 是整个 ELK技术…

polarctf靶场[WEB]Don‘t touch me、机器人、uploader、扫扫看

目录 [web]Dont touch me 考点&#xff1a;查看源代码、前端 [web]机器人 考点&#xff1a;robot协议 工具&#xff1a;御剑&#xff0c;kali dirsearch [web]覆盖 考点&#xff1a;parse_str覆盖 [web]扫扫看 考点&#xff1a;目录扫描 工具&#xff1a;御剑、kali d…

【冒泡排序算法】输入n个数进行排序

要求&#xff1a;输入n个数进行排序 实现&#xff1a;使用冒泡排序算法&#xff0c;使用C语言实现 冒泡排序的基本原理&#xff1a; 比较相邻元素&#xff1a;从数组的开始位置&#xff0c;比较每对相邻的元素。如果前一个元素大于后一个元素&#xff0c;则交换它们。重复过…

数组基本知识2

目录 前言 二维数组 使用原因 定义二维数组 访问数组元素 实例 前言 上一篇&#xff0c;我简单的复习了一维数组&#xff0c;本篇讲述二维数组的基本知识&#xff0c;帮助大家预习和复习。 二维数组 使用原因 本质原因&#xff1a;一维数组&#xff0c;已经无法满足解决…

OSPF路由配置--单区域

目录 因为OSPF有很多重要的特殊区域和内容,所以划分为多篇博客来配置 一. 实验拓扑图 二. 实验配置 三. 实验验证: 因为OSPF有很多重要的特殊区域和内容,所以划分为多篇博客来配置 不理解OSPF路由动态协议的可以回顾一下OSPF详解&#xff0c;下这一系列的实验都不再做解…

SpringBoot集成kafka-消息转发@sendTo()注解

SpringBoot集成kafka-消息转发sendTo 1、消费者2、生产者3、实体类对象4、JSON工具类5、配置文件application.yml6、测试类7、测试 1、消费者 启动消费者进行消息监听&#xff0c;消费者A监听到生产者发送的消息使用sendTo()注解将消息转发给消费者B package com.power.consu…

在树莓派5上使用pytroch进行模型训练—全流程笔记

在树莓派上运行pytroch模型&#x1f680; 在完成了树莓派的一系列基础配置学习之后&#xff0c;按照规划&#xff0c;下一步要做的就是在树莓派上安装一个pytorch&#xff0c;尝试运行一下深度学习的模型&#xff0c;如果可以实现且准速度有一定保证的话&#xff0c;就可以作为…

代码随想录算法训练营第50天|卡码网 98. 所有可达路径

1.卡码网 98. 所有可达路径 题目链接&#xff1a;https://kamacoder.com/problempage.php?pid1170 文章链接&#xff1a;https://www.programmercarl.com/kamacoder/0098.所有可达路径.html#总结 1.图的存储 本题我们使用邻接表 或者 邻接矩阵都可以&#xff0c;因为后台数据…

掌握路演艺术:创新大赛路演稿撰写指南

如何在创新大赛中脱颖而出&#xff1f;一份精心准备的路演稿是关键 前言开场白&#xff1a;抓住注意力的第一步项目概述&#xff1a;清晰传达核心价值市场分析&#xff1a;展示项目的市场潜力商业模式与盈利计划&#xff1a;务实的策略团队介绍&#xff1a;展现团队的实力与文化…

vue3的nginx配置文件配置(nginx只配置前端vue3的nginx.conf文件)

1、本地的访问网址的链接 http://localhost:5173/official-website/ 2、程序的配置 3、nginx.conf配置 #user nobody; worker_processes 1;events {worker_connections 1024; }http {include mime.types;default_type application/octet-stream;log_format main…

全网最细springboot学习笔记—SpringBoot配置SSL(https)

文章主要内容大致为&#xff1a; SpringBoot配置SSL&#xff08;https&#xff09; SpringBoot全局异常处理 SpringBoot 404页面处理 接下来让我们一起探讨三大框架之一的springboot框架&#xff1a; SpringBoot配置SSL&#xff08;https&#xff09; SpringBoot可以通过在appl…

如何使用ssm实现基于java的电脑硬件库存管理系统

TOC ssm145基于java的电脑硬件库存管理系统jsp 第1章 绪论 1.1 课题背景 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。所…

第四十六篇,PID心法解读

猛回头&#xff0c;有近半年的时光没输出了&#xff0c;看着昨天加班调的PID数据&#xff0c;灵光闪现了一下&#xff0c;赶紧记录。 参数整定找最佳&#xff0c;从小到大顺序查   先是比例后积分&#xff0c;最后再把微分加 曲线振荡很频繁&#xff0c;比例度盘要放大   曲…