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

Tomcat详解 一:tomcat的部署

文章目录

  • 1. Tomcat的基本介绍
    • 1.1 Tomcat是什么
    • 1.2 Tomcat的构成组件
      • 1.2.1 Web容器
      • 1.2.2 Servlet容器
      • 1.2.3 JSP容器(JAVA Scripts page)
    • 1.3 核心功能
      • 1.3.1 Container 结构分析
    • 1.4 配置文件
    • 1.5 Tomcat常用端口号
    • 1.6 启动和关闭Tomcat
  • 2. 部署Tomcat服务
    • 2.1 前置准备
    • 2.2 安装Tomcat
    • 2.3 启动Tomcat
  • 3. 将Tomcat添加至systemd服务

1. Tomcat的基本介绍

1.1 Tomcat是什么

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。一般来说,Tomcat虽然和Apache或者Nginx这些Web服务器一样,具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常是作为 一个Servlet和JSP容器,单独运行在后端。

官网地址: http://tomcat.apache.org/​​​​​官网文档: https://tomcat.apache.org/tomcat-8.5-doc/index.html帮助文档:
https://cwiki.apache.org/confluence/display/tomcat/https://cwiki.apache.org/confluence/display/tomcat/FAQ

1.2 Tomcat的构成组件

Tomcat 由一系列的组件构成,其中核心的组件有三个:

  • Web 容器:完成 Web 服务器的功能。(https请求)
  • Servlet 容器:名字为 catalina,用于处理 Servlet 代码。(具体的任务)
  • JSP 容器:用于将 JSP 动态网页翻译成 Servlet 代码。

1.2.1 Web容器

​ 负责底层的HTTP协议

1.2.2 Servlet容器

​ 由catalina脚本帮忙处理的servlet代码,主要处理后端逻辑业务
​ catalina实际处理的是Servlet代码,而Servlet代码是由Java编写的

1.2.3 JSP容器(JAVA Scripts page)

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

1.3 核心功能

Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container

其中连接器和容器相辅相成,一起构成了基本的 web 服务 Service。
每个 Tomcat 服务器可以管理多个 Service。

  • Connector:负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。

  • Container:负责对内处理业务逻辑。其内部由 Engine、Host、Context和Wrapper 四个容器组成,用于管理和调用 Servlet 相关逻辑。

  • Service:对外提供的 Web 服务

1.3.1 Container 结构分析

每个Service会包含一个Container容器。在Container内部包含了4个子容器

  • Engine:引擎,用来管理多个虚拟主机,一个Service最多只能有一个Engine;

  • Host:代表一个虚拟主机,也可以叫站点,通过配置Host就可以添加站点;

  • Context:代表一个Web应用,包含多个Servlet封装器;

  • Wrapper:封装器,容器的最底层。每一Wrapper封装着一个Servlet,负责对象实例的创建、执行和销毁功能。

Engine、Host、Context 和 Wrapper,这四个容器之间属于层层递进的父子关系。

1.4 配置文件

安装目录下 文件介绍

ls /usr/local/tomcat/
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
目录名字功能
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存放项目资源的目录
workTomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到(升级版本时注意要删除里面的缓存)

conf子目录

文件名说明
server.xml主配置文件
web.xml每个webapp只有“部署"后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认部署相关的配置,每个web应用也可以使用专用配置文件,来覆盖全局文件
context.xml用于定义所有web应用均需加载的Context配置,此文件为所有的webapps提供默认配置,每个web应用也可以使用自已专用的配置,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中,覆盖全局的文件
tomcat-users.xml用户认证的账号和密码文件
catalina.policy当使用security选项启动omcat时,用于为tomcat设置安全策略
catalina.propertiesTomcat环境变量的配置,用于设定类加载器路径,以及一些与JVM调优相关参数
logging.propertiesTomcat日志系统相关的配置,可以修改日志级别和日志路径等

注意配置文件对于大小写敏感

1.5 Tomcat常用端口号

8080:默认接收 http 请求的端口

8005:安全端口,可以关闭tomcat

8009:apache 和 tomcat 联动 AJP 协议

8443:负责处理https请求连接

1.6 启动和关闭Tomcat

后台启动:
tomcat/bin/startup.sh
tomcat/bin/catalina.sh start前台启动:
tomcat/bin/catalina.sh run关闭服务:
tomcat/bin/shutdown.sh

2. 部署Tomcat服务

2.1 前置准备

#安装jdk、设置环境变量并测试
#在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。#关闭防火墙
systemctl stop firewalld
setenforce 0#将安装 Tomcat 所需软件包传到/opt目录下
apache-tomcat-9.0.16.tar.gz 
jdk-8u201-linux-x64.rpm#切换至/opt下,安装JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm

在这里插入图片描述

#设置JDK环境变量
#修改配置文件
vim /etc/profile.d/java.shexport JAVA_HOME=/usr/java/jdk1.8.0_201-amd64                   #java家目录
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar #设定java编译环境目录
export PATH=$JAVA_HOME/bin:$PATH                                #设定环境变量#刷新配置文件
java -version                   #查看之前的版本
source /etc/profile.d/java.sh   #执行脚本
java -version                   #查看刷新后的版本

在这里插入图片描述

2.2 安装Tomcat

 #切换至/opt下,解压tomcat包
cd /opt
tar -zxf apache-tomcat-9.0.16.tar.gz #将解压后的包拷贝至/usr/local/下并重命名
cp -r apache-tomcat-9.0.16 /usr/local/tomcat

在这里插入图片描述

2.3 启动Tomcat

 #切换至拷贝的目录下,启动tomcat
cd /usr/local/tomcat//usr/local/tomcat/bin/startup.sh

在这里插入图片描述

#看是否启动成功
ss -natp |grep 8080

在这里插入图片描述

#在浏览器测试是否可以成功登录
192.168.67.104:8080(本机IP地址)

在这里插入图片描述

 
#关闭tomcat(记得再次打开)
/usr/local/tomcat/bin/shutdown.sh

在这里插入图片描述

3. 将Tomcat添加至systemd服务

#先关闭服务
/usr/local/tomcat/bin/shutdown.sh#添加用户设置属主属组
useradd -s /sbin/nologin tomcat
chown tomcat:tomcat /usr/local/tomcat/ -R

在这里插入图片描述

#新建服务文件
vim /etc/systemd/system/tomcat.service
#为Tomcat加.service文件[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat[Install]
WantedBy=multi-user.target#重新加载服务,并开启,查看是否成功启动
systemctl daemon-reload
#重新加载systemctl start tomcat
#启动服务ss -ntap |grep 8080
#查看是否成功运行

在这里插入图片描述

相关文章:

Tomcat详解 一:tomcat的部署

文章目录 1. Tomcat的基本介绍1.1 Tomcat是什么1.2 Tomcat的构成组件1.2.1 Web容器1.2.2 Servlet容器1.2.3 JSP容器&#xff08;JAVA Scripts page&#xff09; 1.3 核心功能1.3.1 Container 结构分析 1.4 配置文件1.5 Tomcat常用端口号1.6 启动和关闭Tomcat 2. 部署Tomcat服务…...

算法 - 二分

~~~~ 题目 - 整数二分需要考虑边界思路code开平方 - 浮点数二分codecode core 题目 - 整数二分需要考虑边界 给定一个按照升序排列的长度为 n 的整数数组&#xff0c;以及 q 个查询。 对于每个查询&#xff0c;返回一个元素 k 的起始位置和终止位置&#xff08;位置从 0 开始…...

蠕虫病毒问题

蠕虫病毒处理过程 修改病毒定时时间&#xff0c;今天遇到的是 */30 crontab -e先修改延长时间&#xff0c;会提示无操作权限,执行下面的问题 chattr -l /filepath查看可疑进程&#xff0c;这次遇到的进程有 /tmp/***** /tmp/crontab***** ps -auxkill -9 相关进程 删除/…...

pytest笔记2: fixture

1. fixture 通常是对测试方法和测试函数&#xff0c;测试类整个测试文件进行初始化或是还原测试环境 # 功能函数 def multiply(a, b):return a * b # ------------ fixture---------------def setup_module(module):print("setup_module 在当前文件中所有测试用例之前&q…...

day55 补

392.判断子序列 力扣题目链接(opens new window) 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;&quo…...

CSS变量之var()函数的应用——动态修改样式 root的使用

一、css变量 body {--foo: #7F593F;--urls: ./img/xxx.jpg; }变量的名称可以用数字、汉字等&#xff0c;不能包含**$&#xff0c;[&#xff0c;^&#xff0c;(&#xff0c;%**等字符&#xff0c;变量的值也是可以使用各种属性值&#xff1a; 如&#xff1a; // 定义css变量 :r…...

索尼 toio ™应用创意开发征文|一个理想的绘画小助手

引言 toio™机器人是索尼推出的一款创意玩具&#xff0c;它的小巧和可编程性使其成为一个理想的绘画助手。通过编程控制机器人的运动和绘画工具&#xff0c;我们可以为小朋友提供一个有趣的绘画体验。 创意描述 我们可以通过JavaScript编程来控制toio™机器人的运动和绘画工具…...

java加密,使用python解密 ,使用 pysm4 报 byte greater than 16的解决方法

1&#xff0c;业务需要&#xff0c;对方需要用java进行参数加密&#xff0c;双方约定使用的加密方法是 SM4&#xff0c;对方给的key是32位&#xff0c;并且给出了加解密的java代码。 import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.security.Key; i…...

django后台启动CORS跨越配置

文章目录 背景什么是跨域问题&#xff1f;跨域问题的解决方案 Django 解决跨域问题 背景 什么是跨域问题&#xff1f; 跨域问题是指浏览器的同源策略限制了来自不同域的 AJAX 请求。 具体来说: 同源策略要求源相同才能正常进行 AJAX 通信。判断是否同源需要满足三个条件: 协…...

异常的顶级理解

目录 1.异常的概念与体系结构 1.1异常的体系结构 1.2异常的举例 1.3错误的举例 2.异常的分类 2.1编译时异常 2.2运行时异常 3.异常的处理 3.1异常的抛出throw 3.2try-catch捕获并处理 3.3finally 3.4 异常声明throws 4.自定义异常类 1.异常的概念与体系结构 1.1异常的…...

LinkedHashMap实现LRU缓存cache机制,Kotlin

LinkedHashMap实现LRU缓存cache机制&#xff0c;Kotlin LinkedHashMap的accessOrdertrue后&#xff0c;访问LinkedHashMap里面存储的元素&#xff0c;LinkedHashMap就会把该元素移动到最尾部。利用这一点&#xff0c;可以设置一个缓存的上限值&#xff0c;当存入的缓存数理超过…...

Google 开源库Guava详解(集合工具类)

任何具有JDK Collections Framework经验的程序员都知道并喜欢java.util.Collections.Guava提供了更多的实用程序&#xff1a;适用于所有集合的静态方法。这些是番石榴最受欢迎和成熟的部分。 对应于特定接口的方法以相对直观的方式分组&#xff1a; nterface JDK or Guava? …...

Ansys Zemax | 如何将光线追迹结果导出为IES格式

照明系统设计者通常需要向客户提供IES格式的数据。照明工程学会 (Illuminating Engineering Society&#xff0c;IES) 文件格式便于传输辉度数据&#xff0c;该格式得到了制造商和设计师的广泛认可。本文描述了如何生成IES文件并验证结果。&#xff08;联系我们获取文章附件&am…...

JSONObject 比 Map好使的地方

需求&#xff1a;改originalJson中的json字符串的key&#xff0c;当key满足在configMapping中配置的key2情况的时候&#xff0c;把originalJson的key改成 configMapping中的value2。 上代码&#xff1a; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject;p…...

[js] 图解 event.pageX event.clientX event.offsetX getBoundingClientRect

event.clientX、event.clientY 鼠标相对于浏览器窗口可视区域的X&#xff0c;Y坐标&#xff08;窗口坐标&#xff09;&#xff0c;可视区域不包括工具栏和滚动条。IE事件和标准事件都定义了这2个属性 event.pageX、event.pageY 类似于event.clientX、event.clientY&#xff0c;…...

VsCode备忘

上次简单学习了一下vscode的使用&#xff0c;结果好长时间没用&#xff0c;今天打开又全忘了。。。再记录一下吧 快捷键 CtrlShiftP 命令面板&#xff0c;查找命令&#xff0c;设置等等 Ctrl 打开集成终端&#xff0c;监视生成输出 Ctrl, 打开设置 CtrlP 转到文件,使用转到符…...

Linux命令200例:Yum强大的包管理工具使用(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…...

使用 Linux 相关知识部署博客系统

目录 ​编辑一、认识 Linux 二、如何拥有 Linux 环境 三、常见的 Linux 命令 1、目录相关命令 &#xff08;1&#xff09;ls &#xff08;2&#xff09;pwd &#xff08;3&#xff09;cd 2、文件操作相关命令 &#xff08;1&#xff09;touch &#xff08;2&#xf…...

Linux--进程--vfork与fork区别

vfork&#xff1a; 所需头文件&#xff1a;#include <sys/types.h> #include <unistd.h> pid_t vfork(void); 功能&#xff1a; vfork() 函数和 fork() 函数一样都是在已有的进程中创建一个新的进程&#xff0c;但它们创建的子进程是有区别的。 参数&#xff…...

Ubuntu系统重装nvidia gpu驱动

1. 卸载原驱动 sudo apt remove *cuda* sudo apt remove *nvidia* sudo /usr/bin/nvidia-uninstall sudo dpkg -l | grep ^rc | cut -d -f3 | sudo xargs dpkg --purge sudo rm -rf ~/.cuda-license-* sudo apt purge nvidia-cuda-toolkit sudo apt remove nvidia-driver-* s…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

未授权访问事件频发,我们应当如何应对?

在当下&#xff0c;数据已成为企业和组织的核心资产&#xff0c;是推动业务发展、决策制定以及创新的关键驱动力。然而&#xff0c;未授权访问这一隐匿的安全威胁&#xff0c;正如同高悬的达摩克利斯之剑&#xff0c;时刻威胁着数据的安全&#xff0c;一旦触发&#xff0c;便可…...