Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
tomcat 由原始java的servlet实现 java web server以及apache的catalina项目合并而成。
前提为配置好java环境
1)rpm -ivh jdk-11.0.5_linux-x64_bin.rpm
2)配置环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/jdk-11.0.5/
export PATH=$JAVA_HOME/bin:$PATH
3)应用环境变量
source /etc/profile
1、下载tomcat
下载tag.gz
从官网https://tomcat.apache.org/下载
或用wget下载
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.30/bin/apache-tomcat-9.0.30.tar.gz
2、解压
tar zvxf apache-tomcat-9.0.30.tar.gz
3、启动tomcat
在tomcat bin目录下运行
./startup.sh
访问 http://:8080
4、将tomcat注册为系统服务
vi bin/catalina.sh
:set number
在大约143行加入内容
CATALINA_PID="CATALINA_BASE/tomcat.pid"
:wq!
创建tomcat.service
vi /lib/systemd/system/tomcat.service
[Unit]
Description=tomcat
After=network.target //指定启动的时机
[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/jdk/" //指定java环境变量
ExecStart=/usr/local/tomcat/bin/startup.sh //指定启动脚本
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReload=/bin/kill -s HUP $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
查看jdk环境变量的方法https://www.cnblogs.com/SunshineKimi/p/10795820.html
设置为开启机启动:systemctl enable tomcat.service
启动服务:systemctl start tomcat.service
停止服务:systemctl stop tomcat.service
重启服务:systemctl restart tomcat.service
检查状态:systemctl status tomcat
修改tomcat.service文件后需要执行下面命令使其生效:systemctl daemon-reload
查看所有已启动的服务:systemctl list-units --type=service
5、tomcat组件介绍
组件结构
<server>
<service>
<connector/>
<engine>
<host>
<context>
</context>
</host>
</engine>
</service>
</server>
1)顶级组件:server
server:一个运行在JVM中的tomcat实例。
2)容器类组件:可以包含其他组件的组件
engine:核心容器,catalina引擎,负责通过connector接收用户请求,将请求转至内部虚拟主机。
通过其defaultHost属性,转发至默认host
host:类似httpd的虚拟主机,支持基于HQDN的虚拟主机。
相关属性:
1) appBase: 此host的webapps路径,可以使用$CATALINA_HOME的相对路径。
2) autoDeploy:是否自动部署,即运行时放入appBase路径中的程序文件是否自动部署,默认为true。
3) unpackWars: 是否解压war,默认为true。
conetxt:最内层的容器组件,一个context代表一个应用程序。指定应用的webapp路径,还能为webapp指定额外属性,如部署方式等。
相关属性:
1) docBase: 相关的web应用程序的存放位置,也可以使用相对位置,起始路径为此Context所属的host中appBase定义的路径,
2) path:相对于根路径而言的URI,如果为”“,则为根路径。
3) reloadable: 是否允许重新加载此context类相关的Web应用程序类,默认为false。
service:负责将连接器关联至engine,一个service内部可以有多个connector,但只能有一个engine。相关属性:
1)className:用于实现此server容器的完全限定类名称,默认为org.apache.catalina.core.StandardServer。
2)port:用户接受shutdown指令的端口,默认仅允许通过本机访问,默认为8005。
3)name:此服务的名称,默认为Catalina。
3)连接器组件:连接用户请求到tomcat
Connector组件按照根据tomcat的工作模式分为一下两类:
Tomcat作为应用程序服务器:请求来自前端web服务器,可能是Apache、IIS、Nginx等。
Tomcat作为独立的服务器:请求来组web浏览器。
连接器分四种:
1)HTTP连接器
2)SSL连接器
3)AJP连接器
4)Proxy连接器
常见的属性说明:
1)address:连接器监听的地址,默认为所有地址,即0.0.0.0。
2) maxThreads:支持的最大并发连接数,默认为200。
3) port:监听的端口,默认为0
4) protocol:连接的协议,默认为HTTP/1.1,定义AJP协议时默认为AJP/1.3。
5) redirectPort:转发端口,如果定义的HTTP连接器,发送的请求为HTTPS,转发至此端口
6) connectionTimeout:等待客户端发送请求的超时时间,默认为60000,1分钟
7) enableLookups:是否通过request.getRemoteHost()进行DNS查询获取客户端的主机名,默认为true。
8) acceptCount:等待队列的最大长度,tomcat所有线程处于繁忙状态时,新发送过来的请求处于等待队列中。
4)被嵌套类组件:不能包含其他组件的组件
5)嵌套类组件:
valve:拦截请求并在转发至webapps前做某些处理,可用于任何组件中
logger:日志记录器,用于记录组件内部状态信息,可用于除context之外任何组件中
realm:关联一个用户认证库,实现认证和授权,可用于任何组件中
6、AJP连接器介绍
使用二进制协议,使用httpd反向代理用户请求至tomcat。用户使用apache服务反向代理时,nginx不行。