Tomcat服务部署

发布于:2025-05-13 ⋅ 阅读:(13) ⋅ 点赞:(0)

目录

一. Tomcat概述

1.1 什么是Tomcat

1.2 安装Tomcat

1.2.1 CentOS7 安装

1.2.2 ubuntu 安装

1.2.3 使用脚本快速安装 

二. 配置文件及核心组件

2.1 配置文件

2.1.1 安装目录下文件介绍

2.1.2 conf子目录

2.2 组件

三. tomcat 处理请求过程

四. 常见配置详解

4.1 主页文件的优先级

4.2 状态页

4.2.1 开启状态页(只能在本机登录)

4.2.2 开启允许远程状态页

4.3 常见的端口

五. 虚拟主机配置

六. tomcat nginx 动静分离

6.1 配置单级反向代理 

6.2 多级反向代理

七. 实现Java项目

7.1 自建博客


一. Tomcat概述

1.1 什么是Tomcat

Tomcat 是一个开源的 Java Servlet 容器 和 Web 服务器,由 Apache 软件基金会开发和维护。它实现了 Java EE(Jakarta EE) 中的 Servlet、JSP(JavaServer Pages)和 WebSocket 规范,是运行 Java Web 应用程序的核心环境之一。

1.2 安装Tomcat

注意:安装tomcat 前必须先部署JDK。

JDK(Java Development Kit,Java 开发工具包 是 Oracle 公司(原 Sun 公司)提供的 Java 开发核心工具包,用于 开发、编译和运行 Java 程序。它是 Java 生态系统的基石,包含 JRE(Java 运行时环境) 和 开发工具(如编译器、调试器)。)

1.2.1 CentOS7 安装

#在centos7-1上安装

cd /data/

#拖入Java开发工具包(JDK)和Tomcat服务器的压缩包

ls

 

tar xf jdk-8u291-linux-x64.tar.gz -C /usr/local/
tar xf apache-tomcat-9.0.16.tar.gz -C /usr/local/

cd /usr/local
ls

 

ln -s jdk1.8.0_291/ jdk

#配置JDK的环境变量,让系统正确识别Java相关命令
vim /etc/profile.d/jdk.sh

export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/

#加载并执行 /etc/profile.d/jdk.sh 文件中的内容。
source /etc/profile.d/jdk.sh

#检查当前系统中安装的 Java 版本。
java -version

#创建一个符号链接(软链接)。
ln -s apache-tomcat-9.0.16/ tomcat

#创建一个名为 tomcat 的系统用户。
useradd tomcat

#更改目录及其内容的所属用户和组。
chown tomcat:tomcat  apache-tomcat-9.0.16/ -R

#定义 Tomcat 服务的运行方式
vim /usr/lib/systemd/system/tomcat.service

[Unit]
Description=Tomcat
After=syslog.target network.target

[Service]
Type=forking
Environment=PATH=$PATH:$JAVA_HOME/bin
Environment=CLASSPATH=/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=JAVA_HOME=/usr/local/jdk
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/jdk/bin
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
systemctl status tomcat


1.2.2 ubuntu 安装

#在ubuntu 1上安装

cd /opt/

#拖入Java开发工具包(JDK)和Tomcat服务器的压缩包

ls

tar xf jdk-8u291-linux-x64.tar.gz -C /usr/local/

tar xf apache-tomcat-9.0.16.tar.gz -C /usr/local/

cd /usr/local

ls

 

ln -s jdk1.8.0_291/ jdk

vim /etc/profile.d/jdk.sh

export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/

 

source /etc/profile.d/jdk.sh

java -version


useradd tomcat

chown tomcat:tomcat apache-tomcat-9.0.16/ -R
ln -s apache-tomcat-9.0.16/ tomcat
ls
vim /usr/lib/systemd/system/tomcat.service

After=syslog.target network.target

[Service]
Type=forking
Environment=PATH=$PATH:$JAVA_HOME/bin
Environment=CLASSPATH=/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=JAVA_HOME=/usr/local/jdk
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/jdk/bin
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
systemctl status tomcat

1.2.3 使用脚本快速安装 

centos7-2

cd /data/

#拖入拖入Java开发工具包(JDK)Tomcat服务器的压缩包和运行脚本

#运行脚本
bash install_tomcat_.sh

systemctl status tomcat


二. 配置文件及核心组件

2.1 配置文件

2.1.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 日志 catalina.out比较常使用
temp 存放 Tomcat 运行时产生的文件
webapps 存放项目资源的目录
work Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到(升级版本时注意要删除里面的缓存)

2.1.2 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.properties Tomcat环境变量的配置,用于设定类加载器路径,以及一些与JVM调优相关参数
logging.properties Tomcat日志系统相关的配置,可以修改日志级别和日志路径等
注意配置文件对于大小写敏感

2.2 组件

(1) Server

  • 作用:Tomcat 的顶级容器,代表整个 Tomcat 实例。

  • 功能:管理所有其他组件(如 Service 和 Connector)的生命周期。

(2) Service

  • 作用:将 Connector 和 Engine 组合在一起,形成一个完整的服务。

  • 功能:一个 Server 可以包含多个 Service,每个 Service 可以独立运行。

(3) Connector

  • 作用:负责处理客户端请求并将其传递给 Engine。

  • 功能:支持多种协议(如 HTTP、HTTPS、AJP)。

  • 示例

    • HTTP/1.1 Connector:处理 HTTP 请求。

    • AJP Connector:处理 Apache HTTP Server 与 Tomcat 之间的通信。

(4) Engine

  • 作用:处理所有请求的核心组件。

  • 功能:管理多个 Host(虚拟主机)并决定将请求路由到哪个 Host。

(5) Host

  • 作用:代表一个虚拟主机,用于托管多个 Web 应用程序。

  • 功能:每个 Host 可以包含多个 Context(Web 应用程序)。

  • 示例:默认的 localhost Host。

(6) Context

  • 作用:代表一个 Web 应用程序。

  • 功能:管理应用程序的资源(如 Servlet、JSP、静态文件)。

  • 示例:每个 WAR 文件部署后会生成一个 Context。

(7) 内嵌类

可以内嵌到其他组件内,valve、logger、realm、loader、manager等。以logger举例,在不同容器组件内分别定义。

(8) 集群类组件

listener、cluster

三. tomcat 处理请求过程

  1. 假设来自客户的请求为: http://localhost:8080/test/index.jsp 浏览器端的请求被发送到服务端端口8080,Tomcat进程监听在此端口上。通过侦听的HTTP/1.1Connector获得此请求。

  2. Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的响应

  3. Engine获得请求192.168.91.100:8080/test/index.jsp,遍历它所有虚拟主机Host

  4. Engine匹配到名为localhost的Host。如果匹配不到,就把请求交给该Engine中的defaultHost处理. localhost Host获得请求/test/index.jsp,匹配它所拥有的所有Context

  5. Host匹配到路径为/test的Context

  6. path=/test的Context获得请求index.jsp,在它的mapping table中寻找对应的servlet path = alias

  7. Context匹配到URLPATTERN为*.jsp的Sservlet,对应于]spServlet类构造HtpServletRequest对象和HttpServletResponse对象,作为参数调用)spSer let的doGet或doPost方法。

  8. Context把执行完了之后的HttpServletResponse对象返回给Host

  9. Host把HttpServletResponse对象返回给Engine

  10. Engine把HttpServletResponse对象返回给Connector

  11. Connector把HttpServletResponse对象返回给浏览器端

四. 常见配置详解

4.1 主页文件的优先级

Tomcat 会按照 <welcome-file> 的顺序依次查找文件。
如果找到第一个文件(如 index.html),则返回该文件作为响应。
如果第一个文件不存在,则继续查找第二个文件(如 index.htm),依此类推。
如果所有文件都不存在,Tomcat 会返回目录列表(如果目录列表功能已启用)或返回 404 错误。

vim /usr/local/tomcat/conf/web.xml

<welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>


假设用户访问 http://localhost:8080/app/:

Tomcat 首先查找 index.html。
如果 index.html 存在,则返回该文件。
如果不存在,继续查找 index.htm。
查找 index.htm。
如果 index.htm 存在,则返回该文件。
如果不存在,继续查找 index.jsp。
查找 index.jsp。
如果 index.jsp 存在,则返回该文件。
如果不存在,Tomcat 返回目录列表或 404 错误。

4.2 状态页

在 Tomcat 中,"状态页"(Status Page)通常指的是 Tomcat 提供的用于监控服务器运行状态的页面。这些页面可以显示服务器的运行信息,如连接数、线程池状态、内存使用情况等。

4.2.1 开启状态页(只能在本机登录)

默认的管理页面被禁用,启用方法如下

cd /usr/local/tomcat/conf

vim tomcat-users.xml

<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>

systemctl restart tomcat

systemctl status tomcat

 

4.2.2 开启允许远程状态页

cd /usr/local/tomcat/webapps/manager

ls

cd META-INF

vim context.xml

systemctl restart tomcat

4.3 常见的端口

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

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

8009: apache 和 tomcat 联动 AJP 协议


五. 虚拟主机配置

Tomcat 的虚拟主机(Virtual Host)配置是为了支持在同一台服务器上运行多个独立的网站或应用程序,每个网站或应用程序可以拥有不同的域名、文件路径和配置。

配置步骤如下:

centos7-1
ls /usr/local/tomcat/webapps/

cd /data/
rm -rf *

mkdir -pv web{1,2,3}/ROOT
echo "web1 www.a.com" > web1/ROOT/index.html
echo "web2 www.b.com" > web2/ROOT/index.html
echo "web3 www.c.com" > web3/ROOT/index.html

cat web1/ROOT/index.html

vim /usr/local/tomcat/conf/server.xml

systemctl restart tomcat
centos7-2
vim /etc/hosts
192.168.52.101 nodel www.a.com www.b.com www.c.com

curl www.a.com:8080

curl www.b.com:8080

curl www.c.com:8080

 


六. tomcat nginx 动静分离

6.1 配置单级反向代理 

单级反向代理(Single-Level Reverse Proxy)是一种常见的网络架构设计,通常用于将客户端的请求转发到后端服务器,并将后端服务器的响应返回给客户端。反向代理在客户端和后端服务器之间充当中间层,提供负载均衡、安全性、缓存等功能。

在配置虚拟主机的基础上:

客户机;192.168.52.105----------->uduntu

nginx服务器:192.168.52.31------->uduntu-1

tomcat服务器1:192.168.52.101---->centos7-1

tomcat服务器2:192.168.52.102---->centos7-2

centos7-2
yum install epel-release.noarch -y(不要手打,可能会出错,用tab补全)
yum install nginx -y
systemctl start nginx
vim /etc/nginx/nginx.conf

location / {
        proxy_pass   http://www.a.com:8080/;
       }
nginx -t

systemctl restart nginx

curl www.a.com:8080

curl www.b.com:8080

curl www.c.com:8080

cd /usr/local/tomcat/webapps/ROOT
mv index.jsp index.jsp.bak
vim index.jsp
7-2 102

centos7-1
cd /usr/local/tomcat/webapps/ROOT
mv index.jsp index.jsp.bak
vim index.jsp
7-1 101

ubuntu-1
apt install nginx -y
systemctl start nginx
systemctl status nginx

cd /etc/nginx/
vim nginx.conf
include /etc/nginx/sites-enabled/*;(复制)

cd /etc/nginx/sites-enabled/
ls
ll
vim default
#添加以下内容
upstream tomcat {
server 192.168.52.101:8080;
server 192.168.52.102:8080;
}

location ~* \.jsp$ {
proxy_pass http;//tomcat;
}

nginx -t

systemctl restart nginx

cd /var/www/html/

vim index.html

ubuntu2204-1
ubuntu

curl 192.168.52.31/index.html

curl 192.168.52.31/index.jsp

 


6.2 多级反向代理

centos7

yum install epel-release -y

yum install nginx -y

systemctl start nginx

vim /etc/nginx/nginx.conf

upstream web {
server 192.168.52.103;
server 192.168.52.104;
}

location / {
proxy_pass http://web;
}

nginx -t

systemctl restart nginx

7-13
yum install epel-release -y

yum install nginx -y

systemctl start nginx

cd /usr/share/nginx/html

ls

echo "i come from 7-13" > index.html

cat index.html

vim /etc/nginx/nginx.conf

location -* |.jsp$ {
proxy_pass http://192.168.52.101:8080;
}

nginx -t

systemctl restart nginx

7-14
yum install epel-release -y

yum install nginx -y

systemctl start nginx

cd /usr/share/nginx/html

echo "i come from 7-14" > index.html

cat index.html

vim /etc/nginx/nginx.conf

location -* |.jsp$ {
proxy_pass http://192.168.52.102:8080;
}

nginx -t

systemctl restart nginx

 

7-11

使用上述脚本快速安装tomcat

systemctl status tomcat

cd /usr/local/tomcat/webapps/ROOT


echo " i come from 7-11 " > test.jsp

7-12

使用上述脚本快速tomcat 安装

systemctl status tomcat

cd /usr/local/tomcat/webapps/ROOT


echo " i come from 7-12 " > test.jsp

192.168.52.107/test.jsp


七. 实现Java项目

7.1 自建博客

#在centos7-1上安装

cd /usr/local/tomcat/webapps

#将jpress-v3.2.1.war文件拖入其中

ln -s jpress-v3.2.1 jpress


cat >/etc/yum.repos.d/mysql.repo <<EOF
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOF

yum -y install mysql-community-server

systemctl start mysqld

grep password /var/log/mysqld.log

mysql -u root -p'自己的密码'

set global validate_password_policy=0;
set global validate_password_length=1;
#修改密码策略

alter user root@'localhost' identified by 'abc123';CREATE DATABASE blog;
GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;