From 3e22b88375fba99b80971ddddb8b4278860e546e Mon Sep 17 00:00:00 2001 From: wxin <15253413025@163.com> Date: Sat, 15 Mar 2025 12:28:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20Web=E5=AE=B9=E5=99=A8-tomc?= =?UTF-8?q?at.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Web容器-tomcat.md | 576 +++++++++++++++++++++++----------------------- 1 file changed, 288 insertions(+), 288 deletions(-) diff --git a/Web容器-tomcat.md b/Web容器-tomcat.md index a7de4a0..e9653d6 100644 --- a/Web容器-tomcat.md +++ b/Web容器-tomcat.md @@ -1,288 +1,288 @@ -

Tomcat

- ------- - -## 一:Tomcat 简介 - -### 1. 简介 - -![](accents\image-202503150001.png) - -​ Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目 - -​ Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器 - -​ Tomcat是WEB容器/WEB中间件 - -​ Tomcat官网:https://tomcat.apache.org/ - -### 2. 端口 - -- Tomcat自身服务的端口:8005 -- Tomcat和其他应用通信的端口:8009 -- Tomcat给客户端浏览器访问页面使用的端口:8080 - -### 3. 运行环境 - -​ JDK是 Java 语言的软件开发工具包 - -​ JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具 - -​ Tomcat运行需要JDK - -## 二:Tomcat 安装 - -### 1. 下载 - -访问官方网站:[Apache Tomcat® - Welcome!](https://tomcat.apache.org/) - -![](accents\image-202503150002.png) - -![](accents\image-202503150003.png) - -![](accents\image-202503150004.png) - -![](accents\image-202503150005.png) - -![](accents\image-202503150006.png) - -```bash -[root@tomcat ~]# wget https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.59/bin/apache-tomcat-7.0.59.tar.gz -``` - -### 2. 安装 - -```bash -[root@tomcat ~]# tar xf apache-tomcat-7.0.59.tar.gz -C /usr/local/ -[root@tomcat ~]# tar xf jdk-8u211-linux-x64.tar.gz -C /usr/local/ -[root@tomcat ~]# ln -s /usr/local/jdk1.8.0_211 /usr/local/java -[root@tomcat ~]# ln -s /usr/local/apache-tomcat-7.0.59 /usr/local/tomcat -``` - -### 3. 环境变量 - -```bash -[root@tomcat ~]# vim /etc/profile -JAVA_HOME=/usr/local/java -PATH=$JAVA_HOME/bin:$PATH -export JAVA_HOME PATH -[root@tomcat ~]# source /etc/profile -``` - -### 4. 检查 - -```bash -[root@tomcat ~]# java -version -java version "1.8.0_211" -Java(TM) SE Runtime Environment (build 1.8.0_211-b12) -Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode) -``` - -### 5. 启动 Tomcat - -```bash -[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh -``` - -### 6. 管理方式 - -```shell -启动tomcat的方法: - 1.直接执行/usr/local/tomcat/bin/startup.sh - 2.直接执行/usr/local/tomcat/bin/catalina.sh start -关闭tomcat的方法: - 1.直接执行/usr/local/tomcat/bin/shutdown.sh - 2.直接执行/usr/local/tomcat/bin/catalina.sh stop -``` - -### 7. 检测 - -```bash -[root@tomcat ~]# netstat -tnlp | grep java -tcp6 0 0 :::8080 :::* LISTEN 2838/java -tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2838/java -tcp6 0 0 :::8009 :::* LISTEN 2838/java -``` - -### 8. 测试 - -​ IP+端口访问 - -### 9. Tomcat 目录 - -Tomcat主目录介绍 - -```bash -[root@tomcat ~]# cd /usr/local/tomcat/ -[root@tomcat tomcat]# tree -L 1 -. -├── bin # 存放tomcat的管理脚本(二进制文件) -├── conf # tomcat的配置文件(server.xml) -├── lib # web应用调用的jar包存放路径 -├── LICENSE -├── logs # tomcat日志存放目录 -├── NOTICE -├── RELEASE-NOTES -├── RUNNING.txt -├── temp # 存放临时文件 -├── webapps # 默认网站发布目录 -└── work # 存放编译生产的.java与.class文件 - -7 directories, 4 files -``` - -Webapps目录介绍 - -```bash -[root@tomcat tomcat]# cd webapps/ -[root@tomcat webapps]# tree -L 1 -. -├── docs # tomcat的帮助文档 -├── examples # web应用实例 -├── host-manager # 主机管理 -├── manager # 管理 -└── ROOT # 默认站点根目录 - -5 directories, 0 files -``` - -Tomcat配置文件目录介绍 - -```bash -[root@tomcat webapps]# cd ../conf/ -[root@tomcat conf]# tree -L 1 -. -├── Catalina -├── catalina.policy -├── catalina.properties -├── context.xml -├── logging.properties -├── server.xml # tomcat 主配置文件 -├── tomcat-users.xml # tomcat 管理用户配置文件 -└── web.xml - -1 directory, 7 files -``` - -## 三:Tomcat 扩展 - -### 1. Tomcat 配置文件 - -- server.xml: Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息; -- web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息; -- tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息; -- catalina.policy:Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力; -- catalina.properties:Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制; -- logging.properties: Tomcat6通过自己内部实现的JAVA日志记录器来记录操作相关的日志; -- context.xml:所有host的默认配置信息; - -### 2. Tomcat 管理 - -```bash -1.编辑一个文件tomcat -[root@tomcat ~]# vim tomcat -#!/bin/bash -bash /usr/local/tomcat/bin/catalina.sh $1 - -2.给tomcat文件加执行权限 - -[root@tomcat ~]# chmod a+x tomcat - -3.把tomcat放到/usr/bin目录下 - -[root@tomcat ~]# mv tomcat /usr/bin - -4.使用 - -[root@tomcat ~]# tomcat stop 停止 -[root@tomcat ~]# tomcat start 启动 -``` - -## 四:Tomcat 日志管理 - -### 1. 日志 - -```bash -[root@tomcat ~]# cd /usr/local/tomcat/conf/ -[root@tomcat conf]# vim server.xml - -``` - -日志格式参数文件:https://tomcat.apache.org/tomcat-8.5-doc/config/valve.html#Access_Logging - -### 2. JVM 参数优化 - -```bash -[root@tomcat ~]# cd /usr/local/tomcat/bin/ -[root@tomcat bin]# vim catalina.sh -JAVA_OPTS="$JAVA_OPTS -Xms4096m -Xmx4096m -XX:PermSize=1024m -XX:MaxPermSize=2048m" -``` - -设置初始堆、非堆内存大小以及年轻代 - -```shell --Xms50m -Xmx200m -XX:PermSize=30m -XX:MaxPermSize=60m --Xloggc:eclipse_gc.log (设置垃圾回收日志打印的文件,文件名称可以自定义) --XX:+PrintGCTimeStamps (打印垃圾回收时间信息时的时间格式) --XX:+PrintGCDetails (打印垃圾回收详情) --XX:PermSize:设置永久代(perm gen)初始值。默认值为物理内存的1/64。 --XX:MaxPermSize:设置持久代最大值。物理内存的1/4。 --Xms:初始堆大小,默认为物理内存的1/64(<1GB) --Xmx:最大堆大小 --Xmn:新生代的内存空间大小 -``` - -### 3. gc 日志 - -阅读GC日志,我们可以了解Java虚拟机内存分配与回收策略(开发使用) - -```bash -[root@tomcat ~]# cd /usr/local/tomcat/bin/ -[root@tomcat bin]# vim catalina.sh -JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails \ - -XX:+PrintGCDateStamps \ - -Xloggc:/var/log/tomcat/gc.log \ - -XX:+UseGCLogFileRotation \ - -XX:NumberOfGCLogFiles=10 \ - -XX:GCLogFileSize=100M" -``` - -参数说明: - -- -XX:+PrintGCDetails:打印详细的GC信息。 -- -XX:+PrintGCDateStamps:添加日期时间戳。 -- -Xloggc:/var/log/tomcat/gc.log:指定GC日志文件路径。 -- -XX:+UseGCLogFileRotation:启用日志轮转。 -- -XX:NumberOfGCLogFiles=10:保留最多10个日志文件。 -- -XX:GCLogFileSize=100M":每个日志文件最大100MB。 - -## 五:Tomcat 负载均衡 - -### Nginx 配置 - -```bash -[root@tomcat ~]# vim /usr/local/nginx/conf/nginx.conf -这个地方是 地址池,这里包含了后端服务器的地址和端口,这里的名字随便启。 -http { - upstream tomcat_pool { - #ip_hash; 最大失败次数 失败超时时间 - server 192.168.122.105:8081 weight=1 max_fails=2 fail_timeout=2; - server 192.168.122.105:8082 weight=1 max_fails=2 fail_timeout=2; - server 192.168.122.105:8083 weight=1 max_fails=2 fail_timeout=2; - server 192.168.122.105:8084 weight=1 max_fails=2 fail_timeout=2; - } -负载均衡的算法: RR round robin session ip_hash 是常用的负载均衡的算法 - server { - location / { - proxy_pass http://tomcat_pool; - proxy_redirect off; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } - } - } -``` - +

Tomcat

+ +------ + +## 一:Tomcat 简介 + +### 1. 简介 + +![](http://182.92.143.66:40072/directlink/img/tomcat/image-202503150001.png) + +​ Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目 + +​ Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器 + +​ Tomcat是WEB容器/WEB中间件 + +​ Tomcat官网:https://tomcat.apache.org/ + +### 2. 端口 + +- Tomcat自身服务的端口:8005 +- Tomcat和其他应用通信的端口:8009 +- Tomcat给客户端浏览器访问页面使用的端口:8080 + +### 3. 运行环境 + +​ JDK是 Java 语言的软件开发工具包 + +​ JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具 + +​ Tomcat运行需要JDK + +## 二:Tomcat 安装 + +### 1. 下载 + +访问官方网站:[Apache Tomcat® - Welcome!](https://tomcat.apache.org/) + +![](http://182.92.143.66:40072/directlink/img/tomcat/image-202503150002.png) + +![](http://182.92.143.66:40072/directlink/img/tomcat/image-202503150003.png) + +![](http://182.92.143.66:40072/directlink/img/tomcat/image-202503150004.png) + +![](http://182.92.143.66:40072/directlink/img/tomcat/image-202503150005.png) + +![](http://182.92.143.66:40072/directlink/img/tomcat/image-202503150006.png) + +```bash +[root@tomcat ~]# wget https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.59/bin/apache-tomcat-7.0.59.tar.gz +``` + +### 2. 安装 + +```bash +[root@tomcat ~]# tar xf apache-tomcat-7.0.59.tar.gz -C /usr/local/ +[root@tomcat ~]# tar xf jdk-8u211-linux-x64.tar.gz -C /usr/local/ +[root@tomcat ~]# ln -s /usr/local/jdk1.8.0_211 /usr/local/java +[root@tomcat ~]# ln -s /usr/local/apache-tomcat-7.0.59 /usr/local/tomcat +``` + +### 3. 环境变量 + +```bash +[root@tomcat ~]# vim /etc/profile +JAVA_HOME=/usr/local/java +PATH=$JAVA_HOME/bin:$PATH +export JAVA_HOME PATH +[root@tomcat ~]# source /etc/profile +``` + +### 4. 检查 + +```bash +[root@tomcat ~]# java -version +java version "1.8.0_211" +Java(TM) SE Runtime Environment (build 1.8.0_211-b12) +Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode) +``` + +### 5. 启动 Tomcat + +```bash +[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh +``` + +### 6. 管理方式 + +```shell +启动tomcat的方法: + 1.直接执行/usr/local/tomcat/bin/startup.sh + 2.直接执行/usr/local/tomcat/bin/catalina.sh start +关闭tomcat的方法: + 1.直接执行/usr/local/tomcat/bin/shutdown.sh + 2.直接执行/usr/local/tomcat/bin/catalina.sh stop +``` + +### 7. 检测 + +```bash +[root@tomcat ~]# netstat -tnlp | grep java +tcp6 0 0 :::8080 :::* LISTEN 2838/java +tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2838/java +tcp6 0 0 :::8009 :::* LISTEN 2838/java +``` + +### 8. 测试 + +​ IP+端口访问 + +### 9. Tomcat 目录 + +Tomcat主目录介绍 + +```bash +[root@tomcat ~]# cd /usr/local/tomcat/ +[root@tomcat tomcat]# tree -L 1 +. +├── bin # 存放tomcat的管理脚本(二进制文件) +├── conf # tomcat的配置文件(server.xml) +├── lib # web应用调用的jar包存放路径 +├── LICENSE +├── logs # tomcat日志存放目录 +├── NOTICE +├── RELEASE-NOTES +├── RUNNING.txt +├── temp # 存放临时文件 +├── webapps # 默认网站发布目录 +└── work # 存放编译生产的.java与.class文件 + +7 directories, 4 files +``` + +Webapps目录介绍 + +```bash +[root@tomcat tomcat]# cd webapps/ +[root@tomcat webapps]# tree -L 1 +. +├── docs # tomcat的帮助文档 +├── examples # web应用实例 +├── host-manager # 主机管理 +├── manager # 管理 +└── ROOT # 默认站点根目录 + +5 directories, 0 files +``` + +Tomcat配置文件目录介绍 + +```bash +[root@tomcat webapps]# cd ../conf/ +[root@tomcat conf]# tree -L 1 +. +├── Catalina +├── catalina.policy +├── catalina.properties +├── context.xml +├── logging.properties +├── server.xml # tomcat 主配置文件 +├── tomcat-users.xml # tomcat 管理用户配置文件 +└── web.xml + +1 directory, 7 files +``` + +## 三:Tomcat 扩展 + +### 1. Tomcat 配置文件 + +- server.xml: Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息; +- web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息; +- tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息; +- catalina.policy:Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力; +- catalina.properties:Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制; +- logging.properties: Tomcat6通过自己内部实现的JAVA日志记录器来记录操作相关的日志; +- context.xml:所有host的默认配置信息; + +### 2. Tomcat 管理 + +```bash +1.编辑一个文件tomcat +[root@tomcat ~]# vim tomcat +#!/bin/bash +bash /usr/local/tomcat/bin/catalina.sh $1 + +2.给tomcat文件加执行权限 + +[root@tomcat ~]# chmod a+x tomcat + +3.把tomcat放到/usr/bin目录下 + +[root@tomcat ~]# mv tomcat /usr/bin + +4.使用 + +[root@tomcat ~]# tomcat stop 停止 +[root@tomcat ~]# tomcat start 启动 +``` + +## 四:Tomcat 日志管理 + +### 1. 日志 + +```bash +[root@tomcat ~]# cd /usr/local/tomcat/conf/ +[root@tomcat conf]# vim server.xml + +``` + +日志格式参数文件:https://tomcat.apache.org/tomcat-8.5-doc/config/valve.html#Access_Logging + +### 2. JVM 参数优化 + +```bash +[root@tomcat ~]# cd /usr/local/tomcat/bin/ +[root@tomcat bin]# vim catalina.sh +JAVA_OPTS="$JAVA_OPTS -Xms4096m -Xmx4096m -XX:PermSize=1024m -XX:MaxPermSize=2048m" +``` + +设置初始堆、非堆内存大小以及年轻代 + +```shell +-Xms50m -Xmx200m -XX:PermSize=30m -XX:MaxPermSize=60m +-Xloggc:eclipse_gc.log (设置垃圾回收日志打印的文件,文件名称可以自定义) +-XX:+PrintGCTimeStamps (打印垃圾回收时间信息时的时间格式) +-XX:+PrintGCDetails (打印垃圾回收详情) +-XX:PermSize:设置永久代(perm gen)初始值。默认值为物理内存的1/64。 +-XX:MaxPermSize:设置持久代最大值。物理内存的1/4。 +-Xms:初始堆大小,默认为物理内存的1/64(<1GB) +-Xmx:最大堆大小 +-Xmn:新生代的内存空间大小 +``` + +### 3. gc 日志 + +阅读GC日志,我们可以了解Java虚拟机内存分配与回收策略(开发使用) + +```bash +[root@tomcat ~]# cd /usr/local/tomcat/bin/ +[root@tomcat bin]# vim catalina.sh +JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails \ + -XX:+PrintGCDateStamps \ + -Xloggc:/var/log/tomcat/gc.log \ + -XX:+UseGCLogFileRotation \ + -XX:NumberOfGCLogFiles=10 \ + -XX:GCLogFileSize=100M" +``` + +参数说明: + +- -XX:+PrintGCDetails:打印详细的GC信息。 +- -XX:+PrintGCDateStamps:添加日期时间戳。 +- -Xloggc:/var/log/tomcat/gc.log:指定GC日志文件路径。 +- -XX:+UseGCLogFileRotation:启用日志轮转。 +- -XX:NumberOfGCLogFiles=10:保留最多10个日志文件。 +- -XX:GCLogFileSize=100M":每个日志文件最大100MB。 + +## 五:Tomcat 负载均衡 + +### Nginx 配置 + +```bash +[root@tomcat ~]# vim /usr/local/nginx/conf/nginx.conf +这个地方是 地址池,这里包含了后端服务器的地址和端口,这里的名字随便启。 +http { + upstream tomcat_pool { + #ip_hash; 最大失败次数 失败超时时间 + server 192.168.122.105:8081 weight=1 max_fails=2 fail_timeout=2; + server 192.168.122.105:8082 weight=1 max_fails=2 fail_timeout=2; + server 192.168.122.105:8083 weight=1 max_fails=2 fail_timeout=2; + server 192.168.122.105:8084 weight=1 max_fails=2 fail_timeout=2; + } +负载均衡的算法: RR round robin session ip_hash 是常用的负载均衡的算法 + server { + location / { + proxy_pass http://tomcat_pool; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } + } +``` +