更新 Web容器-tomcat.md

This commit is contained in:
wxin 2025-03-15 12:28:32 +08:00
parent ea692952e8
commit 3e22b88375

View File

@ -1,288 +1,288 @@
<h2><center>Tomcat</center></h2>
------
## 一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.xmlRealm认证时用到的相关角色、用户和密码等信息
- catalina.policyJava相关的安全策略配置文件在系统资源级别上提供访问控制的能力
- catalina.propertiesTomcat内部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
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
```
日志格式参数文件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;
}
}
}
```
<h2><center>Tomcat</center></h2>
------
## 一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.xmlRealm认证时用到的相关角色、用户和密码等信息
- catalina.policyJava相关的安全策略配置文件在系统资源级别上提供访问控制的能力
- catalina.propertiesTomcat内部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
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
```
日志格式参数文件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;
}
}
}
```