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

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.lryc.cn/news/505326.html

相关文章:

  • Java stream groupingBy sorted 实现多条件排序与分组的最佳实践
  • JAVA:代理模式(Proxy Pattern)的技术指南
  • 爬取Q房二手房房源信息
  • Ansible自动化运维(五) 运维实战
  • K-means算法的python实现
  • 客户端(浏览器)vue3本地预览txt,doc,docx,pptx,pdf,xlsx,csv,
  • [SZ901]JTAG高速下载设置(53Mhz)
  • docker springboot 运维部署详细实例
  • Linux 查看目录命令 ls 详细介绍
  • React Native状态管理器Redux、MobX、Context API、useState
  • Three.js资源-模型下载网站
  • linux 添加默认网关
  • 【学习笔记】深入浅出详解Pytorch中的View, reshape, unfold,flatten等方法。
  • CTFHUB-web(SSRF)
  • 分解质因数
  • 前景物体提取
  • Kotlin复习
  • 【AI日记】24.12.17 kaggle 比赛 2-6 | 把做饭看成一种游戏 | 咖喱牛肉
  • 操作系统(14)请求分页
  • uniapp navigateTo、redirectTo、reLaunch等页面路由跳转方法的区别
  • 模型 A/B测试(科学验证)
  • 谷歌发布升级版AI视频生成器Veo 2与图像生成器Imagen 3
  • 快速掌握源码部署Filebeat
  • C++ 哈希表封装unordered_map 和 unordered_set
  • pymysql 入门
  • Leecode刷题C++之形成目标字符串需要的最少字符串数①
  • Linux应用开发————mysql数据库
  • 4_使用 HTML5 Canvas API (3) --[HTML5 API 学习之旅]
  • docker build次数过多,导致磁盘内存不足:ERROR: no space left on device
  • LDO和DC-DC的区别、DCDC和LDO主要指标