1. Tomcat概述
1.1 Tomcat介绍
自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSР服务器.当然同时也支持Servlet,这样Tomcat就诞生了。
Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发而成。其被JavaWorld杂志的编辑选为2001年度最具创新的Java产品,同时它又是sun公司官方推荐的Servlet和JSP容器,因此其越来越多的受到软件公司和开发人员的喜爱。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat 5支持最新的Servlet2.4和JSP 2.0规范。因为tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上,Tomcat是Apache服务器的扩展,但运行时它是独立运行的,所以当运行Tomcat时,它实际上作为一个与Apache独立的进程单独运行的。
当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和llS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSР容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
1.2 Tomcat核心组件
通常意义上的Web服务器接受请求后,只是单纯地响应静态资源,如HTML文件,图片文件等,不能在后端进行一定的处理操作。Tomcat是Apache下的一个子项目,它具备Web服务器的所有功能,不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的Java代码Servlet,同时将执行的结果以HTML代码的形式写回客户端。
Tomcat由一系列的组件构成,其中核心的组件有三个:
1.Web容器:完成 Web服务器的功能。
2.Servlet容器:名字为catalina,用于处理Servlet代码。
3.JSP容器:用于将JSP动态网页翻译成Servlet代码。
1.3 Tomcat处理请求过程
1.请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/11.1Connector获得。
2.Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应。
3.Engine获得请求localhost/yy/index.JSP匹配它所拥有的所有虚拟主机Host.
4.Engine匹配到名为localhost的Host。即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机。
5.localhost Host获得请求/yy/index.JSP,匹配它所拥有的所有Context。
6.Host匹配到路径为/yy 的Context。如果匹配不到,就把该请求交给路径名为Context去处理。
7.path=" /y”的Context获得请求/index.JSP,在它的mapping table中寻找对应的Servlet。
8.Context匹配到URL PATTERN为*.JSP的Servlet,对应于SPServlet类。
9.构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JSPServlet的doGet()或doPost()方法。
10.Context把执行完了之后的HttpServletResponse对象返回给Host。
11.Host把HttpServletResponse对象返回给Engine。
12.Engine把HttpServletResponse对象返回给Connector.
13.Connector把HttpServletResponse对象返回给客户browser
2. 实验过程
安装JDK
cd /opt/
rpm -ivh jdk-8u201-linux-x64.rpm
cd /usr/java/jdk1.8.0_201-amd64/
ll 看一下当前目录有些什么
设置JDK环境变量
vi /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
source /etc/profile 环境变量生效
java -version 查看java版本
安装启动Tomcat
t
ar xzvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh
登录谷歌输入http://20.0.0.12:8080/ 访问时会出现tomcat的默认主页
优化tomcat启动速度
vi /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
securerandom.source=file:/dev/urandom
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
cd /usr/java/jdk1.8.0_201-amd64/
ll 看一下当前目录有些什么
drwxr-xr-x 2 root root 4096 Sep 7 22:51 bin
-rw-r--r-- 1 root root 3244 Dec 16 2018 COPYRIGHT
drwxr-xr-x 3 root root 132 Sep 7 22:51 include
-rw-r--r-- 1 root root 5207434 Dec 12 2018 javafx-src.zip
drwxr-xr-x 5 root root 185 Sep 7 22:51 jre
drwxr-xr-x 5 root root 245 Sep 7 22:51 lib
-rw-r--r-- 1 root root 40 Dec 16 2018 LICENSE
drwxr-xr-x 4 root root 47 Sep 7 22:51 man
-rw-r--r-- 1 root root 159 Dec 16 2018 README.html
-rw-r--r-- 1 root root 424 Dec 16 2018 release
-rw-r--r-- 1 root root 21103945 Dec 16 2018 src.zip
-rw-r--r-- 1 root root 108109 Dec 12 2018 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rw-r--r-- 1 root root 155002 Dec 16 2018 THIRDPARTYLICENSEREADME.txt
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缓存的时候会使用到
实验需求
虚拟主机配置
假设公司有时候需要多个项目需要运行,那么肯定不可能在一台服务器上运行多个Tomcat服务,这样消耗太多的系统资源,这时候,就需要用到Tomcat虚拟主机,例如新增两个域名www.51xit.top和 www.52xit.top,希望通过这两个域名访问不同的项目内容
具体步骤
创建51xit和52xit项目目录和文件
执行下面的命令,可以创建51xit和52xit项目目录和文件。
[root@localhost ~]# mkdir /usr/local/tomcat/webapps/51xit
[root@localhost ~]# echo "This is 51xit page" >/usr/local/tomcat/webapps/51xit/index.jsp
[root@localhost ~]# mkdir /usr/local/tomcat/webapps/52xit
troot@localhost ~-]# echo"This is 52xit page\!”>/usr/local/tomcat/webapps/52xit/index.jsp
修改tomcat主配置文件
vi /usr/local/tomcat/conf/server.xml 到文档最后Host name往后全部删掉,插入下面这一段
<Host name="www.51xit.top" appBase="/usr/local/tomcat/webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false"
xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/51xit"
path="" reloadable="true" />
</Host>
<Host name="www.52xit.top" appBase="/usr/local/tomcat/webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false"
xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/52xit"
path="" reloadable="true" />
</Host>
</Engine>
</Service>
</Server>
/usr/local/tomcat/bin/shutdown.sh/usr/local/tomcat/bin/startup.sh
然后在谷歌中测试,输入www.52xit.top:8080 页面输出This is 52xit page输入www.51xit.top:8080 页面输出This is 521xit page