Tomcat介绍
- 免费的、开放源代码的Web应用服务器
- Apache软件基金会(Apache Software Foundation)Jakarta项目中的一个核心项目
- 由Apache、Sun和一些公司及个人共同开发而成
- 深受Java爱好者的喜爱,并得到部分软件开发商的认可
- 目前比较流行的Web应用服务器
Tomcat核心组件
Tomcat处理请求过程
源码安装Java
也可以使用yum安装
环境变量配置为
vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin
- 1、到官网下载
jdk-8u221-linux-x64.tar.gz
- 2、解压安装包,重命名为jdk
tar -zvxf jdk-8u221-linux-x64.tar.gz
mv jdk1.8.0_221 jdk
- 3、安装jdk到/usr/local/
[root@locahost home]# mv jdk /usr/local/
[root@locahost home]# cd /usr/local/
- 4、配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=/usr/local/jdk/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
- 5、使立即生效
source /etc/profile
- 6、验证
[root@locahost local]# java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
安装Tomcat
- 解压源码:
tar -xzf apache-tomcat-9.0.26.tar.gz
mv apache-tomcat-9.0.26 /usr/local/tomcat
- 启动tomcat
cd /usr/local/tomcat
bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started. 启动成功
- 查看端口
Tomcat默认运行在8080端口
[root@localhost tomcat]# netstat -antp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 4703/java
- 网页验证
- 关闭tomcat命令
/usr/local/tomcat/bin/shutdown.sh
Tomcat目录结构
Tomcat配置相关说明
Tomcat的主目录为/usr/local/tomcat
- 主要目录说明
bin:存放Windows或Linux平台上启动和关闭Tomcat的脚本文件
conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml
和web.xml
lib:存放Tomcat运行需要的库文件(JARS)
logs:存放Tomcat执行时的LOG文件
webapps:Tomcat的主要Web发布目录(包括应用程序示例)
work:存放jsp编译后产生的class文件 - 配置文件说明
catalina.polocy:权限控制配置文件
catalina.properties:Tomcat属性配置文件
context.xml:上下文配置文件
logging.properties:日志log相关配置文件
server.xml:主配置文件
tomcat-users.xml:manager-gui管理用户配置文件(Tomcat安装后提供一个manager-gui的管理界面,通过配置该文件可以开启访问)
web.xml:Tomcat的servlet、servlet-mapping、filter、MIME等相关配置
Tomcat主配置文件说明
- server.xml为Tomcat的主要配置文件,通过配置该文件,可以修改Tomcat的启动端口、网站目录、虚拟主机、开启https的重要功能
- 整个server.xml由以下结构构成:< Server > 、< Service > 、< Connector/ > 、< Engine > 、< Host > 、< /Context > 、< /Host > < /Engine > 、< /service > 和< /Server >
Tomcat Server的组成部分
- Server:代表了整个Catalina的serlet容器
- Service:Service是这样一个集合:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求
- Connector:一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户
TOMCAT有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其它WebServer的请求
Coyote Http/1.1 Connector 在端口8080处侦听来自客户browser的http请求
Coyote JK2 Connector 在端口8009处侦听来自其它WebServer(Apache)的servlet/jsp代理请求 - Engine:Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名
当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理
Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理 - 代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配
每个虚拟主机下都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context,有一个Context path
当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理
匹配的方法是“最长匹配”,所以一个path==""的Context将成为该Host的默认Context
所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配 - Context:一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet组成
Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF/web.xml载入Servlet类
当Context获得请求时,将在自己的映射表(mapping table)中寻找相匹配的Servlet类
如果找到,则执行该类,获得请求的回应,并返回
虚拟主机配置
- 有多个项目同时运行时,一台服务器不建议运行多个Tomcat服务,需要配置虚拟主机
- 通过两个域名访问到不同的项目内容
步骤:- 创建www和bbs项目目录和文件
[root@localhost ~]# mkdir /usr/local/tomcat/webapps/www [root@localhost ~]# echo "This is www page\!" > /usr/local/tomcat/webapps/www/index.jsp [root@localhost ~]# mkdir /usr/local/tomcat/webapps/bbs [root@localhost ~]# echo "This is bbs page\!" > /usr/local/tomcat/webapps/bbs/index.jsp
-
修改Tomcat主配置文件usr/local/tomcat/conf/server.xml的< Host/>部分
<Host name="www.test.com" appBase="/usr/local/tomcat/webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/www" path="" reloadable="true" /> </Host> <Host name="bbs.test.com" appBase="/usr/local/tomcat/webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/bbs" path="" reloadable="true" /> </Host>
-
重启Tomcat服务
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh [root@localhost ~]# /usr/local/tomcat/bin/startup.sh
- 测试
Tomcat默认端口为8080