目录

  • 一.Tomcat介绍
    • 1.1Tomcat简介
    • 1.2Tomcat核心组件
  • 二、Tomcat功能组件结构
    • 2.1Tomcat结构
    • 2.2Container结构分析
    • 2.3Tomcat请求过程
  • 三、Tomcat服务部署
    • 3.1安装JDK
    • 3.2设置JDK环境变量
    • 3.3安装启动Tomcat
    • 3.4浏览访问Tomcat的默认主页
    • 3.5优化tomcat启动速度
    • 3.6主要存放目录说明
    • 3.7将Tomcat添加到服务
  • 四、Tomcat虚拟主机配置
    • 4.1创建xiny和xiaoy项目目录文件
    • 4.2修改Tomcat主配置文件
    • 4.3客户端浏览器访问验证
  • 五、Tomcat优化

一.Tomcat介绍

1.1Tomcat简介

Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。
Tomcat 属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。一般来说,Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样,具有处理 HTML 页面的功能,然而由于其处理静态 HTML 的能力远不及 Apache 或者 Nginx,所以 Tomcat 通常是作为一个 Servlet 和 JSP 容器,单独运行在后端。

1.2Tomcat核心组件

1.Web 容器:完成 Web 服务器的功能。
web容器用于接受、响应用户请求,展示动态页面入口、出口

2.JSP 容器:用于将 JSP 动态网页翻译成 Servlet 代码。
JSP 全称 Java Server Pages,是一种动态网页开发技术。它使用 JSP 标签在HTML网页中插入 Java 代码。标签通常以 <% 开头,以 %> 结束。
JSP 是一种 Java servlet,主要用于实现 Java web 应用程序的用户界面部分。
JSP 通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

3.Servlet 容器:名字为 catalina,用于处理 Servlet 代码。
Servlet 是Java Servlet 的简称,可以理解为是一个服务连接器,是用 Java 编写的服务器端程序,具有独立于平台和协议的特性,
简单的理解:servlet 就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。

二、Tomcat功能组件结构

2.1Tomcat结构

Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。 其中连接器和容器相辅相成,一起构成了基本的 web 服务 Service。每个 Tomcat 服务器可以管理多个 Service。

Connector:负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。
Container:负责对内处理业务逻辑。其内部由 Engine、Host、Context和Wrapper 四个容器组成,用于管理和调用Servlet 相关逻辑。
Service:对外提供的 Web 服务。主要包含 Connector 和 Container两个核心组件,以及其他功能组件。Tomcat 可以管理多个 Service,且各 Service 之间相互独立

2.2Container结构分析

每个 Service 会包含一个 Container 容器。
在 Container 内部包含了 4 个子容器:

Engine:引擎,用来管理多个虚拟主机,一个 Service 最多只能有一个 Engine;
Host:代表一个虚拟主机,也可以叫站点,通过配置 Host 就可以添加站点;
Context:代表一个 Web 应用,包含多个 Servlet 封装器;
Wrapper:封装器,容器的最底层。每一 Wrapper 封装着一个 Servlet,负责对象实例的创建、执行和销毁功能。

Engine、Host、Context 和 Wrapper,这四个容器之间属于父子关系。
容器 由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个 Web 应用。每个 Web 应用会有多个 Servlet 封装器。

2.3Tomcat请求过程

1、用户在浏览器中输入网址,请求被发送到本机端口 8080,被在那里监听的 Connector 获得;
2、Connector 把该请求交给它所在的 Service 的 Engine(Container)来处理,并等待 Engine 的回应;
3、请求在 Engine、Host、Context 和 Wrapper 这四个容器之间层层调用,最后在 Servlet 中执行对应的业务逻辑、数据存储等。
4、执行完之后的请求响应在 Context、Host、Engine 容器之间层层返回,最后返回给 Connector,并通过 Connector 返回给客户端。

三、Tomcat服务部署

3.1安装JDK

因为Tomcat是JAVA语言写的,其运行环境基于JAVA,所以需要现装JDK
查询系统自带的JAVA版本
java -version

关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0安装jdk
cd /opt
rpm -qpl jdk-8u201-linux-x64.rpm
rpm -ivh jdk-8u201-linux-x64.rpm
java -version


3.2设置JDK环境变量

vim /etc/profile.d/java.sh
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:$PATHsource /etc/profile.d/java.sh
java -version


编写一个java进行验证

3.3安装启动Tomcat

cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat


启动tomcat

/usr/local/tomcat/bin/startup.sh
netstat -natp | grep 8080 (tomcat不是主进程,java才是)

3.4浏览访问Tomcat的默认主页

3.5优化tomcat启动速度

​第一次启动查看日志会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security----117行修改----
securerandom.source=file:/dev/urandom

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

3.6主要存放目录说明

ll /usr/local/tomcat/


主要目录说明:
bin:存放启动和关闭Tomcat的脚本文件,比较常用的是catcalina.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:存放项目资源的目录

work:Tomcat工作目录,一般清除Tomcat缓存的时候会使用到

3.7将Tomcat添加到服务

1. #先关闭服务
/usr/local/tomcat/bin/shutdown.sh2. #添加用户设置属主属组
useradd -s /sbin/nologin tomcat
chown -R tomcat:tomcat /usr/local/tomcat3. #新建服务文件
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.target4. #重新加载服务,并开启,查看是否成功启动
systemctl daemon-reload
systemctl start tomcat
ss -ntap |grep 8080

关闭服务,并新建用户更改属组


四、Tomcat虚拟主机配置

4.1创建xiny和xiaoy项目目录文件

mkdir /usr/local/tomcat/webapps/xiny
mkdir /usr/local/tomcat/webapps/xiaoy
echo "This is xiny \!" > /usr/local/tomcat/webapps/xiny/index.jsp
echo "This is xiaoy \!" > /usr/local/tomcat/webapps/xiaoy/index.jsp

4.2修改Tomcat主配置文件

vim /usr/local/tomcat/conf/server.xml----165行前插入----
<Host name="www.lic.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/lic" path="" reloadable="true" />
</Host><Host name="www.zhangbin.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false"   xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/zhangbin" path="" reloadable="true" />
</Host>


Host name:主机名

appBase:Tomcat程序工作目录,相对路径为webapps,绝对路径为/usr/local/tomcat/webapps

unpackWARs:是否解压war包

autoDeploy:指示Tomcat运行时,如果新的WEB应用是否允许自动部署

xmlValidation:是否验证xml文件执行有效检验的标志

xmlNamespaceAware:是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性实验

docBase:WEB应用的目录

path:设置访问的URI为WEB应用的根目录

reloadable:是否在程序有改动时重新载入

systemctl restart tomcat.service

4.3客户端浏览器访问验证

echo "192.168.223.10 www.xiny.com www.xiaoy.com" >> /etc/hosts


​浏览器访问 http://www.lic.com:8080 页面显示This is xiny !
浏览器访问 http://www.accp.com:8080 页面显示This is xiaoy !

五、Tomcat优化

Tomcat默认安装下的缺省配置并不适合生产环境,它可能会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面,分别为操作系统优化(内核参数优化),Tomcat配置文件参数优化,Java虚拟机(JVM)调优。

vim /usr/local/tomcat/conf/server.xml
......
<Connector port="8080" protocol="HTTP/11.1"
connectionTimeout="20000"
redirectPort="8443"​-----71行插入-----minSpareThreads="50"
enableLookups="false"
disableUploadTimeout="true"
acceptCount="300"
maxThreads="500"
processorCache="500"
URIEncoding="UTF-8"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png"/>

Tomcat服务部署及优化相关推荐

  1. Tomcat服务部署和优化

    文章目录 一.Tomcat介绍 1.1 什么是Tomcat 1.2 Tomcat的构成组件 1.2.1 Java Servlet 介绍 1.2.2 JSP介绍 1.3 Tomcat顶层架构 1.3.1 ...

  2. Tomcat服务部署

    一.Tomcat服务器简介 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. 一般 ...

  3. Tomcat简介部署和优化

    内容概要 一.Tomcat服务器简介 1.Java Servlet 2.JSP概念 二.Tomcat服务部署 1.关闭防火墙和安全功能 2.开始安装JDK 3.设置JDK环境变量 4.安装和启动Tom ...

  4. Linux常用服务部署与优化

    3,1nfs部署和优化-1 NFS == network file  system 假如有三台机器A, B, C,它们需要访问同一个目录,目录中都是图片,传统的做法是把这些图片分别放到A, B, C. ...

  5. tomcat服务部署与nginx负载均衡

    中间件产品介绍 ​ 目前来说IBM的WebSphere. Oracle的Weblogic占据了市场上Java语言Web站点的部分份额.该两种软件由于无与伦比的性能及可靠性等优势被广泛应用于大型互联网公 ...

  6. 记一次Tomcat服务部署,启动过滤器异常,问题查找过程

    前言 因工作需要,在搭建新的环境时,需要部署war服务,然后初次选择容器时决定使用tomcat8.5,结果遇到了问题,在同事提醒下使用tomcat9才得以解决,但是不能只解决问题,还需要查询产生原因, ...

  7. Javaweb-初识(Tomcat服务部署、创建Javaweb项目、Servlet Post请求案例)

    文章目录 Tomcat Tomcat服务器概述 安装 idea配置tomcat 创建Javaweb项目 idea创建项目 目录结构 Servlet post请求案例 问题解决 HTTP协议和HTTPS ...

  8. Linux常用服务部署与优化之NFS篇

    NFS(network file system)的简称,是linux系统之间常用的一种文件共享方式,下面简述其搭建过程,需要两个linux系统的虚拟机,假设客户端的ip为192.168.1.105,服 ...

  9. Tomcat服务安装与部署(安装与优化)

    文章目录 了解Tomcat服务 部署Tomcat服务 了解Tomcat服务 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个 ...

最新文章

  1. 2022-2028年中国污泥处理处置行业深度调研及投资前景预测报告
  2. firefox的plugin-container.exe进程如何关闭?
  3. github上星星1万多的python教程推荐收藏
  4. Acwing第 35 场周赛【完结】
  5. boost::system::is_error_code_enum相关的测试程序
  6. 《windows程序设计》第二章学习心得
  7. CodeForces - 1248E Queue in the Train(大模拟)
  8. altiumer designer学习
  9. 一个不知名的网站复制来的: java怎样连接到SQL server 2008
  10. android ble蓝牙接收不到数据_Android蓝牙4.0 Ble读写数据详解 -2
  11. HTML5中的自定义属性总结
  12. sydney airport hotel recommendations
  13. 嵌入式uml绘图工具_新的可嵌入制图工件
  14. acu风格是什么意思_acu 是什么意思,是一个品牌吗???
  15. 基于pytorch的双模态数据载入
  16. 渲染算法学习(四)-- Environment Lighting
  17. 【讲座回顾】不会被AI取代的人
  18. python批处理文件编写_求大神用python写个批处理程序?
  19. scp 拷贝文件夹到远程服务器被拒绝ssh: connect to host xxx.xxx.xxx.xxx port xxxxx: Connection refused
  20. 2022登高架设考题及在线模拟考试

热门文章

  1. js刷新页面location.reload()用法
  2. [摘录]优势谈判简述
  3. 第三大的数、字符串中的单词数、排列硬币
  4. 解决电脑不能被局域网内的其它电脑访问的方法
  5. 直播源代码,android 时间戳转换
  6. Windows Media Player进度条无法自动播放的解决方法
  7. TransactionTemplate编程式事务
  8. php生成word的三种方式,php生成word两种方法
  9. html+css 百度首页制作
  10. 从24小时看思科网真