目录
一、概述
1.1 简介
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器, 在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可 利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。 实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时, 它实际上作为一个与Apache 独立的进程单独运行的。
1.2 安装配置Tomcat
##将文件包放入
[root@localhost ky15]# ls
apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm
##安装
[root@localhost ky15]# rpm -ivh jdk-8u201-linux-x64.rpm
关闭防火墙
[root@localhost jdk1.8.0_201-amd64]# systemctl stop firewalld.service
[root@localhost jdk1.8.0_201-amd64]# setenforce 0
修改环境变量
[root@localhost jdk1.8.0_201-amd64]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
##刷新配置文件
[root@localhost jdk1.8.0_201-amd64]#source /etc/profile
安装Tomcat
##将包放入并解压
[root@localhost ky15]# ls
apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm
[root@localhost ky15]# tar zxf apache-tomcat-9.0.16.tar.gz
[root@localhost ky15]# ls
apache-tomcat-9.0.16 apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm
##拷贝文件到全局目录下
[root@localhost ky15]# cp -r apache-tomcat-9.0.16 /usr/local/tomcat
##切换目录下并查看启动脚本
[root@localhost ky15]# cd /usr/local/tomcat/bin
[root@localhost bin]# ls
bootstrap.jar ciphers.sh daemon.sh setclasspath.bat startup.sh version.b
catalina.bat commons-daemon.jar digest.bat setclasspath.sh tomcat-juli.jar version.s
catalina.sh commons-daemon-native.tar.gz digest.sh shutdown.bat tomcat-native.tar.gz
catalina-tasks.xml configtest.bat makebase.bat shutdown.sh tool-wrapper.bat
ciphers.bat configtest.sh makebase.sh startup.bat tool-wrapper.sh
将服务加入系统环境
##添加用户并设置不可登录
[root@localhost bin]#useradd -s /sbin/nologin tomcat
##修改属主
[root@localhost local]#chown tomcat:tomcat tomcat/ -R
##编写服务文件并添加
[root@localhost ~]#vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
重启服务
[root@localhost local]#systemctl daemon-reload
[root@localhost local]#systemctl start tomcat
[root@localhost local]#ss -ntap |grep 8080
LISTEN 0 100 :::8080 :::* users:(("java",pid=5694,fd=54))
二、配置文件与核心组件
2.1 安装目录文件
目录名 | 功能 |
bin | 存放启动和关闭 Tomcat 的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh 三个文件 |
conf | 存放 Tomcat 服务器的各种配置文件,比较常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。 |
lib | 存放 Tomcat 服务器的 jar 包,一般不作任何改动,除非连接第三方服务,比如 redis,那就需要添加相对应的 jar 包 |
logs | 存放 Tomcat 日志 |
temp | 存放 Tomcat 运行时产生的文件 |
webapps | 存放项目资源的目录 |
works | Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到 |
2.2 conf子目录
文件名 | 说明 |
server.xml | 主配置文件 |
web.xml | 每个webapp只有“部署"后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认部署相关的配置,每个web应用也可以使用专用配置文件,来覆盖全局文件 |
context.xml | 用于定义所有web应用均需加载的Context配置,此文件为所有的webapps提供默认配置,每个web应用也可以使用自已专用的配置,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中,覆盖全局的文件 |
tomcat-users.xml | 用户认证的账号和密码文件 |
catalina.policy | 当使用security选项启动omcat时,用于为tomcat设置安全策略 |
catalina.properties | Tomcat环境变量的配置,用于设定类加载器路径,以及一些与JVM调优相关参数 |
logging.properties | Tomcat日志系统相关的配置,可以修改日志级别和日志路径等 |
三、Tomcat处理请求过程
Tomcat启动一个Server进程。可以启动多个Server,即tomcat的多实例,但一般只启动一个
创建一个Service提供服务。可以创建多个Service,但一般也只创建一个
每个Service中,是Engine和其连接器Connector的关联配置
可以为这个Service提供多个连接器Connector,这些Connector使用了不同的协议,绑定了不同的端口。其作用就是处理来自客户端的不同的连接请求或响应
Service 内部还定义了Engine,引擎才是真正的处理请求的入口,其内部定义多个虚拟主机Host
Engine对请求头做了分析,将请求发送给相应的虚拟主机
如果没有匹配,数据就发往Engine上的defaultHost缺省虚拟主机
Engine上的缺省虚拟主机可以修改
Host定义虚拟主机,虚拟主机有name名称,通过名称匹配
Context定义应用程序单独的路径映射和配置
通常意义上的web服务器接受请求后,只是单纯地响应静态资源,如 HTML 文件,图片 文件等,不能在后端进行一定的处理操作。 Tomcat 是 Apache 下的一个子项目,它具备 Web 服务器的所有功能,不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范 的 Java 代码 Servlet,同时将执行的结果以 HTML 代码的形式反回客户端。
四、磁盘文件和访问的url对应关系
[root@localhost webapps]# ls ##此文件下都是平级文件
docs examples host-manager manager ROOT
[root@localhost webapps]#
例如:新建一个目录并创建网页
[root@localhost webapps]# mkdir vlog ##新建目录
[root@localhost webapps]# ls
docs examples host-manager manager ROOT vlog
[root@localhost webapps]# chown tomcat:tomcat vlog/ ##更改属主
[root@localhost webapps]# cd vlog/
##新建网页
[root@localhost vlog]# vim index.html
this is my vlog
主页文件的优先级
新建htm文件,网页刷新结果为html文件结尾的网页
将html文件改为bak,查看生效结果
新建jsp文件查看优先级
html文件最高其次是htm文件,再其次是jsp文件
查看配置文件优先级
五、模拟打包jar包实验
##模拟制作jar包
[root@localhost conf]# cd /data/ ##切换目录
##创建html文件
[root@localhost data]# vim test.html
<h1>this is html<h1>
##创建jsp文件
[root@localhost data]# vim test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<! DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp例子</title>
</head>
<body>
<%
out.println ("test jsp");
%>
%%<br>
%<%=request.getRequestURL()%>
%</body>
%</html>
##制作包
[root@localhost data]# jar cvf /data/app1.war *
已添加清单
正在添加: test.html(输入 = 21) (输出 = 20)(压缩了 4%)
正在添加: test.jsp(输入 = 270) (输出 = 205)(压缩了 24%)
[root@localhost data]# ls
app1.war test.html test.jsp
##模拟开发人员发送包此时可以查看网页
[root@localhost data]# cp app1.war /usr/local/tomcat/webapps/
[root@localhost data]# ls /usr/local/tomcat/webapps/
app1 app1.war docs examples host-manager manager ROOT vlog
[root@localhost data]#
六、 虚拟主机配置
可能有时候公司会有多个项目需要运行,那么肯定不可能是一台服务器上运行多个 Tomcat 服务,这样会消耗太多的系统资源。此时,就需要使用到 Tomcat 虚拟主机。例如现 在新增两个域名希望通过这两个域名访问到不同的项目内容。
创建站点网页文件
[root@localhost webapps]# mkdir lpp dff
[root@localhost webapps]# ls
app1 dff examples jpress jpress-v4.1.4.war manager vlog
app1.war docs host-manager jpress-v4.1.4 lpp ROOT
##新建网页文件将内容写入
[root@localhost webapps]# echo "this is lpp" > lpp/index.html
[root@localhost webapps]# echo "this is dff" > dff/index.html
编辑配置文件,添加记录并重启
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
<Host name="www.lpp.com" appBase="/usr/local/tomcat/webapps" (站点目录)
unpackWARs="true" (自动解压)autoDeploy="true"(自动部署) xmlValidation="false"(检验标志)
xmlNamespaceAware="false">(启用或禁用命名空间)
<Context docBase="/usr/local/tomcat/webapps/kgc"
path="" reloadable="true" />
</Host>
<Host name="www.dff.com" appBase="/usr/local/tomcat/webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false"
xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/accp"
path="" reloadable="true" />
</Host>
[root@localhost conf]# systemctl restart tomcat.service 重启服务
模拟windows客户机访问
修改host文件
##更改hosts文件## C:\Windows\System32\drivers\etc 改hosts文件
192.168.162.111 www.dff.com www.lpp.com