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

Tomcat介绍与核心操作讲解(以Rhel9.3为例)

1. Tomcat 介绍

Tomcat 是 Apache 软件基金会 旗下的开源 Java Servlet 容器,它完整实现了 Java EE(Java 企业版)规范中的 Servlet 和 JSP(JavaServer Pages)标准。作为轻量级的 Java Web 服务器,Tomcat 兼具 “开发友好性” 与 “部署便捷性”,既适合本地开发、测试场景,也可用于小规模生产环境的 Java Web 应用发布。

2.安装tomcat

2.1 安装方式介绍

  • 包管理器安装(如 Linux 的 yum):依赖系统包管理器,部署快、自动处理依赖,但版本可能不是最新,自定义性弱。
  • 二进制包安装(解压即用):从官网下载二进制压缩包,跨平台(Windows/Linux 通用),可自由选择版本和安装目录,灵活性高,但需手动配置部分参数。

2.2 yum方式安装

配置 Tomcat yum 源

yum install tomcat tomcat-webapps tomcat-admin-webapps -y

优点:一键部署、依赖自动处理;缺点:版本受限于 yum 源,自定义安装目录困难。

2.3 二进制安装

jdk需要提前安装,如果不是yum安装的jdk,一定要将jdk的路径定义到JAVA_HOME变量中,设置 CATALINA_HOME 指向 Tomcat 安装目录(如 export CATALINA_HOME=/usr/local/apache-tomcat-xxx)

yum install  java-17-openjdk -y
java -version
openjdk version "17.0.8" 2023-07-18 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.8.0.7-1) (build 17.0.8+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.8.0.7-1) (build 17.0.8+7-LTS, mixed mode, sharing)

解压

#上传tomcat二进制包,这里我放在/opt
[root@tomcat opt]# ls
apache-tomcat-9.0.109.tar.gz
[root@tomcat opt]# tar -xvf apache-tomcat-9.0.109.tar.gz
[root@tomcat opt]# ll
总用量 12736
drwxr-xr-x 9 root root     4096  913 11:16 apache-tomcat-9.0.109
-rw-r--r-- 1 root root 13035397  913 11:15 apache-tomcat-9.0.109.tar.gz
[root@tomcat opt]# mv apache-tomcat-9.0.109 /usr/local/tomcat/
#然后可以用下面命令查看tomcat是否安装成功
[root@tomcat opt]# /usr/local/tomcat/bin/version.sh

tomcat目录介绍

[root@tomcat ~]#   cd /usr/local/tomcat/
[root@tomcat tomcat]# tree -L 1
.
├── bin  #存放启动和关闭Tomcat的脚本文件 
├── BUILDING.txt  
├── conf  #存放Tomcat服务器的各种全局配置⽂文件,其中最重要的是server.xml和web.xml
├── CONTRIBUTING.md
├── lib  # web应用调用的jar包存放路径
├── LICENSE
├── logs  # tomcat日志存放目录,catalina.out为主要输出日志
├── NOTICE
├── README.md
├── RELEASE-NOTES
├── RUNNING.txt
├── temp  
├── webapps  #tomcat默认存放应用程序的目录,好比apache的默认网页存放路径是/var/www/html一样
└── work  #用于存放JSP应用程序在部署时编译后产生的class文件
[root@tomcat tomcat]# tree -L 1 /usr/local/tomcat/webapps/
/usr/local/tomcat/webapps/
├── docs  #tomcat文档
├── examples  #web应用实例
├── host-manager  #tomcat的主机管理应用程序
├── manager  #tomcat的管理应用程序
└── ROOT  #指tomcat的应用程序的根,如果应用程序部署在ROOT中,则可直接通过http://ip:port 访问到

Tomcat配置文件目录介绍

[root@tomcat tomcat]# tree -L 1 /usr/local/tomcat/conf/
/usr/local/tomcat/conf/
├── catalina.policy  #配置tomcat对文件系统中目录或文件的读、写执行等权限,及对一些内存,session等的管理权限
├── catalina.properties  #配置tomcat的classpath等
├── context.xml  #tomcat的默认context容器
├── jaspic-providers.xml
├── jaspic-providers.xsd
├── logging.properties  #配置tomcat的日志输出方式
├── server.xml  #tomcat的主配置文件 
├── tomcat-users.xml  #tomcat的角色(授权用户)配置文件
├── tomcat-users.xsd
└── web.xml  #tomcat的应用程序的部署描述符文件

2.4 启动tomcat

Tomcat 的启动 / 停止脚本位于 bin 目录:
启动程序:/usr/local/tomcat/bin/startup.sh
关闭程序:/usr/local/tomcat/bin/shutdown.sh

[root@tomcat tomcat]# /usr/local/tomcat/bin/startup.sh     

或者我们还可以编写systemd下面的服务文件,然后就可以用systemctl启动

[root@tomcat tomcat]# vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat 
After=syslog.target network.target[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
SuccessExitStatus=143[Install]
WantedBy=multi-user.target#启动服务
[root@tomcat tomcat]# systemctl start tomcat
[root@tomcat tomcat]# ss -lntup | grep 80
tcp   LISTEN 0      1      [::ffff:127.0.0.1]:8005             *:*    users:(("java",pid=33491,fd=51))      
tcp   LISTEN 0      100                     *:8080             *:*    users:(("java",pid=33491,fd=44))      

我们编写一段测试代码试试看tomcat是否正常
注意:为什么要在webapps/ROOT中写入,因为 webapps/ROOT 是 Tomcat 的根应用目录,就好比网站的 “首页专属文件夹”。

当你用 http://服务器IP:8080/ 访问时,Tomcat 会优先从 webapps/ROOT 里找页面。如果把 test.jsp 放在这里,访问的时候直接输 http://服务器IP:8080/test.jsp 就能打开;要是放在其他文件夹(比如 webapps/xxx/test.jsp),就得输 http://服务器IP:8080/xxx/test.jsp(得带文件夹名前缀)。

简单讲:放 ROOT 里,访问路径更短、更直接。

[root@tomcat tomcat]# cat webapps/ROOT/test.jsp
<html><head><title> hello world</title></head><body><%out.println("hello world");%></body>
</html>

在这里插入图片描述

2.5 虚拟主机

通过 conf/server.xml 配置,可在单个 Tomcat 实例上部署多个域名的 Web 应用。配置方式:
编辑 server.xml,添加 节点:

<Host name="www.rch.com" appBase="webapps/rch">
</Host>[root@tomcat tomcat]# cat /usr/local/tomcat/webapps/rch/ROOT/index.jsp 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html><head><title>JSP a page</title></head><body><% out.println("Welocome to test site,http://www.rch.com");%></body>
</html>
[root@tomcat tomcat]# systemctl restart tomcat

然后在window配置域名解析,之后访问
在这里插入图片描述

2.6 服务器状态查看

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

#查找context.xml文件
[root@tomcat tomcat]# find . -name context.xml
./conf/context.xml
./webapps/docs/META-INF/context.xml
./webapps/examples/META-INF/context.xml
./webapps/host-manager/META-INF/context.xml
./webapps/manager/META-INF/context.xml[root@tomcat tomcat]# vim  ./webapps/manager/META-INF/context.xml
注释如下信息

在这里插入图片描述
之后编辑conf/tomcat-users.xml

[root@tomcat tomcat]# vim conf/tomcat-users.xml

在这里插入图片描述

[root@tomcat tomcat]# systemctl restart tomcat

在这里插入图片描述

2.7 虚拟机host管理查看

[root@tomcat tomcat]# vim  ./webapps/host-manager/META-INF/context.xml
注释以下内容

在这里插入图片描述

[root@tomcat tomcat]# vim conf/tomcat-users.xml

添加如下配置
在这里插入图片描述
在这里插入图片描述

3、Web站点部署(以jpress为例)

tomcat项目部署的两种方式:

第一种方式是将应用文件夹或war文件直接复制到tomcat的webapps目录下,这样tomcat启动的时候会将webapps目录下的文件夹或war文件的内容当成应用部署。这种方式最简单且无须书写任何配置文件

第二种方式是编辑server.xml配置文件,添加Context标签:在tomcat的server.xml配置文件中的Host节点下增加Context子节点

jpress官网:http://jpress.io

源码下载地址:https://github.com/JpressProjects/jpress

下载jpress的war包

[root@tomcat tomcat]# mkdir webapps/jpress
[root@tomcat tomcat]# cd  webapps/jpress
#上传jpress的war包后会自动解压,可以先停止服务,将jpress安装包改名为ROOT.war	
[root@tomcat tomcat]# ls webapps/jpress
ROOT  ROOT.war
#配置文件中添加虚拟主机模块
[root@tomcat tomcat]# vim conf/server.xml

在这里插入图片描述

[root@tomcat tomcat]# systemctl restart tomcat

之后配置数据库

[root@tomcat blog]# yum install mysql-server -y
[root@tomcat blog]# systemctl restart mysqld
[root@tomcat blog]# mysqladmin  -uroot password '123'
mysql> create database blog;
mysql> create user blog@'localhost' identified by '123';
mysql> grant all on blog.* to blog@'localhost';```

然后就可以在页面配置jpress,输入数据库名,账号密码等,之后就安装,我们就完成啦
在这里插入图片描述


文章转载自:

http://9AhvcHsO.fqhbt.cn
http://IHb86fAl.fqhbt.cn
http://Mubtu5ul.fqhbt.cn
http://CLJFD30e.fqhbt.cn
http://7odvR2sN.fqhbt.cn
http://IqcKXFAT.fqhbt.cn
http://kT6wgccJ.fqhbt.cn
http://wW8Bvtp1.fqhbt.cn
http://5p1zKXpq.fqhbt.cn
http://m0B9p3v1.fqhbt.cn
http://F8R9ifsY.fqhbt.cn
http://gWqS30EC.fqhbt.cn
http://SJVZgn6H.fqhbt.cn
http://lSzNcroO.fqhbt.cn
http://LsJ12ET3.fqhbt.cn
http://Ivd7e2mk.fqhbt.cn
http://f5MWJ8gg.fqhbt.cn
http://RfZiKL2T.fqhbt.cn
http://wqumejbK.fqhbt.cn
http://aRAC7OTT.fqhbt.cn
http://kuG1oDsr.fqhbt.cn
http://fRVRASEh.fqhbt.cn
http://9B8UlMaX.fqhbt.cn
http://p1EUZp6R.fqhbt.cn
http://q0OLV2wT.fqhbt.cn
http://T06cvODT.fqhbt.cn
http://4wCD16Ww.fqhbt.cn
http://4M5mK5ab.fqhbt.cn
http://ESxhTlaW.fqhbt.cn
http://tVHfQQQ9.fqhbt.cn
http://www.dtcms.com/a/382342.html

相关文章:

  • @RequiredArgsConstructor使用
  • 脉冲串函数在数字信号处理中的核心应用与价值
  • AI助力HTML5基础快速入门:从零开始理解网页结构
  • 大数据与财务管理专业如何转型做金融科技?
  • 【开题答辩全过程】以 高校实习信息管理系统为例,包含答辩的问题和答案
  • 贪心算法应用:推荐冷启动问题详解
  • “单标签/多标签” vs “二分类/多分类”
  • 多商户异次元发卡网是啥啊?
  • 使用 Anaconda Distribution 安装 Python + GDAL并在vscode配置开发环境(完整版)
  • 先进电机拓扑及控制算法介绍(3)——以“数据”驱动电机实现真正的无模型
  • 进程卡顿怎么办?Process Lasso 免费功能实测解析
  • Grafana配置连接时候证书与mongosqld启动证书的关系
  • XWiki Platform 路径遍历漏洞分析 | CVE-2025-55747CVE-2025-55748
  • Python快速入门专业版(二十九):函数返回值:多返回值、None与函数嵌套调用
  • DBSCAN 聚类:以“热闹”划界,任意形状成团,孤立点全当噪声
  • 设计模式:从Collections.synchronizedCollection()出发了解【装饰器模式】
  • CSS3的新特性
  • Python的包管理工具uv下载python版本慢问题解决
  • K8s学习笔记(二):Pod
  • 贪心算法应用:异常检测阈值调整问题详解
  • C++ stack和queue的使用及模拟实现
  • 【面试题】RAG核心痛点
  • 2025年特种作业操作证考试题库及答案(低压电工作业)
  • PCIE基础学习之物理层学习基础
  • Day 02 geant4如何构建几何模型以及材料填充-------以B1为实例
  • C# LINQ 的发展故事:从 “碎片化查询” 到 “语言级统一”
  • 电涌保护器:为现代生活筑起一道隐形防雷网
  • STM32项目分享:基于物联网的灭火器智能监测系统
  • 嵌入式 Linux 启动机制全解析:从 Boot 到 Rootfs
  • 图神经网络分享系列-SDNE(Structural Deep Network Embedding) (三)