1.Tomcat介绍
自从JSP(Java Server Pages)发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK(JavaServer Web Development Kit)基础上开发-一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet,这样Tomcat就诞生了。
Tomcat是Apache软件基金会( Apache Software Foundation)的akarta项目中的-一个核心项目,由Apache、Sun和其他一-些公司及个人共同开发而成。其被JavaWorld杂志的编辑选为2001 年度最具创新的Java产品,同时它又是sun公司官方推荐的Servlet和JSP容器, 因此其越来越多的受到软件公司和开发人员的喜爱。由于有了Sun的参与和支持,最新的Servlet和ISP规范总是能在Tomcat中得到体现。 因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
Tomcat服务器是一个免费的开放源代码的Web应用服务器, 属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试SP程序的首选。对于一个初学者来说, 可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应HTML (标准通用标记语言下的一个应用)页面的访问请求。 实际上,Tomcat是Apache服务器的扩 展,但运行时它是独立运行的,所以当运行Tomcat时,它实际上作为-个与Apache独立的进程单独运行的。
当配置正确时,Apache为HTML 页面服务,而Tomcat实际上运行JSP页面和Servlet。另外, Tomcat和IIS等Web服务器一样, 具有处理HTML页面的功能,另外它还是一个Servlet和ISP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
2.Tomcat核心组件
- Web容器:完成Web服务器的功能。
- Servlet容器: 名字为catalina, 用于处理Servlet代码。
- JSP容器:用于将JSP动态网页翻译成Servlet代码。
3.Tomcat架构图
- I.成功安装Tomcat服务器,用来处理jsp程序
- jDK下载页面
[root@www ~]# hostname
www.whc.com
[root@www ~]# ls -ld jdk-14_linux-x64_bin.rpm
-rw-r--r-- 1 root root 173051296 3月 22 10:39 jdk-14_linux-x64_bin.rpm
[root@www ~]# rpm -ivh jdk-14_linux-x64_bin.rpm
警告:jdk-14_linux-x64_bin.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ec551f03: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:jdk-14-2000:14-ga ################################# [100%]
[root@www ~]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk-14
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@www ~]# source /etc/profile #修改生效
[root@www ~]# java -version #查看JDK版本号
java version "14" 2020-03-17
Java(TM) SE Runtime Environment (build 14+36-1461)
Java HotSpot(TM) 64-Bit Server VM (build 14+36-1461, mixed mode, sharing)
[root@www ~]# wget -c https://downloads.apache.org/tomcat/tomcat-9/v9.0.33/bin/apache-tomcat-9.0.33.tar.gz
[root@www ~]# mkdir /usr/local/tomcat
[root@www ~]# tar zxvf apache-tomcat-9.0.33.tar.gz -C /usr/local/tomcat
[root@www ~]# ll -ld /usr/local/tomcat/
drwxr-xr-x 3 root root 34 3月 24 16:29 /usr/local/tomcat/
[root@www tomcat]# mv apache-tomcat-9.0.33/ apache-tomcat
[root@www tomcat]# ls
apache-tomcat
[root@www ~]# /usr/local/tomcat/apache-tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat
Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat/temp
Using JRE_HOME: /usr/java/jdk-14
Using CLASSPATH: /usr/local/tomcat/apache-tomcat/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@www ~]# firewall-cmd --add-port=8080/tcp --permanent
[root@www ~]# firewall-cmd --reload
[root@www ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client http
ports: 5000/tcp 80/tcp 443/tcp 8080/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
- II.测试Tomcat已经成功安装
- III.在Tomcat服务器上部署2个虚拟主机: http://www.cisco.com 和 http://www.huawei.com ;
http://www.cisco.com
[root@www ~]# grep '^192.' /etc/hosts
192.168.150.71 www.cisco.com
192.168.150.71 www.huawei.com
C:WindowsSystem32driversetchosts
192.168.150.71 www.cisco.com
192.168.150.71 www.huawei.com
[root@www ~]# mkdir /usr/local/tomcat/apache-tomcat/webapps/cisio
[root@www ~]# echo '111111!' >/usr/local/tomcat/apache-tomcat/webapps/cisio/index.jsp
[root@www ~]# vim /usr/local/tomcat/apache-tomcat/conf/server.xml
<Host name="www.cisco.com" appBase="/usr/local/tomcat/apache-tomcat/webapps"
unpackWARs="true" autoDeploy="true" xmlvalidation="false"
xmlNamespaceAware="false">
<Contesxt docBase="/usr/local/tomcat/apache-tomcat/webapps/cisio/"
path="" reloadable="true" />
</Host>
<Host name="www.huawei.com" appBase="/usr/local/tomcat/apache-tomcat/webapps"
unpackWARs="true" autoDeploy="true" xmlvalidation="false"
xmlNamespaceAware="false">
<Contesxt docBase="//usr/local/tomcat/apache-tomcat/webapps/huawei"
path="" reloadable="true" />
</Host>
[root@www ~]# /usr/local/tomcat/apache-tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat
Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat/temp
Using JRE_HOME: /usr/java/jdk-14
Using CLASSPATH: /usr/local/tomcat/apache-tomcat/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat/bin/tomcat-juli.jar
Tomcat started.
http://www.huawei.com
[root@www ~]# mkdir /usr/local/tomcat/apache-tomcat/webapps/huawei
[root@www ~]# echo '222222!' >/usr/local/tomcat/apache-tomcat/webapps/huawei/index.jsp
- IV.客户端访问虚拟主机成功截图
- 安装JMeter测试工具对Tomcat服务器进行压力测试并进行调优
启动Tomcat
[root@www ~]# /usr/local/tomcat/apache-tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat
Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat/temp
Using JRE_HOME: /usr/java/jdk-14
Using CLASSPATH: /usr/local/tomcat/apache-tomcat/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@hongchao-jmeter ~]# ls -ld jdk-14_linux-x64_bin.rpm
-rw-r--r--. 1 root root 173051296 3月 22 10:39 jdk-14_linux-x64_bin.rpm
[root@yichen-jmter ~]# rpm -ivh jdk-14_linux-x64_bin.rpm
警告:jdk-14_linux-x64_bin.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ec551f03: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:jdk-14-2000:14-ga ################################# [100%]
[root@yichen-jmeter ~]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk-14
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@yichen-jmeter ~]# source /etc/profile
[root@yichen-jmeter ~]# java -version
java version "14" 2020-03-17
Java(TM) SE Runtime Environment (build 14+36-1461)
Java HotSpot(TM) 64-Bit Server VM (build 14+36-1461, mixed mode, sharing)
官网下载https://jmeter.apache.org/download_jmeter.cgi
[root@yichen-jmeter ~]# mkdir jmeter
[root@yichen-jmeter ~]# tar zxvf apache-jmeter-5.2.1.tgz -C jmeter
[root@yichen-jmeter ~]# cd jmeter/apache-jmeter-5.2.1/bin/
[root@yichen-jmeter bin]# ./jmeter
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
=========================================================================
- 2.建立测试计划对Tomcat服务器进行测试并有测试结果截图;
1.添加线程组
右键"Test plan">>>"Add">>"threads(User)">>"Thread Group"
2.添加默认的HTTP请求属性:选择刚创建的线程组,然后右键依次: Add >> Config Element >>HTTP Request Defaults.
Server Name or IP:192.168.150.71
Port Number:8080
3.添加Cookie支持:几乎所有的Web测试都应使用cookie支持,除非您的应用程序明确不使用
cookie.要添加cookie支持,只需将HTTP Cookie Manager添加到测试计划中的每个线程组。这
将确保每个线程都有自己的cookie,但会在所有HTTP Request对象之间共享。要添加HTTP
Cookie管理器,只需选择"线程组",然后从“编辑"菜单或右键单击弹出菜单中选择 右键点击test-Tomcat>>Add >> Config
Element >> HTTP Cookie Manager
4.添加HTTP请求,这个可以添加多个请求页面 右键点击test-Tomcat>>Add>>Sampler>>HTTP Request Path:/
5.添加侦听器以查看存储测试结果 右键点击test-Tomcat>>Add>>Listener>>Backend Listener
6.添加查看结果树 右键点击test-Tomcat>>Add>>Listener>>View Results Tree
7.添加聚合报告 右键点击test-Tomcat>>Add>>Listener>>Aggregate Report
- 3.调整Tomcat配置文件,进行参数优化;
[root@www ~]# /usr/local/tomcat/apache-tomcat/bin/shutdown.sh
[root@www ~]# vim /usr/local/tomcat/apache-tomcat/conf/server.xml
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
redirectPort="8443" minSpareThreads="50"
enableLookups="flase" disableUploadTimeout="ture"
acceptCount="300" maxThreads="500" processorCache="500"
URIEncoding="UTF-8"
compression="on"
compressionMinSize="2048"
compressableMimeType="textml,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg,image/png"/>
</Connector>
- 4.重新测试Tomcat,并有测试结果截图;
- ## 5.调整Tomcat服务器的JVM虚拟机参数;
[root@www ~]# vim /usr/local/tomcat/apache-tomcat/bin/catalina.sh
# OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="-server -Xms2048m -Xmx2048m"
[root@www ~]# /usr/local/tomcat/apache-tomcat/bin/shutdown.sh
[root@www ~]# /usr/local/tomcat/apache-tomcat/bin/startup.sh
- 6 .重新测试Tomcat服务器,并有测试结果截图;
- 7.调整Tomcat的请求处理方式为APR;
- apr需要1.2版本以上
- openssl需要1.0.2+版本以上
1.安装apr库
[root@www ~]# yum install apr-devel openssl-devel gcc make expat-devel libtool -y
[root@www ~]# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
2.安装tomcat-antive
[root@www ~]# cd /usr/local/tomcat/apache-tomcat/bin/
[root@www bin]# tar zxvf tomcat-native.tar.gz
[root@www bin]# cd tomcat-native-1.2.23-src/native/
[root@www native]# ./configure
[root@www native]# make
[root@www native]# make install
3.更改环境变量
[root@www ~]# vim /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
[root@www ~]# source /etc/profile
4.修改tomcat的server.xm|文件
#修改AJP连接器
[root@www ~]# vim /usr/local/tomcat/apache-tomcat/conf/server.xml
<Connector port="8009" protocol="org.apache.coyote.ajp.AjpAprProtocol" redirectPort="8443" />
[root@www ~]# /usr/local/tomcat/apache-tomcat/bin/shutdown.sh
[root@www ~]# /usr/local/tomcat/apache-tomcat/bin/startup.sh
[root@www ~]# tail -5 /usr/local/tomcat/apache-tomcat/logs/catalina.2020-03-26.log
Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "". This combination is not valid.
at org.apache.coyote.ajp.AbstractAjpProtocol.start(AbstractAjpProtocol.java:264)
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1035)
... 12 more
26-Mar-2020 22:09:36.566 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [914] milliseconds
- 8.重新测试Tomcat服务器,并有测试结果截图;