tomcat/Web容器-tomcat.md
2025-03-15 12:28:32 +08:00

8.4 KiB
Raw Permalink Blame History

Tomcat


Tomcat 简介

1. 简介

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!

[root@tomcat ~]# wget https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.59/bin/apache-tomcat-7.0.59.tar.gz

2. 安装

[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. 环境变量

[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. 检查

[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

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

6. 管理方式

启动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. 检测

[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主目录介绍

[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目录介绍

[root@tomcat tomcat]# cd webapps/
[root@tomcat webapps]# tree -L 1
.
├── docs           # tomcat的帮助文档
├── examples       # web应用实例
├── host-manager   # 主机管理
├── manager        # 管理
└── ROOT           # 默认站点根目录

5 directories, 0 files

Tomcat配置文件目录介绍

[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 管理

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. 日志

[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 参数优化

[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"

设置初始堆、非堆内存大小以及年轻代

-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虚拟机内存分配与回收策略开发使用

[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 配置

[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;
      		}
     } 		     		
 }