服务(第九篇)tomcat的部署和优化

news2024/11/23 21:40:03

tomcat的介绍:

免费的、开放源代码的Web应用服务器(用java开发的)

Apache软件基金会(Apache Software Foundation)Jakarta项目中的一个核心项目

由Apache、Sun和一些公司及个人共同开发而成

深受Java爱好者的喜爱,并得到部分软件开发商的认可

目前比较流行的Web应用服务器

tomcat的核心组件结构:

①connector:主要用于接受客户的请求和回复响应,讲请求转发给后端的容器处理;

②container:负责对内处理逻辑请求;内部用四个容器组成:Engine、Host、Context和Mrapper

container的四个容器:

①engine(引擎):管理多个虚拟主机,一个 Service 最多只能有一个 Engine;

②host:一个虚拟主机,也可以叫站点,通过配置 ost 就可以添加站点;

③context:代表一个 Web 应用,包含多个 servlet 封装器;

④Wrapper: 装器,容器的最底层;负责对象实例的创建、执行和销毁功能。

Tomcat 请求过程:
1、用户在浏览器中输入网址,请求被发送到本机端口 8080,被在那里监听的 Connector 获得;
2、Connector 把该请求交给它所在的 Service 的 Engine(Container)来处理,并等待 Engine 的回应;
3、请求在 Engine、Host、Context 和 Wrapper 这四个容器之间层层调用,最后在 Servlet 中执行对应的业务逻辑、数据存储等。
4、执行完之后的请求响应在 Context、Host、Engine 容器之间层层返回,最后返回给 Connector,并通过 Connector 返回给客户端。
 

部署tomcat:

①前期准备工作:关闭非防火墙和selinux机制,安装包拖进来(jdk的包和appche-tomccat的包)

②安装jdk:rpm -ivh jdk-xxx-xxx-xxx.rpm

③设置jdk环境:vim /etc/profile.d/java.sh  最后source /etc/profile.d/java.sh

 ④安装启动tomcat:

cd /opt→ tar zxvf 包 →mv apache-tomcat-xxx /usr/local/tomcat

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

netstat -antup | grep 8080查看端口是否在

⑤添加service服务怎么添加:vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat server
Wants=network-online.target
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_201-amd64"
Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
Environment="CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]WantedBy=multi-user.target

虚拟主机(添加两个host和context不同的域名):

1\tomcat的主配置文件是vim /usr/local/tomcat/conf/server.xml

2\在165行添加:

<Host name="www.kgc.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context docBase="/usr/local/tomcat/webapps/kgc(这里是根目录!!!)" path="" reloadable="true" />
</Host>

3\在webapps目录中创建kgc目录里面添加文件(格式为jsp结尾的文件)

4\改完后cd  /usr/local/tomcat/bin →./startup.sh

tomcat的优化:

①maxThreads:Tomcat可创建的最大的线程数,默认值是 200;

②minSpareThreads:最小空闲线程数,默认值是 10;

③maxSpareThreads:最大空闲线程数,默认值是-1(无限制);

④URIEncoding:URL 编码格式,一般采用UTF-8;

⑤enableLookups:不反查域名,设置为 false;

⑥connnectionTimeout:网络连接超时,单位:毫秒,默认 20000 毫秒;

⑦disableUploadTimeout:上传时是否使用超时机制,应设置为 true;

⑧connectionUploadTimeout:上传超时时间;

⑨acceptCount:连接等待,默认为 100;

⑩maxKeepAliveRequests:一个长连接的最大请求数,1,代表关闭长连接,-1,代表请求数无限制;

⑪compression:是否数据进行GZIP压缩;

⑫compressionMinSize:压缩响应的最小值,默认2048;

⑬compressableMimeType:压缩类型;

⑭noCompressionUserAgents="gozilla, traviata":哪些浏览器不启用压缩。

Tomcat多实例部署:

①mkdir /usr/local/tomcat→ cp -a /tomcat1 /tomcat2 

 ②配置 tomcat 环境变量vim /etc/profile.d/tomcat.sh 最后source /etc/profile.d/tomcat.sh

 ③修改tomcat2的conf(因为端口不能同时使用相同的):vim /usr/local/tomcat/tomcat2/conf/server.xml

 ④修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量

vim /usr/local/tomcat/tomcat1/bin/startup.sh 

vim /usr/local/tomcat/tomcat1/bin/shutdown.sh 

vim /usr/local/tomcat/tomcat2/bin/startup.sh 

vim /usr/local/tomcat/tomcat2/bin/shutdown.sh 

 ⑤启动各 tomcat 中的 /bin/startup.sh 
/usr/local/tomcat/tomcat1/bin/startup.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

⑥netstat -natp | grep java

 如果出来这张图片就对了!!

测试网页:

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

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

相关文章

干货|实验操作难入门?快来看JoVE视频网站!

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 当导师要求我们学习、模仿一些学术大神所做的心理学实验&#xff0c;尤其是采用脑影像、脑电技术等高端仪器的实验时&#xff0c;我们往往会因为缺少对具体操作细节的了解而感到困惑或困难。…

【python视图2】基于networkx的10个绘图技巧

一、说明 networkx在02年5月产生&#xff0c;是用python语言编写的软件包&#xff0c;便于用户对复杂网络进行创建、操作和学习。利用networkx可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型、设计新的网络算法、进行网络…

MIPI摄像头工程=7系列FPGA + OV5640(MIPI) + 15 分钟 + VITIS

项目使用东西 硬件 Spartan-7 SP701 FPGA 7系列FPGA电阻网络实现的MIPI接口 OV5640 MIPI接口 软件 AMD Vivado 2020 版本以上 AMD Vitis 2020 介绍 MIPI 接口现在非常流行&#xff0c;国产FPGA目前基本都带MIPI接口&#xff0c;而AMD-Xilinx是从U系列开始支持MIPI电平&#x…

使用CMake的CPack工具打包项目

为了介绍如何使用CMake的CPack工具进行项目打包&#xff0c;这里使用了前文CMake项目使用ctestgtest进行单元测试中的示例。 为了更接近实际开发中项目的情况&#xff0c;自行下载gtest并进行源码编译来模拟实际项目中的依赖项&#xff1b;在实际的开发中&#xff0c;可能会有…

chatgpt智能提效职场办公-ppt怎么压缩文件大小

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 压缩PPT文件大小有以下几种方法&#xff1a; 压缩图片大小&#xff1a;在PPT当中&#xff0c;图片是占用存储空间最大的部分&#xff0…

物联网多协议、多场景自定义测试|XMeter Cloud 更新

近日&#xff0c;全球首个物联网 MQTT 负载测试云服务 XMeter Cloud 推出了自定义场景测试功能。 该功能将满足用户自主定义测试场景和测试更广泛协议的需求&#xff0c;实现对除 MQTT 以外的 TCP、WebSocket、HTTP 等其他网络协议的测试&#xff0c;帮助用户构建更复杂的测试…

mybatis模糊查询以及结果封装详解

mybatis模糊查询以及结果封装详解 创建maven项目&#xff1a;项目结构如图所示 准备数据库表&#xff1a; 准备pom.xml所需的依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0…

程序地址空间(下)

目录 &#xff1a; 1.接上部分内容再谈谈地址空间是什么&#xff1f;&#xff1f; 2.页表MMU&#xff08;硬件设备&#xff09; 3.为什么要搞个虚拟地址映射到物理地址 4.解释为什么最开始的问题&#xff1f;&#xff1f;&#xff1f; ---------------------------------------…

Spring 的 IoC(控制反转)

IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反转”&#xff0c;它不是一门技术&#xff0c;而是一种设计思想&#xff0c;也是一个概念&#xff0c;同时是一个重要的面向对象编程法则&#xff0c;能够指导我们如何设计出松耦合、更优良的程序。 在这里说 IoC 之…

Java ---包装类

&#xff08;一&#xff09;包装类概念 官方说法&#xff1a; Java是面向对象的语言&#xff0c;但是为了便于开发者的使用&#xff0c;Java中却沿用了C语言的基本数据类型&#xff0c;在进行基本的数据计算时&#xff0c;开发者可以直接使用基础类。但是当需要和Java其他对象…

如何理解ThreadLocal

ThreadLocal的基本概念 在并发编程中&#xff0c;多个线程访问同一个变量&#xff0c;可能会出现线程安全问题、为了保证在多线程环境下访问共享变量的安全性&#xff0c;通常在访问共享变量的时候加锁&#xff0c;以实现线程同步的效果。 使用同步锁机制保证多线程访问共享变…

ChatGPT | 一文详解ChatGPT(学习必备)

本文概要 本篇文章主要介绍ChatGPT的产生和使用体验&#xff0c;适合不了解ChatGPT或者了解不够透彻的小伙伴&#xff0c;文中的描述非常详细&#xff0c;干货满满&#xff0c;感兴趣的小伙伴快来一起学习吧&#xff01; &#x1f31f;个人简介 ☀️大家好&#xff01;我是新人…

信息的相关性和冗余度:信息在整个文明中的作用

文章目录 I 古埃及的象形文字1.1 罗塞塔石碑1.2 古埃及文字音节和希腊字母的对应表1.3 破解古埃及文字 I 古埃及的象形文字 1.1 罗塞塔石碑 这个石碑是在公元前196年埃及国王托勒密五世加冕一周年的诏书。 在此前大约一百年&#xff0c;埃及已经被来自希腊北方城邦的亚历山大…

C++------引用

一、 引用概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。 类型& 引用变量名(对象名) 引用实体&#xff1b; int main() {//一个变量可以有多个引用…

LWIP协议与TCP/IP

1. 学习一个东西&#xff0c;先了解这个东西是干什么用的&#xff0c;哪些场景会用到它&#xff0c;与自己已经掌握的其他知识的联系 a. 例如&#xff1a;LWIP这个东西是干什么用的&#xff1a;他就是一个裁剪后保持大部分TCP/IP功能的协议。用少量的资源消耗实现一个较为完整的…

大数据实战 --- 淘宝用户行为数据分析

目录 开发环境 数据描述 功能需求 数据准备 数据清洗 用户行为分析 找出有价值的用户 开发环境 HadoopHiveSparkHBase 启动Hadoop&#xff1a;start-all.sh 启动zookeeper&#xff1a;zkServer.sh start 启动Hive&#xff1a; nohup hiveserver2 1>/dev/null 2>…

从零开始的ChatGLM 配置详细教程

从零开始的ChatGLM配置教程 文章目录 从零开始的ChatGLM配置教程一&#xff0c;前言二&#xff0c;环境配置1、下载ChatGLM项目2、配置程序运行环境 三、在HuggingFace下载chatGLM-6B模型1&#xff0c;安装 Git Lfs2&#xff0c;下载相关文件3&#xff0c;在HuggingFace中下载相…

什么是隔离放大器

隔离放大器&#xff08;也称为单位增益放大器&#xff09;是一种提供隔离的运算放大器电路电路的一部分与另一部分电路不同&#xff0c;这样就不会在电路的一部分中使用、消耗或浪费功率。 现在将对此进行彻底解释&#xff0c;因为这乍一看似乎是一个令人生畏的话题&#xff0c…

【TCP Wrappers】

目录 一、保护原理二、TCP Wrappers 保护机制的两种方式三、TCP Wrappers 的访问策略四、TCP Wrappers 机制的基本原则1、允许所有&#xff0c;拒绝个别2、允许个别&#xff0c;拒绝所有实列 一、保护原理 二、TCP Wrappers 保护机制的两种方式 1.直接使用 tcpd 程序对其他服务…

JavaFx 自定义封装 DateTimePicker 时间选择组件(支持时分秒)

JavaFx DateTimePicker 时间选择组件 javaFx 自定义时间选择组件 DateTimePicker&#xff0c; javaFx 源代码不支持时分秒选择&#xff0c;该代码组件支持时分秒选择&#xff0c;同时也支持清空、取消、此刻等操作&#xff01; 效果如下图所示&#xff1a; 源码地址&#xff…