Tomcat部署与优化

news2024/12/24 10:48:41

前言

Tomcat是一款免费、开放源代码的Web应用服务器,是Apache软件基金会的一个核心开源项目,属于轻量级应用服务器,通常意义上的 Web 服务器接受请求后,只是单纯地响应静态资源,如 HTML 文件,图片文件等,不能在后端进行一定的处理操作。
Tomcat 是 Apache 下的一个子项目,它具备 Web服务器的所有功能(WEB容器嵌入Servlet-》动态请求),不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的 Java 代码 Servlet,同时将执行的结果以 HTML 代码的形式写回客户端。

一、Tomcat核心组件

(一)、Web容器

负责WEB服务的TCP/IP、HTTP等协议响应、处理 (nginx 处理静态页面的应用交互)

1、JSP容器(JAVA Scripts page)

Tomcat 中 做为JAVA前端展示的一个组件 index.jsp
因为index.jsp <html /html> 标签,标签中会嵌套了很多JAVA代码,书写形式是, <%开头 以%>,是一种servlet(java后端逻辑业务的任务)

2、JSP(Java Server Pages)

是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头 以%>结束。JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。
JSP 通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

3、JSP

容器内提供了多个以index.jsp为结尾的JAVA前端页面展示,而index.jsp中由很多HTML标签,HTML标签中会嵌套很多JAVA代码,这些JAVA代码,最终会被翻译为Servlet 代码,(而本身JSP容器不具备解析与分析代码的功能,所以会给交给Servlet容器)

(二)、Servlet容器

Servlet 翻译index.jsp中这些java代码,执行一些servlet任务操作,比如数据库交互、加密、支付宝、人脸识别,
处理完后,将这些数据返回给JSP ,通过jsp中的index.jsp 展示出来(JAVA)

1、动态交互处理,会将JSP传递过来的代码翻译为Servlet

由catalina脚本帮忙处理的servlet代码,主要处理后端逻辑业务(比如与数据库交互、加密、支付宝、人脸识别等)
catalina实际处理的是Servlet代码,而Servlet代码是由Java编写的

2、tomcat web应用服务

web–> 通过http(s)来访问页面–>文件
web容器:封装一组文件
web 动态页面(web容器)

index.php–>动态
index.jsp–>tomcat
nginx–>html
动态页面:用户进行交互的一种web类的页面

在这里插入图片描述

二、Tomcat处理请求过程

处理请求详细过程
用户请求——》service(支撑tomcat的服务进程)
① 用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote(Tomcat 连接器框架/基础环境) HTTP/1.1 Connector(连接器,用于对接请求)获得。

② 接受请求之后交给container(容器)中的engine进行处理,engine(引擎)是做为容器运行的动力核心
③ 基于引擎支撑,容器中会跑很多host虚拟主机/项目,这些虚拟主机中也会有很多context(当前程序所处的环境),此处的context功能可以理解为:将JAVA前端和JAVA后端连接的展示的枢纽
④ Servlet处理完后会返回给context
⑤ context返回给engine引擎
⑥ engine返回给端口
⑦ 端口最后将页面展现给用户
在这里插入图片描述
开发————》编译(gcc jdk)——————》打包(jar/war)——————》发布(tomcat),借助tomcat 这个运行环境,将代码对应的功能模块运行起来

三、Tomcat部署

(一)、环境部署

1、关闭防火墙,将安装 Tomcat 所需软件包上传到 /opt 目录下

所需安装包为:
apache-tomcat-9.0.16.tar.gz
jdk-8u201-linux-x64.rpm
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

(二)、安装 JDK

1、解压jdk-8u201-linux-x64.rpm压缩包

rpm -ivh jdk-8u201-linux-x64.rpm

在这里插入图片描述

2、查看当前系统环境下java版本

java -version

在这里插入图片描述

3、设置JDK的环境变量

vim /etc/profile.d/java.sh						#/etc/profile.d/环境变量脚本目录	
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar		#可执行文件的位置
export PATH=$JAVA_HOME/bin:$PATH

在这里插入图片描述

source /etc/profile.d/java.sh #生效一下刚刚声明的环境变量
java -version

在这里插入图片描述

CLASSPATH:编译、运行Java程序时(tomcat),JRE 会去该变量指定的路径中搜索所需的类( .class)文件。
dt.jar:是关于运行环境的类库,主要是swing 的包。
tools.jar:主要是一 些 jdk 工具的类库,包括 javac, java,javap, javadoc等。
JDK:java development kit ( java开发工具)
JRE:java runtime environment ( java运行时环境)
JVM:java virtuak machine (java虚拟机) ,使 java程序可以在多种平台上运行class文件。

(三)、安装启动 Tomcat

1、解压apache-tomcat软件包

cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat

在这里插入图片描述

在这里插入图片描述

2、查看目录

cd /usr/local/tomcat/ && ll

在这里插入图片描述

2.1、主要目录说明:

bin :存放启动和关闭Tomcat 的脚本文件,比较常用的是catalina.sh、startup.sh、 shutdown.sh 三个文件
conf :存放Tomcat 服务器的各种配置文件,比较常用的是server.xml、context.xml、tomcat-users.xml web. xml 四个文件.
lib :存放Tomcat服务器的jar 包,一般不作任何改动,除非连接第三方服务,比如redis, 那就需要添加相对应的jar包
logs :存放Tomcat 日志
temp :存放Tomcat 运行时产生的文件
webapps :存放项目资源的目录
work:Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到

2.2、Tomcat配置文件详解

在这里插入图片描述
catalina.policy:权限控制配置文件
catalina.properties:Tomcat的属性配置文件
context.xml:上下文配置文件
logging.properties:日志相关配置文件 log4j
server.xml:主配置文件,通过配置文件,可以修改tomcat的启动端口、网站目录、虚拟主机、开启https等功能
tomcat-user.xml/.xsd:管理用户配置文件制配置文件
web.xml:Tomcat的servlet、servlet-mapping、filter、MIME等相关配置

(四)、启动tomcat

1、优化管理

ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/

在这里插入图片描述

2、开启服务

startup.sh
netstat -natp | grep 8080

在这里插入图片描述

3.添加tomcat服务

如果在添加之前服务已经打开,需要先关服务,在添加打开
vim /lib/systemd/system/tomcat.service
在这里插入图片描述

chmod 754 /lib/systemd/system/tomcat.service
 
systemctl start tomcat.service
systemctl enable tomcat.service

##(五)、测试,查看网页
此时使用浏览器访问 Tomcat 的主页 http://192.168.22.10:8080
在这里插入图片描述

(六)、优化 Tomcat 启动速度

1、为什么要优化 Tomcat 启动速度

生产环境中第一次启动 tomcat 可能会发现 tomcat 启动很慢,默认情况下可能需要几十秒,此时可以修改 jdk 参数进行优化。

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security

------修改117行-----
securerandom.source=file:/dev/urandom
/dev/random和/dev/urandom都是伪终端,但是/dev/urandom提供的数据流更快

在这里插入图片描述
补充概念:熵池
JRE默认使用 /dev/random作为随机数来源,当熵池大小不够的时候,random会很慢,造成随机数生成调用阻塞。

熵池:安全方向,——随机值
概念:linux是根据系统的熵池来产生随机数的。熵池就是系统当前的环境噪音,环境噪音的来源很多,键盘的输入、鼠标的移动、内存的使用、文件的使用量、进程数量等等。
当系统的熵不够大的时候,则系统产生的随机数随机效果就不是很好,也就是说更容易被人猜测出来。

2、重启tomcat

systemctl restart tomcat.service

3、查看主配置文件——/usr/local/tomcat/conf/server.xml

主配置文件/usr/local/tomcat/conf/server.xml
搜索8080(69行)
  <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"		#毫秒
               redirectPort="8443" />			#SSL 重定向/映射443(https)

在这里插入图片描述

(七)、Tomcat 虚拟主机配置

多时候公司会有多个项目需要运行,那么肯定不可能是一台服务器上运行多个 Tomcat 服务,这样会消耗太多的系统资源。此时,就需要使用到 Tomcat 虚拟主机。例如现在新增两个域名 www.accp.com 和 www.benet.com ,希望通过这两个域名访问到不同的项目内容。(tomcat做为web 服务器用的)

1、创建 accp 和 benet 项目目录和文件
添加地址映射
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、修改 Tomcat 主配置文件

vim /usr/local/tomcat/conf/server.xml
在这里插入图片描述
systemctl restart tomcat.service
客户端浏览器访问验证——echo “192.168.2210 www.accp.com www.benet.com” >> /etc/hosts
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(八)Tomcat多实例部署

1.安装好 jdk
2.安装 tomcat

cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
cp -a /usr/local/tomcat /usr/local/tomcat1

在这里插入图片描述
3.配置 tomcat 环境变量

vim /etc/profile.d/tomcat.sh
#tomcat1
export CATALINA_HOME1=/usr/local/tomcat
export CATALINA_BASE1=/usr/local/tomcat
export TOMCAT_HOME1=/usr/local/tomcat
 
#tomcat2
export CATALINA_HOME2=/usr/local/tomcat1
export CATALINA_BASE2=/usr/local/tomcat1
export TOMCAT_HOME2=/usr/local/tomcat1
 
 
source /etc/profile.d/tomcat.sh

4.修改 tomcat1 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号

vim /usr/local/tomcat1/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN">		#22行,修改Server prot,默认为8005 -> 修改为8006
<Connector port="8081" protocol="HTTP/1.1"		#69行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />	#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010
 
----------------------------------------------------------------------------------------------------------
第一个连接器默认监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
第二个连接器默认监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。

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

vim /usr/local/tomcat/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
##添加以下内容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1
 
 
vim /usr/local/tomcat/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1

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

vim /usr/local/tomcat1/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2
 
 
vim /usr/local/tomcat1/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2

在这里插入图片描述
在这里插入图片描述
6.启动各 tomcat 中的 /bin/startup.sh

/usr/local/tomcat/bin/startup.sh 
/usr/local/tomcat1/bin/startup.sh 
 
netstat -antp | grep java

在这里插入图片描述
7.浏览器访问测试

http://192.168.22.10:8080
http://192.168.22.10:8081

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

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

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

相关文章

深入探究C++中的仿函数和迭代器——提升你的STL技能

&#x1f4d6;作者介绍&#xff1a;22级树莓人&#xff08;计算机专业&#xff09;&#xff0c;热爱编程&#xff1c;目前在c&#xff0b;&#xff0b;阶段>——目标Windows&#xff0c;MySQL&#xff0c;Qt&#xff0c;数据结构与算法&#xff0c;Linux&#xff0c;多线程&…

若依/RuoYi-Vue,若依管理系统-启动步骤

若依RuoYi-Vue前后端项目启动流程_若依前端怎么启动_primary taste_mm的博客-CSDN博客若依官网&#xff1a;RuoYi 若依官方网站 |后台管理系统|权限管理系统|快速开发框架|企业管理系统|开源框架|微服务框架|前后端分离框架|开源后台系统|RuoYi|RuoYi-Vue|RuoYi-Cloud|RuoYi框架…

进驻Lidl利多超市利器—— EDI

Lidl利多超市是源自德国的跨国零售企业&#xff0c;成立于1973年&#xff0c;发展迅速&#xff0c;目前在欧洲拥有10,800多家门店&#xff0c;覆盖29个国家。Lidl的业务范围包括食品、饮料、家庭用品、家具、电器等多个品类。Lidl一直致力于提供高性价比的商品&#xff0c;以满…

FIT2CLOUD飞致云发布开源轻量级云管平台CloudExplorer Lite

2023年4月21日&#xff0c;中国领先的开源软件公司FIT2CLOUD飞致云正式发布开源轻量级云管平台项目CloudExplorer Lite。CloudExplorer Lite&#xff08;https://github.com/CloudExplorer-Dev&#xff09;脱胎于飞致云创始软件产品CloudExplorer多云管理平台&#xff0c;支持对…

图表示学习算法学习

struc2vec: Learning Node Representations from Structural Identity learning latent representations for the structural identity of nodes. &#xff1a; 从结构特征中学习节点潜在表示 node representation : 节点表示 structural identity : 结构特征 struct2Vec是一个…

《UVM实战》学习笔记——第七章 UVM中的寄存器模型1——寄存器模型介绍、前门/后门访问

文章目录 前言一、寄存器模型简介1.1 带寄存器配置总线的DUT1.2 参考模型如何读取寄存器的值1.3 寄存器模型的基本概念 二、简单的寄存器模型2.1 只有一个寄存器的寄存器模型2.2 将寄存器模型集成到验证平台2.3 在验证平台中使用寄存器模型 三、前门访问和后门访问3.1 前门访问…

2023年淮阴工学院五年一贯制专转本应用文写作考试大纲

2023年淮阴工学院五年一贯制专转本应用文写作考试大纲 一、考核对象 本课程的考核对象是五年一贯制高职专转本秘书学专业普通在校生考生。 二、考核目的 通过课堂教学&#xff0c;学生应当能够识记、理解和应用有关应用文写作的基本理论和基本技能。其中&#xff0c;识记指…

TortoiseSVN使用-TortoiseSVN更换或重置登录用户

文章目录 3.4.9 TortoiseSVN更换或重置登录用户 本人其他相关文章链接 3.4.9 TortoiseSVN更换或重置登录用户 1&#xff0c;打开SVN的settings 2&#xff0c;找到Saved Data栏&#xff0c;右侧Authentication data项点击清除按钮clear 3&#xff0c;再次打开SVN&#xff0c;会要…

AgentGPT已成气候

AgentGPT之前也有介绍过&#xff0c;它最主要的功能是在ChatGPT的功能基础上&#xff0c;允许你自己自定义配置部署&#xff0c;根据你给出的命令&#xff0c;它将尝试通过思考&#xff0c;和执行&#xff0c;不用重复的给它发送指令&#xff0c;直接给你汇总好结果。 安装步骤…

牛客网刷题总结

1.利用%符号获取特定位数的数字。 2.强制类型转换 &#xff08;将float转换为int &#xff09; 3.计算有关浮点型数据时&#xff0c;要注意你计算过程中所有的数据都是浮点型 4.0/3.0 ! 4/3 4.通过位操作符实现输出2的倍数&#xff08;对于位操作符不熟悉的小伙伴可以看看我…

StringBuffer类详解

StringBuffer 定义 1.java.lang.StringBuffer代表可变的字符序列&#xff0c;可以对字符串内容进行增删 2.很多方法与String相同&#xff0c;但StringBuffer是可变长度的。 3.StringBuffer是一个容器。 String和StringBuffer的不同 1.String保存的是字符串常量&#xff0c…

机器学习——用KNN解决非线性回归问题

问&#xff1a;k最近邻分类模型是非线性模型。 答&#xff1a;正确。k最近邻分类模型是非线性模型&#xff0c;因为它的决策边界是由最近邻居点的类别决定的&#xff0c;而最近邻居点的分布通常是不规则的&#xff0c;因此决策边界也就不是线性的。因此&#xff0c;k最近邻分类…

继续【Stable-Diffusion WEBUI】方方面面研究(内容索引)

文章目录 &#xff08;零&#xff09;前言&#xff08;一&#xff09;绘图&#xff08;1.1&#xff09;模型&#xff08;1.1.1&#xff09;基础模型&#xff08;Stable-diffusion模型&#xff09;&#xff08;1.1.2&#xff09;人物模型&#xff08;LoRA模型&#xff09; &…

我在公司彻夜撸码,老板天天开X6夜店蹦迪,到头来工资还拖欠

讲道理&#xff0c;我的学历远达不到BAT等名企大厂的要求&#xff0c;去不了好公司我认了&#xff0c;大专毕业的我在找工作的时候发现留给自己的机会并不多&#xff0c;最后去了一家不知名的小公司。入职后才发现这家公司其实就是个外包公司&#xff0c;里面的业务部门和制度相…

【RPA开发】Selenium 实现网页自动化

开发时有时会遇到网页爬取限制的情况&#xff0c;那么此时可以通过 Selenium 来解决这个问题&#xff0c;因为 Selenium 是模拟浏览器执行网页爬取&#xff0c;相比 Request/API 操作更安全&#xff0c;服务器会完全认为是用户在用浏览器进行操作&#xff0c;如此可以实现网页自…

centos7环境下:DolphinScheduler3.1.5简介和伪集群模式安装部署

centos7环境下&#xff1a;DolphinScheduler3.1.5简介和伪集群模式安装部署 DolphinScheduler简介 Apache DolphinScheduler是一个分布式、易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系&#xff0c;使调度系统在数据处理流程中开箱即用…

Quartz定时任务

基本介绍 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目&#xff0c;可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个、百个、甚至是好几万个Jobs这样复杂的日程序表&#xff0c;Jobs可以做成标准的Java组件或EJBs Qua…

android framework-ActivityManagerService(AMS)下

一、ActivityThread \frameworks\base\core\java\android\app\ActivityThread.java 1.1、main public static void main(String[] args) {Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain");// Install selective syscall interceptionAnd…

java native 方法编写

目录 前言 1、创建 java native 方法 2、创建洞态链接库项目 3、加载 dll 文件 前言 Java 提供了调用 C 或 C 函数的方法&#xff0c;这种方法就是 native 方法&#xff0c;全称 Java Native Interface (JNI) 1、创建 java native 方法 1&#xff09;新建 java 类文件 …

【CMake】如何使用CMake构建一个工程

1.如何使用CMake构建一个工程 1. 使用 CMakelists.txt 构建工程 一个最简单 CMake 的项目是将某个源文件构建成为可执行文件&#xff0c;使用CMake 构建项目时&#xff0c;你需要创建一个 CMakeLists.txt 文件&#xff0c;通常情况下&#xff0c;下面三条命令在每个 CMakeLis…