导读 | Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,它早期的名称为catalina,后来由Apache、Sun 和其余一些公司及我的共同开发而成,并改名为Tomcat。 |
Tomcat简介html
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,它早期的名称为catalina,后来由Apache、Sun 和其余一些公司及我的共同开发而成,并改名为Tomcat。Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是不少的场合下被广泛使用,是开发和调试JSP 程序的首选,由于Tomcat 技术先进、性能稳定,成为目前比较流行的Web 应用服务器。Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展,但它是独立运行的。目前最新的版本为Tomcat 8.0.24 Released。前端
Tomcat不是一个完整意义上的Jave EE服务器,它甚至都没有提供对哪怕是一个主要Java EE API的实现;但因为遵照apache开源协议,tomcat却又为众多的java应用程序服务器嵌入本身的产品中构建商业的java应用程序服务器,如JBoss和JOnAS。尽管Tomcat对Jave EE API的实现并不完整,然而很企业也在渐渐抛弃使用传统的Java EE技术(如EJB)转而采用一些开源组件来构建复杂的应用。这些开源组件如Structs、Spring和Hibernate,而Tomcat可以对这些组件实现完美的支持。java
Tomcat的架构node
Tomcat 6支持Servlet 2.5和JSP 2.1的规范,它由一组嵌套的层次和组件组成,通常可分为如下四类:linux
顶级组件:位于配置层次的顶级,而且彼此间有着严格的对应关系;数据库
链接器:链接客户端(能够是浏览器或Web服务器)请求至Servlet容器,apache
容器:包含一组其它组件;bootstrap
被嵌套的组件:位于一个容器当中,但不能包含其它组件;vim
各常见组件后端
一、服务器(server):Tomcat的一个实例,一般一个JVM只能包含一个Tomcat实例;所以,一台物理服务器上能够在启动多个JVM的状况下在每个JVM中启动一个Tomcat实例,每一个实例分属于一个独立的管理端口。这是一个顶级组件。
二、服务(service):一个服务组件一般包含一个引擎和与此引擎相关联的一个或多个链接器。给服务命名能够方便管理员在日志文件中识别不一样服务产生的日志。一个server能够包含多个service组件,但一般情下只为一个service指派一个server。
链接器类组件:
三、链接器(connectors):负责链接客户端(能够是浏览器或Web服务器)请求至Servlet容器内的Web应用程序,一般指的是接收客户发来请求的位置及服务器端分配的端口。默认端口一般是HTTP协议的8080,管理员也能够根据本身的须要改变此端口。一个引擎能够配置多个链接器,但这些链接器必须使用不一样的端口。默认的链接器是基于HTTP/1.1的Coyote。同时,Tomcat也支持AJP、JServ和JK2链接器。
容器类组件
四、引擎(Engine):引擎通是指处理请求的Servlet引擎组件,即Catalina Servlet引擎,它检查每个请求的HTTP首部信息以辨别此请求应该发往哪一个host或context,并将请求处理后的结果返回的相应的客户端。严格意义上来讲,容器没必要非得经过引擎来实现,它也能够是只是一个容器。若是Tomcat被配置成为独立服务器,默认引擎就是已经定义好的引擎。而若是Tomcat被配置为Apache Web服务器的提供Servlet功能的后端,默认引擎将被忽略,由于Web服务器自身就能肯定将用户请求发往何处。一个引擎能够包含多个host组件。
五、主机(Host):主机组件相似于Apache中的虚拟主机,但在Tomcat中只支持基于FQDN的“虚拟主机”。一个引擎至少要包含一个主机组件。
六、上下文(Context):Context组件是最内层次的组件,它表示Web应用程序自己。配置一个Context最主要的是指定Web应用程序的根目录,以便Servlet容器可以将用户请求发往正确的位置。Context组件也可包含自定义的错误页,以实如今用户访问发生错误时提供友好的提示信息。
被嵌套类(nested)组件
这类组件一般包含于容器类组件中以提供具备管理功能的服务,它们不能包含其它组件,但有些却能够由不一样层次的容器各自配置。
七、阀门(Valve):用来拦截请求并在将其转至目标以前进行某种处理操做,相似于Servlet规范中定义的过滤器。Valve能够定义在任何容器类的组件中。Valve常被用来记录客户端请求、客户端IP地址和服务器等信息,这种处理技术一般被称做请求转储(request dumping)。请求转储valve记录请求客户端请求数据包中的HTTP首部信息和cookie信息文件中,响应转储valve则记录响应数据包首部信息和cookie信息至文件中。
八、日志记录器(Logger):用于记录组件内部的状态信息,可被用于除Context以外的任何容器中。日志记录的功能可被继承,所以,一个引擎级别的Logger将会记录引擎内部全部组件相关的信息,除非某内部组件定义了本身的Logger组件。
九、领域(Realm):用于用户的认证和受权;在配置一个应用程序时,管理员能够为每一个资源或资源组定义角色及权限,而这些访问控制功能的生效须要经过Realm来实现。Realm的认证能够基于文本文件、数据库表、LDAP服务等来实现。Realm的效用会遍布整个引擎或顶级容器,所以,一个容器内的全部应用程序将共享用户资源。同时,Realm能够被其所在组件的子组件继承,也能够被子组件中定义的Realm所覆盖。
引擎(Engine):引擎是指处理请求的Servlet引擎组件,即Catalina Servlet引擎,它从HTTPconnector接收请求并响应请求。它检查每个请求的HTTP首部信息以辨别此请求应该发往哪一个host或context,并将请求处理后的结果返回的相应的客户端。严格意义上来讲,容器没必要非得经过引擎来实现,它也能够是只是一个容器。若是Tomcat被配置成为独立服务器,默认引擎就是已经定义好的引擎。而若是Tomcat被配置为Apache Web服务器的提供Servlet功能的后端,默认引擎将被忽略,由于Web服务器自身就能肯定将用户请求发往何处。一个引擎能够包含多个host组件。
Tomcat链接器架构
基于Apache作为Tomcat前端的架构来说,Apache经过mod_jk、mod_jk2或mod_proxy模块与后端的Tomcat进行数据交换。而对Tomcat来讲,每一个Web容器实例都有一个Java语言开发的链接器模块组件,在Tomcat6中,这个链接器是org.apache.catalina.Connector类。这个类的构造器能够构造两种类别的链接器:HTTP/1.1负责响应基于HTTP/HTTPS协议的请求,AJP/1.3负责响应基于AJP的请求。但能够简单地经过在server.xml配置文件中实现链接器的建立,但建立时所使用的类根据系统是支持APR(Apache Portable Runtime)而有所不一样。
APR是附加在提供了通用和标准API的操做系统之上一个通信层的本地库的集合,它可以为使用了APR的应用程序在与Apache通讯时提供较好伸缩能力时带去平衡效用。
同时,须要说明的是,mod_jk2模块目前已经再也不被支持了,mod_jk模块目前还apache被支持,但其项目活跃度已经大大下降。所以,目前更经常使用 的方式是使用mod_proxy模块。
若是支持APR:
HTTP/1.1:org.apache.cotote.http11.Http11AprProtocol AJP/1.3:org.apache.coyote.ajp.AjpAprProtocol
若是不支持APR:
HTTP/1.1: org.apache.coyote.http11.Http11Protocol AJP/1.3: org.apache.jk.server.JkCoyoteHandler
链接器协议
Tomcat的Web服务器链接器支持两种协议:AJP和HTTP,它们均定义了以二进制格式在Web服务器和Tomcat之间进行数据传输,并提供相应的控制命令。
AJP(Apache JServ Protocol)协议:目前正在使用的AJP协议的版本是经过JK和JK2链接器提供支持的AJP13,它基于二进制的格式在Web服务器和Tomcat之间传输数据,而此前的版本AJP10和AJP11则使用文本格式传输数据。
HTTP协议:诚如其名称所表示,其是使用HTTP或HTTPS协议在Web服务器和Tomcat之间创建通讯,此时,Tomcat就是一个彻底功能的HTTP服务器,它须要监听在某端口上以接收来自于商前服务器的请求。
2、安装Tomcat
Tomcat的官方站点为http://tomcat.apache.org/,要安装Tomcat,首先须要安装JDK。
如下安装平台为CentOS release 6.6 (Final) 32位平台上,JDK 版本为jdk-6u45-linux-i586-rpm.bin ,tomcat 使用 apache-tomcat-7.0.63.tar.gz。
[root@localhost tomcat]# ls -l total 75676 -rw-r--r--. 1 root root 8850470 Aug 12 02:08 apache-tomcat-7.0.63.tar.gz -rw-r--r--. 1 root root 68637258 Apr 6 2014 jdk-6u45-linux-i586-rpm.bin [root@localhost tomcat]# chmod +x jdk-6u45-linux-i586-rpm.bin [root@localhost tomcat]# ./jdk-6u45-linux-i586-rpm.bin [root@localhost tomcat]# tar xf apache-tomcat-7.0.63.tar.gz -C /usr/local/ [root@localhost tomcat]# ln -s /usr/local/apache-tomcat-7.0.63/ /usr/local/tomcat [root@node1 tomcat]# vim /etc/profile.d/java.sh #设置java环境变量 export JAVA_HOME=/usr/java/latest export PATH=$PATH:$JAVA_HOME/bin [root@node1 conf]# . /etc/profile.d/tomcat.sh [root@node1 tomcat]# vim /etc/profile.d/tomcat.sh #设置tomcat环境变量 export CATALINA_HOME=/usr/local/tomcat export PATH=$PATH:$CATALINA_HOME/bin [root@node1 conf]# catalina.sh version 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.6.0_45 Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Server version: Apache Tomcat/7.0.63 Server built: Jun 30 2015 08:08:33 UTC Server number: 7.0.63.0 OS Name: Linux OS Version: 2.6.32-504.el6.i686 Architecture: i386 JVM Version: 1.6.0_45-b06 JVM Vendor: Sun Microsystems Inc. [root@localhost tomcat]# vim /etc/init.d/tomcat #提供启动脚本 #!/bin/sh # Tomcat init script for Linux. # # chkconfig: 2345 96 14 # description: The Apache Tomcat servlet/JSP container. # JAVA_OPTS='-Xms64m -Xmx128m' JAVA_HOME=/usr/java/latest CATALINA_HOME=/usr/local/tomcat export JAVA_HOME CATALINA_HOME case $1 in start) exec $CATALINA_HOME/bin/catalina.sh start ;; stop) exec $CATALINA_HOME/bin/catalina.sh stop;; restart) $CATALINA_HOME/bin/catalina.sh stop sleep 2 exec $CATALINA_HOME/bin/catalina.sh start ;; configtest) exec $CATALINA_HOME/bin/catalina.sh configtest ;; *) exec $CATALINA_HOME/bin/catalina.sh * ;; esac [root@localhost tomcat]# chmod +x /etc/init.d/tomcat [root@localhost tomcat]# chkconfig --add tomcat [root@node1 tomcat]# catalina.sh start [root@node1 tomcat]# jps #显示Bootstrap启动则表示启动成功 29145 Bootstrap 29163 Jps
原文来自: https://www.linuxprobe.com/tomcat-install-configure.html