Tomcat部署和优化

目录

一.Tomcat的概念

1.配置文件

2.Tomcat服务器的核心组件

3.4个子容器的作用

4.tomcat 处理请求过程

二.安装Tomcat

三.核心组件

主页文件的优先级

磁盘文件和访问的url对应关系

打包jar包实际操

搭建博客

四.Tomcat虚拟主机配置

五.Tomcat 配置文件参数优化


一.Tomcat的概念

Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能。

它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式

Tomcat处理静态HTML的能力不如Apache服务器。比较适合处理动态html

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 存放项目资源的目录
work Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到

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日志系统相关的配置,可以修改日志级别和日志路径等

2.Tomcat服务器的核心组件

web容器:完成 Web 服务器的功能(https请求)

servlet容器:名字为 catalina,用于处理 Servlet 代码

jsp容器:用于将 JSP 动态网页翻译成 Servlet 代码

Tomcat是极其轻量级别的,核心组件都是支持基本运行的组件 

名称 说明
server 服务器,Tomcat运行的进程实例,一个Server中可以有多个service,但通常就一个
service 服务,用来组织Engine和Connector的对应关系,一个service中只有一个Engine
connector 连接器,负责客户端的HTTP、HTTPS、AJP等协议连接。一个Connector只属于某一个Engine
Engine 即引擎,用来响应并处理用户请求。一个Engine上可以绑定多个Connector
Host 即虚拟主机,可以实现多虚拟主机,例如使用不同的主机头区分
Context

应用的上下文,配置特定url路径映射和目录的映射关系: url => directory

3.4个子容器的作用

Container用于封装和管理Servlet,以及具体处理Request请求,在Connector内部包含了4个子容器。

  • Engine:引擎,用来管理多个站点,一个service最多只能有一个Engine
  • Host:代表一个站点,也可以叫虚拟主机,通过配置Host就可以添加站点
  • Context:代表一个应用程序,对应着平时开发的一套程序,或着一个WEB-INE目录以及下面的web.xml文件
  • wrapper:每一wrapper封装着一个servlet

4.tomcat 处理请求过程

  1. Tomcat启动一个Server进程。可以启动多个Server,即tomcat的多实例,但一般只启动一个

  2. 创建一个Service提供服务。可以创建多个Service,但一般也只创建一个

  3. 每个Service中,是Engine和其连接器Connector的关联配置

  4. 可以为这个Service提供多个连接器Connector,这些Connector使用了不同的协议,绑定了不同的端口。其作用就是处理来自客户端的不同的连接请求或响应

  5. Service 内部还定义了Engine,引擎才是真正的处理请求的入口,其内部定义多个虚拟主机Host

  6. Engine对请求头做了分析,将请求发送给相应的虚拟主机

  7. 如果没有匹配,数据就发往Engine上的defaultHost缺省虚拟主机

  8. Engine上的缺省虚拟主机可以修改

  9. Host定义虚拟主机,虚拟主机有name名称,通过名称匹配

  10. Context定义应用程序单独的路径映射和配置

二.安装Tomcat

链接:https://pan.baidu.com/s/1RAAS_LkIOxHsRV5pBK_IXg 
提取码:u3c1

将安装包拖到/opt目录下

安装jdk

 [root@localhost jdk1.8.0_201-amd64]# vim /etc/profile

 在行末添加以下内容

[root@localhost ~]# cd /opt/
[root@localhost opt]# ls
apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm
[root@localhost opt]# rpm -ivh jdk-8u201-linux-x64.rpm 
[root@localhost opt]# cd /usr/java/jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]# ll
总用量 25980
drwxr-xr-x. 2 root root     4096 11月 15 14:26 bin
-rw-r--r--. 1 root root     3244 12月 16 2018 COPYRIGHT
drwxr-xr-x. 3 root root      132 11月 15 14:26 include
-rw-r--r--. 1 root root  5207434 12月 12 2018 javafx-src.zip
drwxr-xr-x. 5 root root      185 11月 15 14:26 jre
drwxr-xr-x. 5 root root      245 11月 15 14:26 lib
-rw-r--r--. 1 root root       40 12月 16 2018 LICENSE
drwxr-xr-x. 4 root root       47 11月 15 14:26 man
-rw-r--r--. 1 root root      159 12月 16 2018 README.html
-rw-r--r--. 1 root root      424 12月 16 2018 release
-rw-r--r--. 1 root root 21103945 12月 16 2018 src.zip
-rw-r--r--. 1 root root   108109 12月 12 2018 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rw-r--r--. 1 root root   155002 12月 16 2018 THIRDPARTYLICENSEREADME.txt
[root@localhost jdk1.8.0_201-amd64]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
[root@localhost jdk1.8.0_201-amd64]# vim /etc/profile
 77 export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
 78 export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
 79 export PATH=$JAVA_HOME/bin:$PATH
[root@localhost jdk1.8.0_201-amd64]# source /etc/profile

http://192.168.68.30:8080/ 需要加端口

[root@localhost jdk1.8.0_201-amd64]# cd /opt/
[root@localhost opt]# ls
apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm
[root@localhost opt]# tar zxf apache-tomcat-9.0.16.tar.gz 
[root@localhost opt]# cp -r apache-tomcat-9.0.16 /usr/local/tomcat
[root@localhost tomcat]# cd bin/
[root@localhost 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/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# ss -natp |grep 8080
LISTEN     0      100         :::8080                    :::*                   users:(("java",pid=6479,fd=54))

[root@localhost system]# vim tomcat.service 

 http://192.168.68.30:8080/

[root@localhost bin]# ./shutdown.sh
[root@localhost bin]# useradd -s /sbin/nologin tomcat
[root@localhost bin]# id tomcat
uid=1001(tomcat) gid=1001(tomcat) 组=1001(tomcat)
/usr/local/tomcat
[root@localhost tomcat]# cd ..
[root@localhost local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src  tomcat
[root@localhost local]# chown -R tomcat:tomcat tomcat/
[root@localhost system]# pwd
/etc/systemd/system
[root@localhost system]# vim 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 system]# systemctl daemon-reload 
[root@localhost system]# systemctl start tomcat
[root@localhost system]# ss -natp |grep 8080
TIME-WAIT  0      0          ::1:55848                  ::1:8080   

三.核心组件

主页文件的优先级

  • index.html

  • index.htm

  • index.jsp

http://192.168.68.30:8080/docs/

http://192.168.68.30:8080/host-manager/

 http://192.168.68.30:8080/manager/

 http://192.168.68.30:8080/examples/

 http://192.168.68.30:8080/index.jsp

磁盘文件和访问的url对应关系

[root@localhost oyyy]# vim index.html 

http://192.168.68.30:8080/oyyy/

[root@localhost oyyy]# vim index.htm 

 [root@localhost oyyy]# vim index.jsp

 

 

[root@localhost WEB-INF]# vim  web.xml  

 [root@localhost oyyy]# vim /usr/local/tomcat/conf/web.xml 

打包jar包实际操

 [root@localhost ooo]# vim ooo.html

 [root@localhost ooo]# vim ooo.jsp

 

[root@localhost oyyy]# mkdir /data
[root@localhost oyyy]# cd /data/
[root@localhost data]# mkdir ooo
[root@localhost data]# cd ooo/
[root@localhost ooo]# vim ooo.html
<h1>this is ooo</h1>
[root@localhost ooo]# ls
ooo.html
[root@localhost ooo]# pwd
/data/ooo
[root@localhost ooo]# vim ooo.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 ooo]# jar cvf /opt/ooo.war *
[root@localhost ooo]# cd /opt/
[root@localhost opt]# ls
apache-tomcat-9.0.16  apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm  ooo.war
[root@localhost opt]# ls /usr/local/tomcat/webapps/
docs  examples  host-manager  manager  oyyy  ROOT
[root@localhost opt]# cp ooo.war /usr/local/tomcat/webapps/
[root@localhost opt]# ls /usr/local/tomcat/webapps/
docs  examples  host-manager  manager  ooo.war  oyyy  ROOT

搭建博客

 http://192.168.68.30:8080/jpress/install

[root@localhost webapps]# rz -E
rz waiting to receive.
[root@localhost webapps]# ls
apache-jmeter-5.1.zip  examples      jpress-v4.1.4      manager  ooo.war  ROOT
docs                   host-manager  jpress-v4.1.4.war  ooo      oyyy
[root@localhost webapps]# ln -s /usr/local/tomcat/webapps/jpress-v4.1.4 jpress
[root@localhost webapps]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
[root@localhost webapps]# yum -y install mysql57-community-release-el7-10.noarch.rpm
[root@localhost webapps]# yum -y install mysql-community-server
[root@localhost webapps]# systemctl start  mysqld.service

四.Tomcat虚拟主机配置

[root@localhost webapps]# mkdir ooo ouuu
[root@localhost webapps]# echo "hello ooo" >ooo/index.html
[root@localhost webapps]# echo "hello ouuu" >ouuu/index.html
[root@localhost webapps]# cat ooo/index.html ouuu/index.html hello ooo
hello ouuu

 Apache Tomcat 8 (8.5.72) - Documentation Index

[root@localhost webapps]# vim /usr/local/tomcat/conf/server.xml  

 [root@localhost webapps]# systemctl restart tomcat.service 

[root@localhost webapps]# vim /usr/local/tomcat/conf/server.xml 
165         <Host name="www.ooo.com" appBase="/usr/local/tomcat/webapps"
166             unpackWARs="true" autoDeploy="true" xmlValidation="false"
167             xmlNamespaceAware="false">
168                 <Context docBase="/usr/local/tomcat/webapps/ooo"
169                 path="" reloadable="true" />
170       </Host>
171 
172       <Host name="www.ouuu.com" appBase="/usr/local/tomcat/webapps"
173             unpackWARs="true" autoDeploy="true" xmlValidation="false"
174             xmlNamespaceAware="false">
175                 <Context docBase="/usr/local/tomcat/webapps/ouuu"
176                 path="" reloadable="true" />
177       </Host>
[root@localhost webapps]# systemctl restart tomcat.service 

客户机

 [root@www ~]# vim /etc/hosts

客户机中

http://www.ooo.com:8080/ooo/

 http://www.ooo.com:8080/ouuu/

五.Tomcat 配置文件参数优化

参数 说明
maxThreads Tomcat 使用线程来处理接收的每个请求,这个值表示 Tomcat 可创建的最大的线程数,默认值是 200
minSpareThreads 最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是 10
maxSpareThreads 最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值是-1(无限制)。一般不需要指定
URIEncoding 指定 Tomcat 容器的 URL 编码格式,语言编码格式这块倒不如其它 Web服务器软件配置方便,需要分别指定
connnectionTimeout 网络连接超时,单位:毫秒,设置为 0 表示永不超时,这样设置有隐患的。通常默认 20000 毫秒就可以
enableLookups 是否反查域名,以返回远程主机的主机名,取值为:true 或 false,如果设置为 false,则直接返回 IP 地址,为了提高处理能力,应设置为 false
disableUploadTimeout 上传时是否使用超时机制。应设置为 true
connectionUploadTimeout 上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个根据你自己的业务需要自己调,以使Servlet有较长的时间来完成它的执行,需要与上一个参数一起配合使用才会生效
acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为 100 个
compression 是否对响应的数据进行GZIP压缩,off:表示禁止压缩;on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为 off,压缩数据后可以有效的减少页面的大小,一般可以减小 1/3 左右,节省带宽
compressionMinSize 表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是 2048
compressableMimeType 压缩类型,指定对哪些类型的文件进行数据压缩

noCompressionUserAgents

=“gozilla, traviata”

对于以下的浏览器,不启用压缩

[root@localhost bin]# vim /usr/local/tomcat/conf/server.xml 
 69     <Connector port="8080" protocol="HTTP/1.1"
 70                connectionTimeout="20000"
 71                redirectPort="8443" />
 72                 minSpareThreads="50"
 73                 enableLookups="false"
 74                 disableUploadTimeout="true"
 75                 acceptCount="300"
 76                 maxThreads="500"
 77                 processorCache="500"
 78                 URIEncoding="UTF-8"
 79                 compression="on"
 80                 compressionMinSize="2048"
 81                 compressableMimeType="text/html,text/xml,text/javascript,text/css,text/pla    in,image/gif,image /jpg,image/png"/>
[root@localhost bin]# ./shutdown.sh
[root@localhost bin]# ./startup.sh 

猜你喜欢

转载自blog.csdn.net/oyyy3/article/details/121332198
今日推荐