C05S07-Tomcat服务架设

一、Tomcat

1. Tomcat概述

Tomcat也是一个Web应用程序,具有三大核心功能。

  1. Java Servlet:Tomcat是一个Servlet容器,负责管理和执行Java Servlet、服务端的Java程序,处理客户端的HTTP请求和响应。
  2. Java Server:服务端配置。
  3. Pages:基于Java代码完成的动态页面技术。

既可以作为Java代码为基础的动态页面,也可以处理和转发动态请求。但是Tomcat的并发能力差,适用于小项目。

Tomcat的核心组件:

  1. Web容器:处理Web请求。
  2. JSP容器:解析index.jsp中的Java代码,转为Servlet代码,然后由Servlet编译执行。JSP是一种技术模板,类似HTML,允许在HTML文件中嵌入Java代码。
  3. Servlet容器:接收Web容器的请求,负责加载、初始化、执行和管理。

Tomcat的功能组件:

  • Server:代表着整个Tomcat容器,包含着一个或者是多个Service组件。

  • Service:对外提供服务的组件,一个Server可以有多个Service组件,包含多个Connector组件和一个Engine组件。

  • Connector:接收客户端发送的请求。

  • Container:逻辑上的组件,包括Engine、Host、Context和Wrapps。

  • Engine:处理Connector接收的请求的组件,包含着一个或多个Host组件。

  • Host:代表着一个虚拟主机,可以理解为是一个站点,能够运行多个Web任务,包含着一个或者多个Context组件。

  • Context:虚拟主机运行的任务,也就是Web应用,管理者一个或者多个Wrapper组件。

  • Wrapper:最终的封装器,容器的最底层。

2. Tomcat安装

  1. 安装Java环境。

    apt -y install openjdk-8-jdk-headless
    
  2. 解压Tomcat安装包。

    tar -xf apache-tomcat-9.0.16.tar.gz
    mv apache-tomcat-9.0.16 /usr/local/tomcat
    
  3. 启动和关闭Tomcat。

    cd /usr/local/tomcat/bin
    ./startup.sh
    ./shutdown.sh
    

二、Tomcat优化和动静分离

1. Tomcat优化

1.1 Tomcat配置优化

  1. 编辑Tomcat的配置文件/usr/local/tomcat/conf/server.xml,修改Connector组件标签的属性配置。

    <Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxThreads="500"minSpareThreads="50"enableLookups="false"disableUploadTimeout="true"acceptCount="300"processorCache="500"URIEncoding="UTF-8"compression="on"compressionMiniSize="2048"compressionMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png" />
    
    • port:指定连接器监听的端口号。
    • protocol:指定连接器使用的协议。
    • connectionTimeout:指定等待接受连接的超时时间,单位是毫秒。
    • redirectPort:指定采用HTTPS协议的重定向端口。
    • maxThreads:指定最大的工作线程数。
    • minSpareThreads:指定保持活动的最小空闲线程数。
    • enableLookups:指定是否启用DNS反向解析,设置为false表示禁用以提高访问速度。
    • disableUploadTimeout:指定是否禁用上传超时,设置为true表示禁用。
    • acceptCount:指定在所有工作线程都被占用时,可以排队等待的请求数
    • processorCache:指定处理器缓存的大小。
    • URIEncoding:指定URI的编码格式。
    • compression:指定是否使用压缩功能。设置为on,表示使用压缩功能。
    • compressionMiniSize:指定开始使用压缩功能的数据大小下限。
    • compressionMimeType:指定可以被压缩的文件类型。
  2. 保存文件后,重新启动Tomcat。

    cd /usr/local/tomcat/bin
    ./shutdown.sh
    ./startup.sh
    

1.2 内核优化

  1. 编辑/etc/sysctl.conf,写入相关配置。下面是部分常见的内核优化配置。

    net.ipv4.ip_forward=0 #开启服务数据的路由功能
    net.ipv4.tcp_syncookies = 1 #启动SYN cookies功能,避免tcp SYN的攻击
    net.ipv4.tcp_max_tw_buckets = 6000 #系统中允许出现的最大的time_wait的数量
    net.ipv4.tcp_tw_reuse = 1 启用TIME_WAIT套接字的重用
    vm.overcommit_memory = 0: 控制内存超额分配策略,避免OOM killer杀掉进程。
    
    • 更多配置参数可以执行命令 sysctl -a 进行查看。
  2. 保存文件后,执行下面的命令加载内核配置。

    sysctl -p
    

1.3 JVM优化

  1. 编辑Tomcat安装目录中bin目录下的catalina.sh文件,在文件开头写入以下内容。

    JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -Djava.awt.headless=true -XX:+DisableExplicitGC"
    
  2. 保存文件后,重新启动Tomcat。

    cd /usr/local/tomcat/bin
    ./shutdown.sh
    ./startup.sh
    

2. Tomcat动静分离

  1. 编辑Nginx服务配置文件nginx.conf,设置反向代理,这里以七层反向代理为例。

    upstream backend {server 192.168.1.129:8080;
    }location ~ \.jsp$ {proxy_pass  http://backend;
    }
    
  2. 保存文件后,检查配置语法是否有误,并重启Nginx服务。

    nginx -t
    systemctl restart nginx
    
  3. 在Tomcat安装目录下的webapps中创建一个test目录,编辑一个index.jsp文件。

    cd /usr/local/tomcat/webapps
    mkdir test
    echo 123 > test/index.jsp
    
  4. 编辑conf目录下的server.xml文件,新增一个Context模块设置网页文件位置。

    <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
    
  5. 保存文件后,重新启动Tomcat。

    cd /usr/local/tomcat/bin
    ./shutdown.sh
    ./startup.sh
    
  6. 访问该网页。

    curl 192.168.1.128/index.jsp
    

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机断网没有网络,需清理内存,删除后再重启

进入NetworkManager可能没权限&#xff0c;设置权限777 to

整合 Knife4j 于 Spring Cloud 网关:实现跨服务的 API 文档统一展示

&#x1f3af;导读&#xff1a;本文档概述了构建和配置基于JDK 17、Spring Boot 3.0.7及Spring Cloud 2022.0.3的微服务系统&#xff0c;特别聚焦于集成Knife4j以增强API文档管理和接口测试功能。文中详细介绍了如何在Spring Boot应用中添加Knife4j依赖、配置Swagger UI路径和A…

使用光耦合器测量电压:实用指南

光耦合器&#xff0c;也称为光隔离器&#xff0c;是用于电气隔离和信号传输的多功能组件。其应用之一是测量电路中的电压。本文介绍了如何利用光耦合器进行电压测量&#xff0c;阐明了其操作和实际用途。 使用光耦合器进行电压测量的工作原理 使用光耦合器进行电压测量依赖于其…

LeetCode刷题day29——动态规划(完全背包)

LeetCode刷题day29——动态规划&#xff08;完全背包&#xff09; 377. 组合总和 Ⅳ分析&#xff1a; 57. 爬楼梯&#xff08;第八期模拟笔试&#xff09;题目描述输入描述输出描述输入示例输出示例提示信息 分析&#xff1a; 322. 零钱兑换分析&#xff1a; 279. 完全平方数分…

【STM32 Modbus编程】-作为主设备写入多个线圈和寄存器

作为主设备写入多个线圈和寄存器 文章目录 作为主设备写入多个线圈和寄存器1、硬件准备与连接1.1 RS485模块介绍1.2 硬件配置与接线1.3 软件准备2、写入多个线圈2.1 数据格式2.2 发送数据2.3 结果3、写入多个寄存器3.1 数据格式3.2 发送数据3.3 结果本文将实现STM32作为ModBus主…

Unity 圆形循环复用滚动列表

一.在上一篇垂直循环复用滚动列表的基础上&#xff0c;扩展延申了圆形循环复用滚动列表。实现此效果需要导入垂直循环复用滚动列表里面的类。 1.基础类 using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using …

【前后端】HTTP网络传输协议

近期更新完毕&#xff0c;建议关注、收藏&#xff01; http请求 URL 严格意义上应该是URI http or https http不加密不安全&#xff1b;https加密协议&#xff08;公网使用&#xff09; http端口号80 https端口号443GET or POST GET和POST是HTTP请求的两种基本方法. 因为POST需…

基于LSB最低有效位的音频水印嵌入提取算法FPGA实现,包含testbench和MATLAB对比

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 &#xff08;完整版代码包含详细中文注释和操作步骤视…

疾风大模型气象系统:精准预报,引领未来

精准预报,引领未来 在当今快速变化的世界中,天气预报已成为日常生活和社会运行中不可或缺的一部分。从规划日常出行到防范极端天气影响,高精准的气象服务正在重新定义我们的生活方式。而在这一领域,疾风大模型气象系统以其卓越的技术实力和领先的预测能力,正引领气象服务…

中间件 redis安装

redis官网地址&#xff1a;Redis - The Real-time Data Platform 环境 CentOS Linux release 7.9.2009 (Core) java version "17.0.12" 2024-07-16 LTS 1、通过压缩包安装redis 1&#xff0c;远程下载redis压缩包&#xff0c;或去官网下载&#xff1a;Downloads …

rfid标签打印开发指导

使用java连接斑马打印机&#xff0c;开发rfid标签打印功能 1.引用斑马打印机的SDKjar包 ZSDK_API.jar 将这个jar文件放到项目的lib目录下&#xff0c;没有就新建一个。 然后点击 File–Project Sreucture–Modules 点击加号 选择对应jar包即可 2.代码开发 1.打印机连接地址…

【笔记】深度学习模型评估指标

推荐链接&#xff1a; &#xff08;0&#xff09;多分类器的评价指标 &#xff08;1&#xff09;泛化误差的评价方法&#xff1a;【机器学习】模型评估与选择&#xff08;留出法、交叉验证法、查全率、查准率、偏差、方差&#xff09; &#xff08;2&#xff09;机器学习&…

【MAC】深入浅出 Homebrew 下 Nginx 的安装与配置指南

硬件&#xff1a;Apple M4 Pro 16寸 系统&#xff1a; macos Sonoma 15.1.1 Nginx 是一款高性能的 Web 服务器和反向代理服务器&#xff0c;广泛应用于全球各地的网站和企业应用中。本文将详细介绍如何在 macOS 环境下使用 Homebrew 安装、启动、管理以及优化配置 Nginx&#x…

OpenCV 学习记录:首篇

最近在学习机器视觉&#xff0c;希望能通过记录博客的形式来鞭策自己坚持学完&#xff0c;同时也把重要的知识点记录下来供参考学习。 1. OpenCV 介绍与模块组成 什么是 OpenCV&#xff1f; OpenCV (Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习软…

git使用和gitlab部署

1.ci,cd,DevOps ci&#xff1a;持续集成&#xff1a;开发的代码集成到代码仓库 cd&#xff1a;持续交互&#xff1a;从代码仓库拉取代码到部署到测试环境 cd&#xff1a;持续部署&#xff1a;从代码仓库拉取代码到部署到生产环境 DevOps:开发写完的代码自动集成&#xff0c…

数据结构:B树与B+树

工具 数据结构与算法可视化在线演示 m阶 B树有以下特点&#xff1a; B-树&#xff0c;有时又写为B_树&#xff08;其中的-或者_只是连字符&#xff0c;并不读作 B减树&#xff09;&#xff0c;一颗 m 阶(或度)的 B-树&#xff0c;或者本身是空树&#xff0c;否则必须满足以下…

CSDN数据大屏可视化【开源】

项目简介 本次基于版本3 开源 版本3开源地址&#xff1a;https://github.com/nangongchengfeng/CsdnBlogBoard.git 版本1开源地址&#xff1a;https://github.com/nangongchengfeng/CSDash.git 这是一个基于 Python 的 CSDN 博客数据可视化看板项目&#xff0c;通过爬虫采…

YOLOv8全解析:高效、精准的目标检测新时代——创新架构与性能提升

目录 前言 一、模型介绍 二、网络结构 Backbone改进 特征增强网络(neck) 检测头(head) 其它部分 三、Loss计算 四、性能表现 五、YOLOv8使用详解 添加模型 其它部分 创建数据集 数据标注 模型训练 模型预测 六、YOLOv8总结 前言 YOLO&#xff08;You Only Lo…

重拾设计模式--模板方法模式

文章目录 一、模板方法模式概述二、模板方法模式UML图三、优点1代码复用性高2可维护性好3扩展性强 四、缺点五、使用场景六、C 代码示例1七、 C 代码示例2 一、模板方法模式概述 定义&#xff1a;定义一个操作中的算法骨架&#xff0c;而降一些步骤延迟到子类中。模板方法使得…

林子雨-大数据课程实验报告(一)

实验一&#xff1a;熟悉常用的Linux操作和Hadoop操作 一、实验目的 Hadoop运行在Linux系统上&#xff0c;因此&#xff0c;需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作&#xff0c;为顺利开展后续其他实验奠定基础。 二、实验平台 操作系统…