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 9月 13 11:16 apache-tomcat-9.0.109
-rw-r--r-- 1 root root 13035397 9月 13 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,输入数据库名,账号密码等,之后就安装,我们就完成啦