Tomcat的安装即使用

Tomcat的概念

Tomcat服务器是Java语言开发的,免费的开放源代码的Web应用服务器。
Tomcat处理静态HTML的能力远不及Apache或者Nginx,通常是作为一个Servlet和JSP容器,单独运行在后端。
Tomcat是由三个功能组合而成:
java servlet:Tomcat是一个servlet容器,负责管理和执行java-servlet,服务端的java程序,处理客户端的http请求后台响应
java server:服务端的配置,pages动态页面的技术就是由Java代码完成的,tomcat既可以作为以java代码为基础的动态页面,也可以处理和转发动态请求。
Tomcat的并发能力很差,仅适用于小项目

Tomcat核心组件

web容器:处理web请求,影响,动态页面的展示
jsp容器:解析index.jsp中java代码转换为servlet的代码,然后servlet编译执行。
jsp是一种技术模板,类似于html语言,允许在html文件当中,嵌入java代码
servler容器:接受web容器的请求,负责加载,初始化,执行和管理
在这里插入图片描述connector:接受外部的请求已经响应请求
container:包含了engine host context webapp四个组件组成
service:包含了connector和container
engine:引擎,用来管理多个虚拟主机,一个service只能有一个engine
host;代表一个虚拟主机,也可以理解为站点
context:对应web应用
wrapps:最终的封装器,容器的最底层,index.jsp

Tomcat的安装

安装java

apt -y install openjdk-8-jdk-headless

把apache-tomcat安装包放到opt目录下并解压
重命名为tomcat并移到/usr/local/目录下

tomcat目录下的内容:
bin:启动和关闭脚本文件
conf:tomcat的配置文件
logs:tomcat的日志文件
webapps:保存不同项目的应用目录
work:工作目录
temp:临时文件保存目录

切换到/usr/local/bin目录下,执行
./startup.sh
#开启tomcat
netstat -antp | grep 8080
#查看端口是否正常启动

在浏览器上输入对应的网址加上8080端口,查看网页是否正常
在这里插入图片描述

配置多台虚拟主机

cd /usr/local/tomcat/webapps
mkdir test1 test2
cd test1/
vim index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP test1 page</title></head><body><% out.println("动态页面 1,http://www.test1.com");%></body></html>保存退出
cd ../test2
vim index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP test1 page</title></head><body><% out.println("动态页面 1,http://www.test2.com");%></body></html>保存退出
cd /usr/local/tomcat/conf
vim server.xml<Host name="www.test1.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test1" path="" reloadable="true" />
</Host><Host name="www.test2.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test2" path="" reloadable="true" /></Host>保存退出
cd ../conf
./startup.sh
vim /etc/hosts192.168.42.20 www.test1.com www.test2.com保存退出

www.test1.com域名
在这里插入图片描述
www.test2.com域名
在这里插入图片描述

Tomcat的优化和动静分离

Tomcat的优化

默认的安装情况下,tomcat经常会假死的情况,所以tomcat需要进行优化
优化的三个方面
1、tomcat的配置优化
2、操作系统的内核优化
3、jvm调优

tomcat的配置优化

在tomcat的配置文件的第69<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxThreads="500"minSpareThreads="50"enableLookkups="false"disableUpploadTimeout="true"acceptCount="300"processorCache="500"URIEncoding="UTF-8"compression="on"compressionMinSize="2048"compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg,image/png"/>

8080: tomcat对外提供访问的默认端口
protocol: 默认的协议就是http/1.1
connectionTimeout:连接的超时时间 20000毫秒=20秒

redirectPort:如果是https,自动转到8843,为https协议服务的

maxThreads=“500” :tomcat可以创建最大的线程数

minSpareThreads=“50”:空闲线程的最小数量,用来处理溢出部分的请求

enableLookkups=“false”:禁用反向解析,提高访问速度

disableUpploadTimeout=“true”:开启上传的超时时间,连接在上传期间不存在超时的情况

acceptCount=“300”:当线程都在忙碌的时候,可以排队等待处理的请求数量

processorCache=“500”:连接器可以缓存的最大处理的数量

URIEncoding=“UTF-8”:设置字符集编码

compression=“on”:开启响应内容的压缩功能

compressionMinSize=“2048”:如果文件大小超过2M(2048KB),才会进行压缩。
compressableMimeType=“text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg,image/png”:支持被压缩的文件类型,包括HTML、XML、JavaScript、CSS、纯文本、GIF图像、JPEG图像和PNG图像。

在网页浏览tomcat的配置
vim /usr/local/tomcat/webapps/manager/META-INF/context.xml第20行
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />改成
allow=.*/>
vim /usr/local/tomcat/conf/tomcat-user.xml
第22<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>

可以在网页上查看tomcat的配置
在这里插入图片描述
在这里插入图片描述

操作系统的内核优化

在/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_recycle 和 net.ipv4.tcp_tw_reuse:#启用TIME_WAIT套接字快速回收和重用。
vm.overcommit_memory=0:#控制内存超额分配策略,避免OOM killer杀掉进程。
net.ipv4.ip_local_port_range=1024 65000
net.ipv4.tcp_window_scaling=1:#启用TCP窗口缩放功能,允许大窗口的TCP传输。
net.ipv4.conf.default.accept_source_route:#不接受源路由,增加网络安全性。
kernel.sysrq=0:#禁用了内核的SysRq功能,SysRq允许在系统崩溃或出现问题时执行一些调试操作。
kernel.core_uses_pid=1:#设置核心转储文件名中包含进程ID,有助于标识是哪个进程导致了核心转储。
kernel.msgmnb 和 kernel.msgmax:#增加IPC消息队列的默认和最大大小,用于进程间通信。
kernel.shmmax 和 kernel.shmall:#调整共享内存的最大大小和分配页面数。

jvm优化

vim /usr/local/tomcat/bin/catalina.sh
第119行
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -Djava.awt.headless=true -XX:+DisableExplicitGC"
解析
$JAVA_OPTS -server jvm服务端的优化:
-Xms2048m:设置JVM分配的最小内存为2048MB。
-Xmx2048m:设置JVM分配的最大内存为2048MB。
24G:设置成的内存
官方建议,初始大小核最大值设置成一样的值,一般是物理内存大小的一般
-Xmn768m:设置新生代的内存大小为768,建议设置成整个堆内存大小的3/8
-XX:ParallelGCThreads=2:设置资源回收器的线程数量是2
-XX:MetaspaceSize=128m:设置元空间的初始大小
-XX:MaxMetaspaceSize=512m:设置元空间的最大值,元:都是保存数据的核心信息
-Djava.awt.headless=true :启用无图形界面的模式,防止在linux系统下,web页面无法正常显示图片
-XX:+DisableExplicitGC:垃圾回收机制的信息在后台显示

在这里插入图片描述
内存匹配改变
在这里插入图片描述

在这里插入图片描述
Eden Space: 堆内存 用来存储新创建的对象,这一部分的是完全分配给新创建的对象使用

G1 Old Gen:堆内存 存储的是长时间活动的对象

Survivor Space :堆内存,存储中中生代的对象

CodeHeap ‘non-nmethods’:非堆内存,存储已经编译的代码

CodeHeap ‘non-profiled nmethods‘:非堆内存,已经被压缩的类定义

CodeHeap ‘profiled nmethods’:非堆内存当中的元数据信息

Compressed Class Space:存储已压缩的类定义

Metaspace:元数据空间的大小
在这里插入图片描述
ajp:ajp是一种协议,ajp协议:是tomcat服务端和前端的服务器进行连接的协议

作用:提供负载均衡和高效请求的转发

nio:nio技术:异步非阻塞通信

和前端服务器通信的端口是8009

Tomcat的动静分离

nginx1服务器
vim nginx.confupstream tomcat {server 192.168.42.30:8080 weight=3;server 192.168.42.40:8080 weight=2;}...location ~* \. jsp$ {proxy_pass http://tomcat;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header HOST $host;#设定后端服务器收到的请求访问的主机名,域名,ip端口。默认的proxy_pass#指定的主机名,是代理的主机名,不是客户端的真实主机名	}保存退出systemctl  restart nginx
tomcat第一台
cd /usr/local/tomcat/webapps
mkdir test1 
cd test1/
vim index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP test1 page</title></head><body><% out.println("动态页面 1,http://www.test1.com");%></body></html>保存退出cd /usr/local/tomcat/conf
vim server.xml<Host name="www.test1.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test1" path="" reloadable="true" />
</Host>
tomcat第二台
cd ../test2
vim index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP test1 page</title></head><body><% out.println("动态页面 2,http://www.test2.com");%></body></html>保存退出
cd /usr/local/tomcat/conf
vim server.xml<Host name="www.test2.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test2" path="" reloadable="true" /></Host>保存退出
cd ../conf
./startup.sh

在这里插入图片描述
在这里插入图片描述
按照以下配置配置出tomcat的动静分离
客户端: 浏览器

nginx1: 调度器 192.168.42.20

nginx2 静态页面 192.168.42.30

nginx3 静态页面 192.168.42.40

tomcat1: 后端服务器1 动态 192.168.42.21

tomcat2: 后端服务器2 动态 192.168.42.22

调度器
cd /usr/local/nginx/conf
vim nginx.donf#全局stream {upstream xy104 {server 192.168.42.30:80;server 192.168.42.40:80;}server {listen 81;proxy_pass xy104;}}保存退出
systemctl restart nginxnginx2的配置
cd  /usr/local/nginx/html
vim index.htmlthis is xy104保存退出
cd ../conf
vim nginx.conf#http模块upstream tomcat {server 192.168.42.21:8080;server 192.168.42.22:8080;}#server模块server {....keepalive_timeout 0;location ~* \.jsp$ {proxy_pass http://tomcat;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded-for;proxy_set_header Host $host;}....}保存退出
systemctl  restart nginxnginx3的配置
cd /usr/local/nginx/html
vim index.htmlthis is xy105保存退出
cd ../conf
vim nginx.conf
#http模块upstream tomcat {server 192.168.42.21:8080;server 192.168.42.22:8080;}#server模块server {....keepalive_timeout 0;location ~* \.jsp$ {proxy_pass http://tomcat;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded-for;proxy_set_header Host $host;}....}保存退出
systemctl restart nginxtomcat1的配置cd /usr/local/tomcat/webappsmkdir test1cd test1/vim index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP test1 page</title></head><body><% out.println("动态页面 1,http://www.test1.com");%></body></html>保存退出
cd /usr/local/tomcat/conf
vim server.xml<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test1" path="" reloadable="true" />
</Host>
cd ../bin
./shutdown.sh
./startup.shtomcat2的配置cd /usr/local/tomcat/webappsmkdir test2cd test2/vim index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>JSP test1 page</title></head><body><% out.println("动态页面 2,http://www.test2.com");%></body></html>保存退出
cd /usr/local/tomcat/conf
vim server.xml<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test2" path="" reloadable="true" />
</Host>
cd ../bin
./shutdown.sh
./startup.sh

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

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

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

相关文章

信创改造-Spring Boot 项目部署至 TongWeb

打 war 包参考&#xff1a;https://blog.csdn.net/z1353095373/article/details/144330999

ubuntu20.04+ROS Noetic 安装PX4+Mavros

文章目录 系统环境安装依赖PX4 安装老版本安装测试环境变量添加版本查看 安装MAVROS&#xff08;二进制安装非源码安装&#xff09;测试 OGC 地面站安装测试mavros与sitl通信参考 系统环境 ubuntu 20.04 ROS Noetic 如果系统安装了Anaconda等虚拟环境管理器&#xff0c;要退出…

day10 电商系统后台API——接口测试(使用postman)

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 目录 实战项目简介&#xff1a; 1、用户管理&#xff08;8个&#xff09; 1.1 登录 1.2 获取用户数据列表 1.3 创建用户 1.4 修改用户状态 1.5 根据id查询用户 1.6 修改用户信息 1.7 删除单个用户 1.8 …

C语言程序设计P5-5【应用函数进行程序设计 | 第五节】—知识要点:变量的作用域和生存期

知识要点&#xff1a;变量的作用域和生存期 视频&#xff1a; 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 有一个一维数组&#xff0c;内放 10 个学生成绩&#xff0c;写一个函数&#xff0c;求出平均分、最高分和最低分。 任务要求用一个函数来完…

CentOS安装Nginx提示没找到

说明&#xff1a;在CentOS操作系统里&#xff0c;用yum方式安装Nginx&#xff0c;提示下面的错误&#xff1b; 说没找到&#xff0c;敲下面的命令&#xff0c;看下包管理器里面有没有Nginx&#xff1b; yum list available nginx如下&#xff0c;确实没有找到&#xff1b; 敲下…

Edge SCDN深度解析,边缘安全加速的创新实践

边缘安全加速&#xff08;Edge Secure Content Delivery Network&#xff0c;SCDN&#xff09;是酷盾安全推出的边缘集分布式 DDoS 防护、CC 防护、WAF 防护、BOT 行为分析为一体的安全加速解决方案。通过边缘缓存技术&#xff0c;智能调度使用户就近获取所需内容&#xff0c;为…

HTML、CSS表格的斜表头样式设置title 画对角线

我里面有用到layui框架的影响&#xff0c;实际根据你自己的框架来小调下就可以 效果如下 上代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…

java 导出word锁定且部分内容解锁可编辑

使用 Apache POI 创建带编辑限制的 Word 文档 在日常工作中&#xff0c;我们可能需要生成一些带有编辑限制的 Word 文档&#xff0c;例如某些段落只能被查看&#xff0c;而其他段落可以自由编辑。本文介绍如何使用 Apache POI 创建这样的文档&#xff0c;并通过代码实现相应的…

【多模态文档智能】OCR-free感知多模态大模型技术链路及训练数据细节

目前的一些多模态大模型的工作倾向于使用MLLM进行推理任务&#xff0c;然而&#xff0c;纯OCR任务偏向于模型的感知能力&#xff0c;对于文档场景&#xff0c;由于文字密度较高&#xff0c;现有方法往往通过增加图像token的数量来提升性能。这种策略在增加新的语言时&#xff0…

docker快速实现ELK的安装和使用

目录 一、ELK功能原理 二、项目功能展示​ 三、日志查询展示​ 四、ELK安装步骤 1、创建elasticsearch、kibana、filebeat相关data、log、conf目录 2、进入/usr/local/elk目录&#xff0c;并创建一个docker网络 3、启动 elasticsearch容器 4、运行kibana容器 5、启动f…

windows下Qt5自动编译配置QtMqtt环境

原文链接&#xff1a;windows下Qt5自动编译配置QtMqtt环境&#xff08;11&#xff09;-CSDN博客 1、概述 Qt默认是不包含mqtt库的&#xff0c;如果需要使用到mqtt库就只能自己编译配置&#xff1b;网络所有的QtMqtt配置的文章都是编译完成手动复制&#xff0c;非常麻烦&#x…

动态高优先权优先进程调度

一、实验目的 目的&#xff1a;了解并掌握动态高优先权优先调度算法的理论&#xff0c;掌握动态优先权的设置方式。 任务&#xff1a;模拟实现动态高优先权优先的调度&#xff08;若数值越大优先权越高&#xff0c;每运行一个时间单位优先权-n&#xff0c;若数值越小优先权越高…

编程考古-CPU(中)

P5:The First Pentium 奔腾 奔腾&#xff08;Pentium&#xff09;处理器于1993年首次亮相&#xff0c;标志着英特尔x86处理器家族的一个新时代的开始。它打破了以往80x86数字命名的传统&#xff0c;成为英特尔首个不沿用此命名规则的x86处理器。内部架构上&#xff0c;奔腾采用…

基于米尔全志T527开发板的OpenCV进行手势识别方案

本文将介绍基于米尔电子MYD-LT527开发板&#xff08;米尔基于全志T527开发板&#xff09;的OpenCV手势识别方案测试。 摘自优秀创作者-小火苗 米尔基于全志T527开发板 一、软件环境安装 1.安装OpenCV sudo apt-get install libopencv-dev python3-opencv 2.安装pip sudo apt…

《数据结构之美-- 单链表》

引言&#xff1a; 首先由上次我们实现的顺序表聊起&#xff0c;我们在实现顺序表的时候会发现&#xff0c;在每次插入数据时当空间不够时就会涉及到扩容&#xff0c;而顺序表的扩容一般都是呈二倍的形式来进行&#xff0c;因此这就有可能造成空间的浪费&#xff0c;那该如何解…

薄膜电容的种类与应用

聚酯电容 应用&#xff1a;对稳定性和损耗要求不高的低频电路 聚酯&#xff08;涤纶&#xff09;电容&#xff08;CL&#xff09;是用两片金属箔作电极&#xff0c;夹在极薄绝缘介质中&#xff0c;卷成圆柱形或扁柱形芯子介质是涤纶。聚酯电容的介电常数较大&#xff0c;体积…

YashanDB演讲实录|王南:YAC集群,核心平替

本文为“2024国产数据库创新生态大会”深算院首席产品官兼崖山科技副总裁王南的演讲实录分享&#xff0c;主题为 《YAC集群&#xff0c;核心平替》&#xff0c;欢迎阅读。 尊敬的各位领导、各位专家、各位来宾&#xff1a;大家下午好&#xff01;我是王南。今天非常荣幸能够有…

51c大模型~合集89

我自己的原文哦~ https://blog.51cto.com/whaosoft/12815167 #OpenAI很会营销 而号称超强AI营销的灵感岛实测成效如何&#xff1f; OpenAI 是懂营销的&#xff0c;连续 12 天发布&#xff0c;每天一个新花样&#xff0c;如今刚过一半&#xff0c;热度依旧不减。 毫无疑问&…

细说Flash存储芯片W25Q128FW和W25Q16BV

目录 一、Flash存储芯片W25Q128FW 1、W25Q128硬件接口和连接 2、存储空间划分 3、数据读写的原则 4、操作指令 &#xff08;1&#xff09;“写使能”指令 &#xff08;2&#xff09;“读数据”指令 &#xff08;3&#xff09;“写数据”指令 5、状态寄存器SR1 二、Fl…

浩辰CAD教程004:柱梁板

文章目录 柱梁板标准柱角柱构造柱柱齐墙边绘制梁绘制楼板 柱梁板 标准柱 绘制标准柱&#xff1a; ①&#xff1a;点选插入柱子②&#xff1a;沿着一根轴线布置柱子③&#xff1a;指定的矩形区域内的轴线交点插入柱子 替换现有柱子&#xff1a;选择替换之后的柱子形状&#x…