• Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
  • 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。

一、Tomcat体系架构

核心组件

server:相当于一个tomcat实例。接收并解析请求信息;完成相关动作后把响应结果返回给计算机。

service:每个server包含多个service,相互独立,仅共享JVM以及类库。用于把连接器(connector)与引擎(engine)关连起来,且一个service只能有一个engine,但是可以有多个connector。因为engine无法直接接受连接器发来的数据。

connector:负责开启socket并监听客户端请求、返回响应数据。多个connector监听多个端口

engine:负责具体的处理请求,connector仅仅负责监听,收到数据后交给engine运行。

host:在ngine中可以包含多个host,每个host定义了虚拟主机

context:每个context可以部署一个web应用。一个host可以存在多个context。如果部署多个应用需要分别对每个应用装载所依赖的库,这个步骤可以自动可以手动。

二、Tomcat的安装

tomcat其实就是一个JAVA程序,所以要运行在JAVA虚拟机中。要运行虚拟机就要先安装JDK。

1.JDK的安装

1.通过YUM安装
yum install java-1.8.0-openjdk-devel
2.配置环境变量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest # 首先定义JAVA_HOME的环境变量
export PATH=$JAVA_HOME/bin:$PATH # 然后向后追加即可

2.Tomcat的安装

首先要从Tomcat的官网下载Tomcat,然后上传至服务器解压。 https://tomcat.apache.org

1.将下载的软件包解压
tar xf apache-tomcat-VERSION.tar.gz -C /usr/local/
cd /usr/local 2.创建软连接,或者将解压的tomcat直接改名为tomcat也能达到同样的效果
ln -sv apache-tomcat-VERSION tomcat 3.添加环境变量
vim /etc/profile.d/tomcat.sh
export CATALINA_BASE=/usr/local/tomcat
export PATH=$CATALINA_BASE/bin:$PATH 4.创建tomcat需要的用户
useradd tomcat 5.将安装包的路径下的所有属组都改为tomcat
chown -R root.tomcat /usr/local/tomcat # 设定所有者为root,所属组为tomcat
chown -R tomcat /usr/local/tomcat/{logs,temp,work,webapps} # 仅将需要有写权限文件所有者改为tomcat
chmod g+r /usr/local/tomcat/conf # 默认没有权限,会导致启动失败 5.切换到tomcat用户最后启动服务即可
su - tomcat
catalina.sh start # 启动tomcat。catalina.sh命令需要先添加环境变量

三、Tomcat服务的配置文件结构

bin:   脚本、以及Tomcat自身所携带的工具包
conf: Tomcat服务的配置文件目录;
lib: 库文件,Java类库,jar;
logs: 日志文件目录;
temp: 临时文件目录;
webapps:webapp的默认目录;相当于页面的根目录。部署的应用都应该在IC目录下
work: 工作目录,存放编译后的字节码文件;

四、部署测试页面

创建一个测试页面,将下面的步骤全部做完后,通过浏览器访问http://IP:8080/test 即可访问到测试的页面

1.创建文件夹,classes、lib、WEB-INF为一个标准应用应该有的目录,这里创建仅仅为了与标准看齐
mkidr -pv /usr/share/tomcat/webapps/test/{classes,lib,WEB-INF} 2.创建一个测试页面用于检验Tomcat服务是否能正常提供服务
vim /usr/local/tomcat/webapps/test/index.jsp # 创建jsp测试页面
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>Test Page</title>
/head>
<body>
<% out.println("hello world");
%>
</body>
</html 3.重启服务
systemctl restart tomcat 4.部署完成后在webapp目录自动生成一些目录
cd /usr/share/tomcat/work/Catalina # 部署完成后自动生成的test目录下的文件
[root@localhost Catalina]# tree .
.
└── localhost # 默认主机站点
├── _
├── docs
├── examples
├── host-manager
├── manager
├── sample
└── test # webpp应用名称。自动生成以下目录
└── org
└── apache
└── jsp
├── index_jsp.class
└── index_jsp.java

五、Tomcat的至 配置文件

1.service组件

前面讲到connecotr负责接收用户请求,而engine负责接处理用户请求。但是connecotr并不能与engine直接通信。所以service就是负责将connector与engine连接起来的组件

<Service name="Catalina">

2.connector组件

connector负责接收客户端发来的请求,常见的连接有三种:http、https、ajp

进入tomcat的请求可分为两类:

(1) standalone : 请求来自于客户端浏览器;

(2) 由其它的web server反代:来自前端的反代服务器,通过反带服务器发来的又有以下几种;

  • nginx --> http connector --> tomcat
  • httpd(proxy_http_module) --> http connector --> tomcat
  • httpd(proxy_ajp_module) --> ajp connector --> tomcat
  • httpd(mod_jk) --> ajp connector --> tomcat

    示例
<Connector port="8080" 				# 默认有两个connector一个监听http一个监听ajp
protocol="HTTP/1.1" # 如果是http可以无需指明协议。AJP的话Protocol="AJP/1.3"
connectionTimeout="20000" # 超时时长,毫秒即20s
redirectPort="8443" # 如果请求的为SSL请求就将请求转发至8443端口
address: # 监听的IP地址;默认为本机所有可用地址;不写就监听本地所有IP
maxThreads: # 最大并发连接数,默认为200;
enableLookups: # 是否启用DNS查询功能;将IP地址解析为域名。关闭提升性能
acceptCount: # 等待队列的最大长度;
secure: # =true的表示使用SSL通信
sslProtocol: # 设定使用哪个SSL协议,通常在tomcat上不建议使用SSL,速度太慢
/>

3.Engine组件

Engine组件负责处理发来的请求。

Engine是Servlet实例,即servlet引擎,其内部可以一个或多个host组件来定义站点; 通常需要通过defaultHost来定义默认的虚拟主机。

示例

<Engine name="Catalina" defaultHost="localhost">
name=Catalina # 引擎的名称
defaultHost="localhost" # 默认的响应主机站点。如果找不到合适,或者域名不匹配选择默认host
jvmRoute= # Tomcat做集群时的调度标志,类似于HAproxy的会话标识。
# 在基于cookie绑定时会用到
...
<Engine>

4.Host组件

Host组件位于engine内部用于接收请求并进行相应处理的主机或虚拟主机

 <Host 	  name="localhost"  		# 设定为主机名即可
appBase="webapps" # webapps的默认存放路径(相对路径,可以用绝对路径)。相当站点根
unpackWARs="true" # true为自动展开WAR文件
autoDeploy="true"> # 是否开启自动部署功能。
#unpackWARS、autoDeploy定义了WebAPP为WAR格式且在根下时自动部署
</Host>

5.Context组件

包含在Host标签里。

如果在一个主机上部署多个app的话,Context就可以用来定义不同app对应的路径。

<Context path="/PATH" 					# 网页的RUL
docBase="/PATH/TO/SOMEDIR" # 真实路径。
reloadable=""/> # 如果为true说明可以重新装载

6.valve组件

Valve存在多种类型:

定义访问日志:org.apache.catalina.valves.AccessLogValve

定义访问控制:org.apache.catalina.valves.RemoteAddrValve

<Valve className="org.apache.catalina.valves.AccessLogValve" 	   # 定义记录日志要访问的类
directory="logs" # 日志文件的目录路径,默认在/var/log/tomcat下
prefix="node1_test_access_" # 日志文件的前缀
suffix=".log" # 日志文件的后缀
pattern="%h %l %u %t &quot;%r&quot; %s %b" /> # 记录日志的格式
pattern="%h %l %u %t &quot;%r&quot; %s %b" />

轻松驾驭Tomcat的更多相关文章

  1. 易用BPM时代,企业如何轻松驾驭H3?

    众所周知,BPM作为企业发展的推动力,能敏捷高效的融合业务流程和信息资源.通过综合考虑流程的成本.效率.质量等方面因素,用IT系统将调整后的流程固化下来,从而降低企业管理成本,提高内部运营效率,提升企 ...

  2. 用好Git 和 SVN,轻松驾驭版本管理

    用好Git 和 SVN,轻松驾驭版本管理 本文从 Git 与 SVN 的对比入手,介绍如何通过 Git-SVN 开始使用 Git,并总结平时工作高频率使用到的 Git 常用命令. 一.Git vs S ...

  3. 科普贴 | 数字钱包MetaMask安装使用详解,活用MetaMask轻松驾驭以太坊

    MetaMask 是一款浏览器插件钱包,不需下载安装客户端,只需添加至浏览器扩展程序即可使用,非常方便.它是很多支持 ETH 参投的 ICO 项目推荐使用的钱包之一. 2018年初最火的一个币,应该就 ...

  4. Git 常用命令总结,掌握这些,轻松驾驭版本管理

    原创 最近公司的代码管理工具要从SVN转到Git上,因此虽然之前用过Git,但是都是一些简单的推送提交,因此还是有必要进行一些系统的学习,这里做一下笔记,以备后询,且不定期更新. 关于SVN和Git的 ...

  5. Tomcat的bin目录下startup.bat、Tomcat6.exe、Tomcat6w.exe区别

    从官方下载了apache-tomcat-6.0.37-windows-x64.zip安装包,解压后bin目录下的startup.bat.Tomcat6.exe.Tomcat6w.exe 3个程序有何区 ...

  6. Ubuntu操作系统安装使用教程 (转)

    随着微软的步步紧逼,包括早先的Windows黑屏计划.实施,逮捕番茄花园作者并判刑,种种迹象表明,中国用户免费使用盗版Windows的日子将不会太长久了,那么这个世界上有没有即免费又易用的操作系统呢? ...

  7. PDF 生成插件 flying saucer 和 iText

    最近的项目中遇到了需求,用户在页面点击下载,将页面以PDF格式下载完成供用户浏览,所以上网找了下实现方案. 在Java世界,要想生成PDF,方案不少,所以简单做一个小结吧. 在此之前,先来勾画一下我心 ...

  8. HelloWorld 和相关设置

    写这篇文章的初衷很简单,就是想再一次证明 IntelliJ IDEA 对于 Java 开发人员来说,确实比 eclipse 要好用得多,鉴于目前市面上关于 IntelliJ IDEA 的教程比较少,叙 ...

  9. websocket的原理

    首先明确几点: 1. websocket是一种协议.是html5的一种新协议: 2. 与http的区别是,它是一种双向通信协议,服务器和客户端都能主动向对方发送或接受数据: 3. websocket需 ...

随机推荐

  1. linux下快速列出文件列表的方法

    前言 这两天碰到一个很棘手的问题,需要读取出ubuntu系统中某个目录下所有文件,由于服务器中存储的文件实在太多,导致此过程效率十分低下,动辄需要等待一个小时之久,还只是一个目录.于是如何快速获取文件 ...

  2. Asp.net MVC4高级编程学习笔记-视图学习第三课Razor页面布局20171010

    Razor页面布局 1)  在布局模板页中使用@RenderBody标记来渲染主要内容.比如很多web页面说头部和尾部相同,中间内容部分使用@RenderBody来显示不同的页面内容. 2)  在布局 ...

  3. Linux下搭建tomcat和jre的环境

    1.下载linux版本的tomcat和jre tomcat下载:http://pan.baidu.com/s/1nt7D87J: jre下载:http://pan.baidu.com/s/1sj4hA ...

  4. 华为olt ma5680t常用命令详解

    进入待替换的故障ONU所注册的单板 interface epon 0/1         //此处可以通过查看PON口下设备状态来获取需要替换的ONU ID.假设故障设备位于2端口,ID为6 ont ...

  5. ZOJ-3933-Team Formation【二分图最佳匹配】【KM】

    http://blog.csdn.net/loy_184548/article/details/51154195    一开始对不同组合得不同分数(mm1,mg2,gg3),想用sap来写,但是保证了 ...

  6. Simple Validation in WPF

    A very simple example of displaying validation error next to controls in WPF Introduction This is a ...

  7. 框架应用 : Spring MVC - 开发详述

    软件开发中的MVC设计模式 软件开发的目标是减小耦合,让模块之前关系清晰. MVC模式在软件开发中经常和ORM模式一起应用,主要作用是将(数据抽象,数据实体传输和前台数据展示)分层,这样前台,后台,数 ...

  8. win10 uwp 切换主题

    本文主要说如何在UWP切换主题,并且如何制作主题. 一般我们的应用都要有多种颜色,一种是正常的白天颜色,一种是晚上的黑夜颜色,还需要一种辅助的高对比颜色.这是微软建议的,一般应用都要包含的颜色. 我们 ...

  9. WAMPServer配置修改及问题汇总

    备忘录 软件版本wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b -------------------------------------- ...

  10. LeetCode 111. Minimum Depth of Binary Tree (二叉树最小的深度)

    Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...