理论+实操:tomcat部署及优化————理论讲解

前言:

  • tomcat安装部署
  • 虚拟主机配置
  • tomcat优化

下载网站:

http://tomcat.apache.org/

一:Tomcat介绍

  • 免费的、开放源代码的Web应用服务器
  • Apache软件基金会(Apache Software Foundation)Jakarta项目中的一个核心项目
  • 由Apache、Sun和一些公司及个人共同开发而成
  • 伸手Java爱好者的喜爱,并得到部分软件开发商的认可
  • 目前比较流行的Web应用服务器

二:Tomcat核心组件

理论+实操:tomcat部署及优化————理论讲解_第1张图片

servlet代码是由java写的一个后端

jsp是一个前端页面,最终也会被翻译成servlet代码区执行

tomcat的可以看作一个容器,是由三大组件组成

WEB容器:TCP/IP协议,http

Serlet容器:后端,处理java,html

JSP容器:前端,处理动态网页

三:Tomcat处理请求过程

理论+实操:tomcat部署及优化————理论讲解_第2张图片

connector 连接对象,开放端口

8080端口基于http协议,coyote 接收

container 容器

engine 引擎

host 虚拟主机

context 内容,加载程序

运行servlet,

然后依次返回

四:Tomcat部署步骤

1.下载并安装jdk

2.安装并启动Tomcat

3.配置虚拟主机

理论+实操:tomcat部署及优化————理论讲解_第3张图片

jdk是编译器,把源码文件转换成可执行文件

jdk目前在用的是1.8,现在如果学习的话,就用jdk1.11

以java为例,

abc.java通过编译器可以变成abc.class

环境变量:PATH

用户环境变量:只针对用户有效,换了一个用户就不生效

系统环境变量:只针对主机生效,换了一个用户依旧生效 bin目录

javac 命令是 编译的意思

把java————》class

java是执行命令 执行class

eclipse-inst-win64是编写软件开发环境

jdk是一个编译器引擎

先装jdk

在这里插入图片描述

以管理员身份运行,点两个下一步,安在C盘最好,以免出现故障

理论+实操:tomcat部署及优化————理论讲解_第4张图片
理论+实操:tomcat部署及优化————理论讲解_第5张图片

java se 是基础阶段

理论+实操:tomcat部署及优化————理论讲解_第6张图片

理论+实操:tomcat部署及优化————理论讲解_第7张图片

jre实际上是jvm虚拟机

jdk里面运行的是lib函数库,比如排列工具
理论+实操:tomcat部署及优化————理论讲解_第8张图片

bin下面是命令

理论+实操:tomcat部署及优化————理论讲解_第9张图片

把目录复制下来,C:\Program Files\Java\jdk1.8.0_181\bin

理论+实操:tomcat部署及优化————理论讲解_第10张图片

在这里插入图片描述

理论+实操:tomcat部署及优化————理论讲解_第11张图片

修改

理论+实操:tomcat部署及优化————理论讲解_第12张图片

粘贴到开头,用分号隔开

然后确定

打开cmd验证

理论+实操:tomcat部署及优化————理论讲解_第13张图片

此时jdk可以算是安装好,接下来安装环境

java开发环境idea或者eclipse

以管理员身份运行

在这里插入图片描述

理论+实操:tomcat部署及优化————理论讲解_第14张图片

理论+实操:tomcat部署及优化————理论讲解_第15张图片

理论+实操:tomcat部署及优化————理论讲解_第16张图片

在线安装

点击同意

下一步

理论+实操:tomcat部署及优化————理论讲解_第17张图片

下一步

在线安装会出现网速过慢的情况

出现之后,勾选,同意

然后再打开

理论+实操:tomcat部署及优化————理论讲解_第18张图片

这个指的是项目的存储路径

理论+实操:tomcat部署及优化————理论讲解_第19张图片

然后点击Launch

理论+实操:tomcat部署及优化————理论讲解_第20张图片

若是遇到更新组件,直接更新即可

理论+实操:tomcat部署及优化————理论讲解_第21张图片

开发界面

理论+实操:tomcat部署及优化————理论讲解_第22张图片

理论+实操:tomcat部署及优化————理论讲解_第23张图片

点击下一步

理论+实操:tomcat部署及优化————理论讲解_第24张图片

jar log4j

理论+实操:tomcat部署及优化————理论讲解_第25张图片

理论+实操:tomcat部署及优化————理论讲解_第26张图片

然后右键src,new,class

理论+实操:tomcat部署及优化————理论讲解_第27张图片

理论+实操:tomcat部署及优化————理论讲解_第28张图片

windows下的preferences

理论+实操:tomcat部署及优化————理论讲解_第29张图片
理论+实操:tomcat部署及优化————理论讲解_第30张图片

左键双击

理论+实操:tomcat部署及优化————理论讲解_第31张图片

字体选择consolas

然后应用关闭

理论+实操:tomcat部署及优化————理论讲解_第32张图片

访问权限,内文件,文件名

void 代表没有返回值,返回的话写return

main是主进程名称,程序的入口,程序的入口只能有一个,出口可以有多个

小括号里是数组,数组名称string

理论+实操:tomcat部署及优化————理论讲解_第33张图片

理论+实操:tomcat部署及优化————理论讲解_第34张图片

idea:

理论+实操:tomcat部署及优化————理论讲解_第35张图片

理论+实操:tomcat部署及优化————理论讲解_第36张图片
理论+实操:tomcat部署及优化————理论讲解_第37张图片

理论+实操:tomcat部署及优化————理论讲解_第38张图片

Java 学习目标

开发环境部署 IDE jdk1.8特性了解 jvm原理(垃圾回收机制)

变量 变量类型字节长度 整形:int Long 浮点:float(单精度) double(双精度) 布尔:boolean (true,false)

​ 字符:char (Kava的英文字符,占两个字节) 字符串:String 枚举类型

条件判断 if if-else if-else-if switch

循环语句 单循环 双循环 嵌套

数组 二维数组

二维数组的第一个中括号代表一维数组个数

第二个中括号代表一维数组中的元素个数

函数 静态函数(可以直接在main中使用) (动态函数需要创建对象才能使用) 带参传入 返回值

——————面向对象特性————

封装、继承、多态(重点)

继承,继承上一级的特性,多态是自身的特性

————————————————————

接口 API 面向接口编程

异常处理

集合框架 List Map

IO 文件流 字符流(适合处理文本数据) 字节流(适合处理图片、视频,文本也可以等) (实现数据持久化的雏形),把内存的文件存储到硬盘中

多线程 thread 锁机制(重点学习了解原理)

网络编程(选学) 网络聊天平台

————————————————————JavaEE——————————————————————————

————初级————

HTML CSS JavaScript(重点) jQuery 前端

servlet(重点,后端:服务端) JSP(用的不多)

jdbc 连接数据库

Mysql 数据库 (DML,DDL,DCL,DQL 事务、视图、索引、存储过程、数据库编程)

备份恢复(冷热、物理逻辑备份、完全差异增量备份、、直接恢复、断点恢复)

————中级————SSM框架

mybaits 框架 spring 框架 (IOC 控制反转、AOP面向切面编程) spring MVC (模式、视图、控制)

高级

spring boot spring cloud docker 分布式 微服务

五:下载JDK

  • jdk是java语言的软件开发工具包
  • jdk是Tomcat运行的必要环境
  • 根据计算机硬件配置,选择安装包
  • 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.tml

理论+实操:tomcat部署及优化————理论讲解_第39张图片

六 :设置环境变量

6.1 编辑/etc/profile文件

[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

6.2 使环境变量生效的命令

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

6.3 查看jdk版本的命令

[root@localhost jdk1.8.0_201-amd64]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

七:安装、启动Tomcat

7.1 下载安装包

[root@localhost ~]# wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz

7.2 将安装包移动到/usr/local下重命名

[root@localhost opt]# mv apache-tomcat-9.0.16/ /usr/local/tomcat9

7.3 启动Tomcat

[root@localhost bin]# ls
bootstrap.jar       ciphers.sh                    daemon.sh     setclasspath.bat  startup.sh            version.bat
catalina.bat        commons-daemon.jar            digest.bat    setclasspath.sh   tomcat-juli.jar       version.sh
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]# /usr/local/tomcat/bin/startup.sh

7.4 演示:

7.4.1 安装环境包jdk,优化环境变量

[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.254.10/linuxs /abc
Password for root@//192.168.254.10/linuxs:  
[root@localhost ~]# cd /abc
[root@localhost abc]# ls
apache-tomcat-9.0.16.tar.gz       tomcat优化压测.jmx                   
epel-release-latest-7.noarch.rpm  	jdk-8u201-linux-x64.rpm           

理论+实操:tomcat部署及优化————理论讲解_第40张图片

理论+实操:tomcat部署及优化————理论讲解_第41张图片

理论+实操:tomcat部署及优化————理论讲解_第42张图片

理论+实操:tomcat部署及优化————理论讲解_第43张图片

[root@localhost abc]# rpm -ivh jdk-8u201-linux-x64.rpm 
warning: jdk-8u201-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8-2000:1.8.0_201-fcs        ################################# [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...

[root@localhost abc]# cd /usr/
[root@localhost usr]# ls
bin  etc  games  include  java  lib  lib64  libexec  local  sbin  share  src  tmp
[root@localhost usr]# cd java/
[root@localhost java]# ls
default  jdk1.8.0_201-amd64  latest
[root@localhost java]# cd jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]# ls
bin             lib          src.zip
COPYRIGHT       LICENSE      THIRDPARTYLICENSEREADME-JAVAFX.txt
include         man          THIRDPARTYLICENSEREADME.txt
javafx-src.zip  README.html
jre             release
//jre用来存放虚拟机jvm,函数库lib,命令bin

理论+实操:tomcat部署及优化————理论讲解_第44张图片

用户环境变量、系统环境变量

[root@localhost jdk1.8.0_201-amd64]# ls bin/
appletviewer  javafxpackager  jdb      jrunscript    pack200      unpack200
ControlPanel  javah           jdeps    jsadebugd     policytool   wsgen
extcheck      javap           jhat     jstack        rmic         wsimport
idlj          javapackager    jinfo    jstat         rmid         xjc
jar           java-rmi.cgi    jjs      jstatd        rmiregistry
jarsigner     javaws          jmap     jvisualvm     schemagen
java          jcmd            jmc      keytool       serialver
javac         jconsole        jmc.ini  native2ascii  servertool
javadoc       jcontrol        jps      orbd          tnameserv

export 声明全局变量

[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
[root@localhost jdk1.8.0_201-amd64]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

java环境其实已经默认装好了:实例,openjdk是一个简化版本

[root@localhost ~]# 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)

默认的是openjava,但是有些组件不支持

理论+实操:tomcat部署及优化————理论讲解_第45张图片

7.4.2 安装tomcat

[root@localhost jdk1.8.0_201-amd64]# tar zxvf /abc/apache-tomcat-9.0.16.tar.gz -C /opt
[root@localhost jdk1.8.0_201-amd64]# cd /opt
[root@localhost opt]# ls
apache-tomcat-9.0.16  httpd-2.4.29  nginx-1.12.2  rh
[root@localhost opt]# mv apache-tomcat-9.0.16/ /usr/local/tomcat9
[root@localhost opt]# cd /usr/local
[root@localhost local]# ls
apache2  etc    include  lib64    nginx  share  tomcat9
bin      games  lib      libexec  sbin   src
[root@localhost local]# cd tomcat9/
[root@localhost tomcat9]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work

webapps 站点

[root@localhost bin]# ls
bootstrap.jar       ciphers.sh                    daemon.sh     setclasspath.bat  startup.sh            version.bat
catalina.bat        commons-daemon.jar            digest.bat    setclasspath.sh   tomcat-juli.jar       version.sh
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]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# systemctl stop firewalld.service
[root@localhost bin]# setenforce 0
[root@localhost bin]# netstat -natp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      28345/java          
[root@localhost bin]# netstat -natp | grep 80
tcp6       0      0 :::8080                 :::*                    LISTEN      28345/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      28345/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      28345/java          
[root@localhost bin]# netstat -natp | grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      28345/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      28345/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      28345/java   

理论+实操:tomcat部署及优化————理论讲解_第46张图片

优化tomcat

[root@localhost conf]# ln -s /usr/local/tomcat9/bin/startup.sh /usr/bin/
[root@localhost conf]# ln -s /usr/local/tomcat9/bin/shutdown.sh /usr/bin/

主配置文件为server.xml

[root@localhost bin]# cd /usr/local/tomcat9/
[root@localhost tomcat9]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@localhost tomcat9]# cd conf/
[root@localhost conf]# ls
Catalina         catalina.properties  jaspic-providers.xml  logging.properties  tomcat-users.xml  web.xml
catalina.policy  context.xml          jaspic-providers.xsd  server.xml          tomcat-users.xsd
[root@localhost conf]# pwd
/usr/local/tomcat9/conf
[root@localhost conf]# cd ..
[root@localhost tomcat9]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@localhost tomcat9]# cd lib/
[root@localhost lib]# ls
annotations-api.jar       el-api.jar       tomcat-coyote.jar   tomcat-i18n-ko.jar     tomcat-util-scan.jar
catalina-ant.jar          jasper-el.jar    tomcat-dbcp.jar     tomcat-i18n-pt-BR.jar  tomcat-websocket.jar
catalina-ha.jar           jasper.jar       tomcat-i18n-cs.jar  tomcat-i18n-ru.jar     websocket-api.jar
catalina.jar              jaspic-api.jar   tomcat-i18n-de.jar  tomcat-i18n-zh-CN.jar
catalina-storeconfig.jar  jsp-api.jar      tomcat-i18n-es.jar  tomcat-jdbc.jar
catalina-tribes.jar       servlet-api.jar  tomcat-i18n-fr.jar  tomcat-jni.jar
ecj-4.9.jar               tomcat-api.jar   tomcat-i18n-ja.jar  tomcat-util.jar
[root@localhost lib]# cd /usr/java/
[root@localhost java]# ls
default  jdk1.8.0_201-amd64  latest
[root@localhost java]# cd jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]# ls
bin        include         jre  LICENSE  README.html  src.zip                             THIRDPARTYLICENSEREADME.txt
COPYRIGHT  javafx-src.zip  lib  man      release      THIRDPARTYLICENSEREADME-JAVAFX.txt
[root@localhost jdk1.8.0_201-amd64]# cd jre/
[root@localhost jre]# ls
bin        lib      plugin  THIRDPARTYLICENSEREADME-JAVAFX.txt  Welcome.html
COPYRIGHT  LICENSE  README  THIRDPARTYLICENSEREADME.txt
[root@localhost jre]# cd lib/
[root@localhost lib]# ls
amd64                     fontconfig.bfc                      hijrah-config-umalqura.properties  management
applet                    fontconfig.properties.src           images                             management-agent.jar
calendars.properties      fontconfig.RedHat.5.bfc             javafx.properties                  meta-index
charsets.jar              fontconfig.RedHat.5.properties.src  javaws.jar                         net.properties
classlist                 fontconfig.RedHat.6.bfc             jce.jar                            oblique-fonts
cmm                       fontconfig.RedHat.6.properties.src  jexec                              plugin.jar
content-types.properties  fontconfig.SuSE.10.bfc              jfr                                psfontj2d.properties
currency.data             fontconfig.SuSE.10.properties.src   jfr.jar                            psfont.properties.ja
deploy                    fontconfig.SuSE.11.bfc              jfxswt.jar                         resources.jar
deploy.jar                fontconfig.SuSE.11.properties.src   jsse.jar                           rt.jar
desktop                   fontconfig.Turbo.bfc                jvm.hprof.txt                      security
ext                       fontconfig.Turbo.properties.src     locale                             sound.properties
flavormap.properties      fonts                               logging.properties                 tzdb.dat
[root@localhost lib]# cd security/
[root@localhost security]# ls
blacklist  blacklisted.certs  cacerts  java.policy  java.security  javaws.policy  policy  trusted.libraries
[root@localhost security]# vim java.security 
' 117 securerandom.source=file:/dev/urandom
//优化启动时间 
[root@localhost security]# shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
[root@localhost security]# startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Tomcat started.

八:Tomcat启动时间

  • 缩短启动时间的命令

  • 修改文件/usr/java/jdk1.8.0_171-amd64/jre/lib/security/java.security

  • [root@localhost security]# vim /usr/java/jdk1.8.0_171-amd64/jre/lib/security/java.security
    ' 117 securerandom.source=file:/dev/urandom
    //优化启动时间 
    

九:Tomcat目录结构

lib java的函数库,第三方组件包

jar,组件包

首页站点都在webapps

后面的class文件都可以直接拖进去

十:虚拟主机配置

  • 有多个项目同时运行时,一台服务器不建议运行多个Tomcat服务,需要配置虚拟主机
  • 通过两个域名访问到不同的项目内容

10.1步骤

10.1.1创建kgc和accp项目目录和文件

10.1.2修改Tomcat主配置文件

  • /usr/local/tomcat/conf/server.xml的部分

理论+实操:tomcat部署及优化————理论讲解_第47张图片

10.1.3重启Tomcat服务

在这里插入图片描述

如果使用脚本,/,就需要使用sleep休眠一下

10.1.4测试

理论+实操:tomcat部署及优化————理论讲解_第48张图片

理论+实操:tomcat部署及优化————理论讲解_第49张图片

理论+实操:tomcat部署及优化————理论讲解_第50张图片

域名 工作目录(不是站点) 是否更新服务器中的WAR包 是否自动部署,即时生效 是否支持xml文件验证 是否对xml的空间启用

context docbase 站点 path设定为空,代表加载默认列表 重载功能开启

理论+实操:tomcat部署及优化————理论讲解_第51张图片

10.2 实操演示

10.2.1 安装dns服务

[root@localhost ~]# yum install bind -y
[root@localhost ~]# vim /etc/named.conf 
 13         listen-on port 53 { any; };
 14         listen-on-v6 port 53 { ::1; };
 15         directory       "/var/named";
 16         dump-file       "/var/named/data/cache_dump.db";
 17         statistics-file "/var/named/data/named_stats.txt";
 18         memstatistics-file "/var/named/data/named_mem_stats.txt";
 19         recursing-file  "/var/named/data/named.recursing";
 20         secroots-file   "/var/named/data/named.secroots";
 21         allow-query     { any; };
[root@localhost ~]# vim /etc/named.rfc1912.zones 
        zone "kgc.com" IN {
                type master;
                file "kgc.com.zone";
                allow-update { none; };
        };

        zone "accp.com" IN {
                type master;
                file "accp.com.zone";
                allow-update { none; };
        };   
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
  dynamic         named.ca     named.localhost  slaves
data               named.empty  named.loopback
[root@localhost named]# cp -p named.localhost kgc.com.zone 
[root@localhost named]# vim kgc.com.zone 
[root@localhost named]# cat kgc.com.zone 
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www     IN      A       192.168.247.202
[root@localhost named]# cp -p kgc.com.zone accp.com.zone 
[root@localhost named]# 
[root@localhost named]# systemctl start named
[root@localhost named]# systemctl stop firewall
Failed to stop firewall.service: Unit firewall.service not loaded.
[root@localhost named]# setenforce 0        

10.2.2 开启客户机测试bind服务

理论+实操:tomcat部署及优化————理论讲解_第52张图片

理论+实操:tomcat部署及优化————理论讲解_第53张图片

10.2.3 先创建站点,创建两个站点,默认站点在ROOT中

[root@localhost ~]# cd /usr/local/
[root@localhost local]# ls
apache2  bin  etc  games  include  lib  lib64  libexec  nginx  sbin  share  src  tomcat9
[root@localhost local]# cd tomcat9/
[root@localhost tomcat9]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@localhost tomcat9]# cd webapps/
[root@localhost webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@localhost webapps]# 

创建两个站点,默认站点在ROOT中

[root@localhost webapps]# cd ROOT/
[root@localhost ROOT]# ls
asf-logo-wide.svg  bg-middle.png  bg-upper.png  index.jsp          tomcat.css  tomcat.png        tomcat.svg
bg-button.png      bg-nav.png     favicon.ico   RELEASE-NOTES.txt  tomcat.gif  tomcat-power.gif  WEB-INF
[root@localhost ROOT]# cd ..
[root@localhost webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@localhost webapps]# mkdir kgc accp
[root@localhost webapps]# ls
accp  docs  examples  host-manager  kgc  manager  ROOT
[root@localhost webapps]# cd accp/
[root@localhost accp]# vim index.jsp

this is accptest

[root@localhost accp]# cd ../kgc/ [root@localhost kgc]# vim index.jsp

this is kgc

可以使用tree去查看这两个目录验证里面是否创建成功文件,没有这个命令的话就yum安装tree

[root@localhost webapps]# tree kgc/ accp/
kgc/
└── index.jsp
accp/
└── index.jsp

0 directories, 2 files

10.2.4 修改配置文件创建虚拟主机

[root@localhost kgc]# cd ../../conf
[root@localhost conf]# ls
Catalina         catalina.properties  jaspic-providers.xml  logging.properties  tomcat-users.xml  web.xml
catalina.policy  context.xml          jaspic-providers.xsd  server.xml          tomcat-users.xsd
[root@localhost conf]# vim server.xml 
      

        
        

        
        

      

上面是默认存在的网站

166-172为增加内容

162                pattern="%h %l %u %t "%r" %s %b" />
163 
164       
165 
166       
167         
168         
169 
170       
171         
172         
173 
174     
175   
176 

这是默认的网站

[root@localhost bin]# ./shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
[root@localhost bin]# startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Tomcat started.

10.2.5 验证

理论+实操:tomcat部署及优化————理论讲解_第54张图片

理论+实操:tomcat部署及优化————理论讲解_第55张图片

十一:TOMcat优化

  • 操作系统优化(内核参数优化)
  • Tomcat配置文件参数优化
  • Java虚拟机(JVM)调优

11.1 Tomcat配置文件参数优化

  • 如果对代码进行了动静分离处理,静态页面和图片等数据就不需要做Tomcat处理,也就是不需要在tom中配置压缩

理论+实操:tomcat部署及优化————理论讲解_第56张图片

最大线程

最小空闲线程

最大空闲线程

字符集

连接超时

域名

关闭上传超时
理论+实操:tomcat部署及优化————理论讲解_第57张图片

理论+实操:tomcat部署及优化————理论讲解_第58张图片

理论+实操:tomcat部署及优化————理论讲解_第59张图片

理论+实操:tomcat部署及优化————理论讲解_第60张图片

如果https时,那么端口就会定义到8443

processorcache 缓存对象

[root@localhost ~]# vim /usr/local/tomcat9/conf/server.xml 
 69     
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# 

对原有配置属性的进行压测

在客户端先安装jdk,配置环境变量,然后打开压测包

理论+实操:tomcat部署及优化————理论讲解_第61张图片

双击打开

理论+实操:tomcat部署及优化————理论讲解_第62张图片
找到指定文件,打开

在里面打开压测脚本,完成之后会生成压测报告,把压测报告保存表格数据(在聚合报告的下面保存),然后查看

理论+实操:tomcat部署及优化————理论讲解_第63张图片

理论+实操:tomcat部署及优化————理论讲解_第64张图片

多试几次

理论+实操:tomcat部署及优化————理论讲解_第65张图片

整理

在这里插入图片描述

接下来进行优化

[root@localhost ~]# vim /usr/local/tomcat9/conf/server.xml 
    

重启服务

[root@localhost ~]# shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
[root@localhost ~]# startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# netstat -natp | grep 80
tcp6       0      0 :::8080                 :::*                    LISTEN      109429/java         
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      109429/java         
tcp6       0      0 :::8009                 :::*                    LISTEN      109429/java         
tcp6       0      0 ::1:43008               ::1:8080                TIME_WAIT   -                   
tcp6       0      0 127.0.0.1:35988         127.0.0.1:8005          TIME_WAIT   -                   
tcp6       0      0 ::1:59856               ::1:8009                TIME_WAIT   -                  

再次测试

在这里插入图片描述
平均值降低了

十二:Tomcat官方文档

  • 阅读官方文档,可以深入学习tomcat配置参数相关知识
    • http://tomcat.apache.org/tomcat-9.0-doc/config/http.html

理论+实操:tomcat部署及优化————理论讲解_第66张图片

十三:jmeter压测工具

13.1 步骤

1.从oracle官方下载jdk安装包,在客户端安装jdk

2.运行jmeter软件

理论+实操:tomcat部署及优化————理论讲解_第67张图片

3.选择压测脚本

理论+实操:tomcat部署及优化————理论讲解_第68张图片

4.开始进行压测

5.查看优化前压测结果

理论+实操:tomcat部署及优化————理论讲解_第69张图片

十四:Tomcat优化参数

  • server.xml配置参数
  • 原始:

在这里插入图片描述

  • 修改后的:

理论+实操:tomcat部署及优化————理论讲解_第70张图片

超时时间的单位是毫秒

compression是压缩

压缩最小阈值,

  • 聚合报告

理论+实操:tomcat部署及优化————理论讲解_第71张图片

十五:Tomcat优化步骤

  • server.xml 配置参数
  • 重启Tomcat服务器
  • 查看优化后的聚合报告
  • 从测试结果看,优化后的平均值和90%响应时间比优化前要快

十六:Java 虚拟机(JVM)调优

  • Tomcat启动命令行中的优化参数
  • 正确选择不同的GC策略,调整JVM、GC的参数,可以极大的减少因GC工作而导致的程序运行中断的问题

GC就是垃圾回收机制

16.1 JVM参数

  • ${JAVA_HOME}/bin目录下catalina.sh文件
  • Java_OPTS设置JVM相关运行参数的变量

理论+实操:tomcat部署及优化————理论讲解_第72张图片

这个是对内存的堆和栈的优化

java的变量分为值类型和引用类型

16.2 Java垃圾回收机制

  • 堆大小决定了虚拟机花费在收集垃圾上的时间和频度

理论+实操:tomcat部署及优化————理论讲解_第73张图片

堆区相当于仓库,栈相当于展架,废弃物交给GC

堆和栈都在内存中

本地方法库是管理方法

  • 堆大小决定了虚拟机花费在收集垃圾上的时间和频度

  • 调整堆大小的目的是最小化垃圾收集的时间,在特定的时间内最大化处理客户的请求

  • 在基准测试的时候,为确保最好的性能,要把堆的大小设大,确保垃圾收集不在整个基准测试的过程中出现

  • 常见的优化GC参数 ————/usr/local/tomcat/bin/catalina.sh

理论+实操:tomcat部署及优化————理论讲解_第74张图片

十七:JVM常见错误

17.1 常见错误之JVM Heap (堆)溢出

  • java.lang.OutOfMemoryError: Java heap space
  • JVM启动时,自动设置JVM Heap的值
    • 初始空间(-Xms)是物理内存的1/64
    • 最大空间(-Xmx)不可超过物理内存
  • 如果98%时间用于GC,且可用的Heap size不足2%,JVM将抛出此异常————java不会像linux中有临时交换空间用以临时存放
  • 解决方法
    • 手动设置JVM Heap (堆)的大小

17.2PermGen space 溢出

  • java.lang.OutOfMemoryError:PermGen space————Permanent Generation space,内存的永久保存区域
  • 内存主要存放Class和Meta信息
    • Class在被Load时被放入PerGen space区域,而sun的GC不会再主程序运行期对PerGen space进行清理
  • 如果APP载入很多CLASS,就可能出现PermGen space 溢出
  • 解决方法
    • 手动设置 MaxPermSize大小

17.3栈溢出

  • jiva.lang.StackOverflowError
  • JVM是采用栈式的虚拟机,函数调用过程是堆栈的操作
    • 通常栈的大小是1-2MB的
  • 函数的“层”若是太多,会造成栈区溢出
  • 解决办法
    • 修改程序,减少函数的“层数“

你可能感兴趣的:(tomcat)