Tomcat介绍
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
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核心组件
- web容器
web服务器 - Servlet容器
名为catalina,处理Servlet代码 - JSP容器
将JSP动态网页翻译成Servlet代码
Tomcat处理请求过程
- 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/11.1Connector获得。
- Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应。
- Engine获得请求localhost/yy/index.JSP匹配它所拥有的所有虚拟主机Host。
- Engine匹配到名为localhost的Host。 即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机
- localhost Host获得请求/yy/index.JSP,匹配它所拥有的所有Context。
- Host匹配到路径为/yy的Context。如果匹配不到,就把该请求交给路径名为Context去处理。
- path=" /yy"的Context获得请求/index.JSP, 在它的mapping table中寻找对应的Servlet。
- Context匹配到URL PATTERN为*.JSP的Servlet,对应于JSPServlet类。
- 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JSPServlet 的doGet()或doPost()方法。
- Context把执行完了之后的HttpServletResponse对象返回给Host.
- Host把HttpServletResponse对象返回给Engine。
- Engine把HttpServletResponse对象返回给Connector.
- Connector把HttpServletResponse对象返回给客户browser。
JDK介绍
- JDK是Java语言的软件开发工具包
- JDK是Tomcat运行的必要环境
- 根据计算机硬件配置,选择安装包
Tomcat目录结构
Tomcat安装部署
[root@localhost opt]# rpm -ivh jdk-8u201-linux-x64.rpm
[root@localhost java]# 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]# pwd
/usr/java/jdk1.8.0_201-amd64
[root@localhost jdk1.8.0_201-amd64]# 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@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)
[root@localhost opt]# tar zxvf apache-tomcat-9.0.16.tar.gz -C /usr/local
[root@localhost opt]# cd /usr/local/
[root@localhost local]# mv apache-tomcat-9.0.16 tomcat9
[root@localhost local]# ln -s /usr/local/tomcat9/bin/startup.sh /usr/bin
[root@localhost local]# ln -s /usr/local/tomcat9/bin/shutdown.sh /usr/bin
[root@localhost local]# setenforce 0
[root@localhost local]# iptables -F
[root@localhost local]# startup.sh
[root@localhost local]# netstat -ntap | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 13815/java
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”:对于以下的浏览器,不启用压缩。
Tomcat启动时间优化
缩短启动时间的命令
[root@localhost local]# cd /usr/java/jdk1.8.0_201-amd64/jre/lib/security
[root@localhost security]# vim java.security
securerandom.source=file:/dev/urandom '将random修改为urandom'
[root@localhost security]# startup.sh
此时打开Tomcat站点速度会快上许多
虚拟主机
1.安装DNS服务,添加两个解析地址
2.添加两个站点主页
[root@localhost security]# cd /usr/local/tomcat9/webapps
[root@localhost webapps]# mkdir cllt juejue
[root@localhost webapps]# vim cllt/index.jsp
<h1>this is cllt web</h1>
[root@localhost webapps]# vim juejue/index.jsp
<h1>this is juejue web</h1>
3.修改Tomcat主配置文件
[root@localhost webapps]# vim /usr/local/tomcat9/conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Host name="www.cllt.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat9/webapps/cllt" path="" reloadable="true"/>
</Host>
<Host name="www.juejue.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat9/webapps/juejue" path="" reloadable="true"/>
</Host>
</Engine> '插入到此行上方'
</Service>
</Server>
[root@localhost webapps]# shutdown.sh
[root@localhost webapps]# startup.sh