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

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.kler.cn/a/447594.html

相关文章:

  • RAG开发中,如何用Milvus 2.5 BM25算法实现混合搜索
  • Java游戏开发基础:从零开始制作一个简单的2D游戏
  • Loki 微服务模式组件介绍
  • 智能工厂的设计软件 三种处理单元(NPU/GPU/CPU)及其在深度学习框架中的作用 之5(腾讯云AI代码助手 之3)
  • 金碟中间件-AAS-V10.0安装
  • EasyExcel 导出文件
  • 15款行业大数据报告下载网站
  • H5 ios软键盘弹起遮挡输入框
  • #渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
  • macOS 配置 vscode 命令行启动
  • pat乙级1072 开学寄语
  • WebRTC服务质量(07)- 重传机制(04) 接收NACK消息
  • 基于微信小程序的消防隐患在线举报系统
  • Tensor
  • sh cmake-linux.sh -- --skip-license --prefix = $MY_INSTALL_DIR
  • Javascript元编程
  • 2024年CCF 非专业级软件能力认证CSP-J/S 第二轮( 提高组) 染色(color)
  • HDR视频技术之八:色域映射
  • Kafka学习篇
  • 如何使用Python编写有效的网页抓取脚本以获取和处理数据?
  • blender生成城市白膜数据
  • 云技术基础
  • cisp-pte培训需要多久
  • JAVA开发Erp时日志报错:SQL 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘***‘ 中的标识列插入显式值
  • 【5G】5G 无线协议 Radio Protocols(一)
  • 【大语言模型】ACL2024论文-30 探索语言模型在文本分类中的伪相关性:概念层面的分析