目录
核心三大组件:Web容器、jsp容器、servlet容器
职能:Web:接收、响应请求;展示动态页面

1、初始换环境
- [root@zwb ~]# systemctl stop firewalld
- [root@zwb ~]# systemctl disable firewalld
- [root@zwb ~]# setenforce 0
- setenforce: SELinux is disabled
2、上传apache-tomcat-9.0.16.tar.gz(tomcat 安装编译安装包)和 jdk-8u201-linux-x64.rpm(JDK安装包)至opt 下
- [root@zwb ~]# cd /opt/
- [root@zwb opt]# rz -E
- [root@zwb opt]# ls
- a apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm
3、安装JDK(java开发工具,使用tomcat需要安装此工具)
- # 升级JAVA环境
-
- [root@zwb opt]# rpm -ivh jdk-8u201-linux-x64.rpm
-
- 警告:jdk-8u201-linux-x64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ec551f03: NOKEY
- 准备中... ################################# [100%]
- 正在升级/安装...
- 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...
设置java环境变量
- [root@zwb opt]# 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:$PATH
-
-
- ##查看当前java信息
-
- [root@zwb opt]# java -version
- openjdk version "1.8.0_181"
- OpenJDK Runtime Environment (build 1.8.0_181-b13)
- OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
-
-
- 重新加载、查看版本
- [root@zwb opt]# source /etc/profile.d/java.sh
-
-
- 再查看JAVA 环境
- [root@zwb opt]# 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)
-
- ### 更新完成
4、启动
- ##优化(环境变量优化)
-
- ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
- ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
-
-
-
- #### 启动tomcat
- [root@zwb opt]# 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@zwb opt]# netstat -natp | grep 8080
- tcp6 0 0 :::8080 :::* LISTEN 20889/java
5、验证

6、优化 Tomcat 启动速度
优化方案:修改 jdk 参数加快启动速度
第一次启动 tomcat 可能会发现 tomcat 启动很慢,默认情况下可能需要几十秒,此时可以修改 jdk 参数进行优化。
- [root@zwb opt]# cd /usr/java/jdk1.8.0_201-amd64/jre/lib/security/
-
- [root@zwb security]# vim java.security
- ....................
- 117 securerandom.source=file:/dev/urandom
-
- ###### /dev/random和/dev/urandom都是伪终端,但是/dev/urandom提供的数据流更快
-
- ....................
-
7、tomcat目录内容
- [root@zwbtom tomcat]# ll
- 总用量 124
- drwxr-x--- 2 root root 4096 9月 6 14:34 bin
- #存放启动和关闭 Tomcat 的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh 三个文件
- -rw-r----- 1 root root 19203 2月 5 2019 BUILDING.txt
- drwx------ 3 root root 254 9月 6 14:38 conf
- #存放 Tomcat 服务器的各种配置文件,比较常用的是 server.xml、context.xml、tomcat-users.xml、
- #web.xml 四个文件
- -rw-r----- 1 root root 6095 2月 5 2019 CONTRIBUTING.md
- drwxr-x--- 2 root root 4096 9月 6 14:34 lib
- #存放 Tomcat 服务器的 jar 包,一般不作任何改动,除非连接第三方服务,比如 redis,那就需要添加相
- #对应的 jar 包
- -rw-r----- 1 root root 57092 2月 5 2019 LICENSE
- drwxr-x--- 2 root root 197 9月 6 14:38 logs #存放 Tomcat 日志
- -rw-r----- 1 root root 2333 2月 5 2019 NOTICE
- -rw-r----- 1 root root 3255 2月 5 2019 README.md
- -rw-r----- 1 root root 6854 2月 5 2019 RELEASE-NOTES
- -rw-r----- 1 root root 16262 2月 5 2019 RUNNING.txt
- drwxr-x--- 2 root root 30 9月 6 14:34 temp #存放 Tomcat 运行时产生的文件
- drwxr-x--- 7 root root 81 2月 5 2019 webapps #存放项目资源的目录
- drwxr-x--- 3 root root 22 9月 6 14:38 work
- #Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到
需求:公司会有多个项目需要运行,那么肯定不可能是一台服务器上运行多个 Tomcat 服务,这样
会消耗太多的系统资源。此时,就需要使用到 Tomcat 虚拟主机。
先新增两个虚拟机: www.zhu.com 和www.wen.com
1、配置映射关系:
- [root@zwbtom tomcat]# vim /etc/hosts
-
- 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
- ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
- 192.168.159.20 www.zhu.com www.wen.com
2、创建目录设置主页内容
- [root@zwbtom tomcat]# cd webapps/
- [root@zwbtom webapps]# ls
- docs examples host-manager manager ROOT
- [root@zwbtom webapps]# mkdir zhu wen
- [root@zwbtom webapps]# ls
- docs examples host-manager manager ROOT wen zhu ###创建目录zhu 和 wen
- [root@zwbtom webapps]#
-
-
-
- ###设置主页内容
-
- [root@zwbtom webapps]# echo "this is zhu page\!" > /usr/local/tomcat/webapps/zhu/index.jsp
- [root@zwbtom webapps]# echo "this is wen page\!" > /usr/local/tomcat/webapps/wen/index.jsp
3、修改tomcat主配置文件并保存
vim /usr/local/tomcat/conf/server.xml

配置详解
Host name :主机名
appBase : Tomcat程序工作目录,相对路径为webapps,绝对路径为/usr/local/tomcat/webapps
unpackWARs :tomcat在webapps文件夹中发现war包文件时,是否自动将其解压
autoDeploy :设为true,则web.xml发生变化时,tomcat自动重新部署程序。实现这个功能必需允许后台处理
xmlValidation :是否开启对XML文件的验证
xmlNamespaceAware :是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验
docBase : WEB应用的目录(本地路径)
path:设置访问的URI为WEB应用的根目录(URL路径),""表示默认,加载系统中自带的类(class文件)
reloadable :是否在程序有改动时重新载入
4、关闭tomcat 并重启
- [root@zwbtom conf]# shutdown.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
- [root@zwbtom conf]# sleep 5 ##如果写tomcat的Shell脚本需要注意,防止运行中的程序没有完全关闭
- ##和开启
- [root@zwbtom conf]# 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@zwbtom conf]# netstat -antp | grep 8080
- tcp6 0 0 :::8080 :::* LISTEN 16996/java
- [root@zwbtom conf]# curl www.zhu.com:8080
- this is zhu page\!
- [root@zwbtom conf]# curl www.wen.com:8080
- this is wen page\!

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

- [root@zwbtom ~]# cd /usr/local/tomcat/conf/
- [root@zwbtom conf]# vim server.xml
- .....................................
- 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/plain,image/gif,image/jpg,image/png" />
- 82
- 83