Tomcat配置实践
要部署使用tomcat,则必须了解tomcat的目录结构以及各目录的作用。这里以tomcat7为例,进入tomcat安装目录下:
前端请求被tomcat直接接收或者由前端的代理,通过HTTP,或者AJP代理给Tomcat,此时请求被tomcat中的connector接收,不同的connector和Engine被service组件关联起来,在一个Engine中定义了许多的虚拟主机,由Host容器定义,每一个Host容器代表一个主机,在各自的Host中,又可以定义多个Context,用此来定义一个虚拟主机中的多个独立的应用程序。
Tomcat Server的结构图如下:
看上去很复杂。其实,大部分都是注释。下面是一个简图说明了各组件之间的关系!
上面列出的比较常用的组件元素,serverxml文件中可定义的元素非常多,包括Server, Service, Connector, Engine, Cluster, Host, Alias, Context, Realm, Valve, Manager, Listener, Resources, Resource, ResourceEnvRef, ResourceLink, WatchedResource, GlobalNameingResources, Store, Transaction, Channel, Membership, Transport, Member, ClusterListener等等。
由以上配置不难看出存在的一个问题。如果我们想要对其中一个应用程序的配置做一些修改,那么就必须重新启动tomcat,那样势必就会影响到另外两个应用程序的正常服务。因此以上配置是不适合线上使用的, 因此需要将其配置为多实例,每个实例只跑一个独立的应用程序,那样我们应用程序之间就不会在互相受到影响。 但是我们将面临这样一个问题,80端口只能被一个HTTP/11 Connector监听,而三个tomcat实例则至少需要3个HTTP/11 Connector,这样我们就 需要一个前端代理做分发处理,接收HTTP 80端口的请求,按域名通过每个tomcat实例的AJP/13 Connector传递请求 。而前端的代理选择apache,基于这样的思路,我们还可以做到tomcat的负载均衡,而且 apache会将接收的HTTP超文本传输报文重新封装成二进制格式通过AJP/13 协议传递给后端的tomcat处理 ,在效率上也是有明显的提升。
这会让Tomcat启动一个server实例(即一个JVM),它监听在8005端口以接收shutdown命令。各Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例,必须配置它们使用不同的端口。这个端口的定义用于为管理员提供一个关闭此实例的便捷途径,因此,管理员可以直接telnet至此端口使用SHUTDOWN命令关闭此实例。不过,基于安全角度的考虑,这通常不允许远程进行。
该元素代表整个容器,是Tomcat实例的顶层元素。由orgapachecatalinaServer接口来定义。它包含一个或多个<Service>元素。并且它不能做为任何元素的子元素。
Service主要用于关联一个引擎和与此引擎相关的连接器,每个连接器通过一个特定的端口和协议接收入站请求交将其转发至关联的引擎进行处理。因此,Service要包含一个引擎、一个或多个连接器。
该元素由orgapachecatalinaService接口定义,它包含一个<Engine>元素,以及一个或多个<Connector>,这些Connector元素共享用同一个Engine元素。
Engine是Servlet处理器的一个实例,即servlet引擎,默认为定义在serverxml中的Catalina。
每个Service元素只能有一个Engine元素。元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求。由orgapahcecatalinaEngine接口定义。
位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机。
它由Host接口定义。一个Engine元素可以包含多个<Host>元素。每个<Host>的元素定义了一个虚拟主机。它包含了一个或多个Web应用<Context>。
Context在某些意义上类似于apache中的路径别名,一个Context定义用于标识tomcat实例中的一个Web应用程序。
它由Context接口定义。是使用最频繁的元素。每个<Context>元素代表了运行在虚拟主机上的单个Web应用。一个<Host>可以包含多个<Context>元素。每个web应用有唯一的一个相对应的Context代表web应用自身。servlet容器为第一个web应用创建一个 ServletContext对象。
由Connector接口定义。<Connector>元素代表与客户程序实际交互的组件,它负责接收客户请求,以及向客户返回响应结果。
进入Tomcat的请求可以根据Tomcat的工作模式分为如下两类:
Tomcat应该考虑工作情形并为相应情形下的请求分别定义好需要的连接器才能正确接收来自于客户端的请求。一个引擎可以有一个或多个连接器,以适应多种请求方式。
定义连接器可以使用多种属性,有些属性也只适用于某特定的连接器类型。一般说来,常见于serverxml中的连接器类型通常有4种:
Connector元素共用属性:
HttpConnector元素的属性:
AJP Connector的属性:
即一个service配置多个端口,项目可以通过多个端口访问。 修改tomcat-home\conf下的serverxml,在Service下配置多个<Connector>即可。
在这个应用里,可以用8080端口号访问服务,也可以用8099端口号来访问服务; 服务放置的路径由host决定,上例中服务放在webapps下。
即配置多个service,每个service可以配置多个端口。修改tomcat-home\conf下的serverxml,添加多个Service即可。
注意:Service name、Engine name、appBase,端口号别忘了修改,以免重复。
以上三个service,发布的路径不同,项目分别发布在webapps、webapps1、webapps2下,访问不同的项目的方法:
在$CATALINA_HOME/conf/serverxml配置文件中的Connetctor节点,和连接数相关的参数配置和优化。
Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值200。 可以根据机器的时期性能和内存大小调整,一般可以在400-500 。最大可以在800左右。
指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值10。
Tomcat初始化时创建的线程数。默认值4。
一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值50。
是否反查域名,默认值为true。 为了提高处理能力,应设置为false 。
网络连接超时,默认值20000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。 通常可设置为30000毫秒 。
保持请求数量,默认值100。
输入流缓冲大小,默认值2048 bytes。
压缩传输,取值on/off/force,默认值off。
其中和最大连接数相关的参数为maxThreads和acceptCount。 如果要加大并发连接数,应同时加大这两个参数 。 web server允许的最大连接数还受制于操作系统的内核参数设置 ,通常Windows是2000个左右,Linux是1000个左右。
配置示例:
Tomcat默认可以使用的内存为128MB,Windows下,在文件{tomcat_home}/bin/catalinabat,Unix下,在文件$CATALINA_HOME/bin/catalinash的前面,增加如下设置:
一般说来,你应该使用物理内存的 80% 作为堆大小。如果本机上有Apache服务器,可以先折算Apache需要的内存,然后修改堆大小。 建议设置为70%;建议设置[初始化内存大小]等于[可以使用的最大内存],这样可以减少频繁分配堆而降低性能。
在$CATALINA_HOME/conf/webxml中,把listings参数设置成false即可,如下:
参考
WEB请求处理四:Tomcat配置实践
我们使用Intellij IDEA运行Web项目之前,首先需要配置服务器。那么如何在Intellij IDEA中配置当前比较流行的Tomcat服务器呢?下面我给大家分享一下。
工具/材料Intellij IDEA
首先打开Intellij IDEA软件,点击右上角的配置按钮,在下拉框中选择Edit Configurations选项,如下图所示
接下来在Configurations界面中展开Tomcat Server,选择Remote选项,如下图所示
然后在右侧选择Tomcat版本号,接着点击地址栏旁边的按钮,如下图所示
在弹出的Application Servers界面中配置Tomcat的安装地址,如下图所示
然后我们选择Delopment页卡,点击下方的加号,在下拉选项中选择External Source选项,如下图所示
接下来在Artifacts选择界面我们选择any:war exploded选项,如下图所示
配置好以后我们在点击右上角的服务器下拉框,这时我们配置的服务器就出现了,我们选择这个服务器,然后运行项目,如下图所示
最后在底部的输出栏如果看到正常的运行tomcat下的bat文件,则代表配置成功了,如下图所示
java web开发离不开服务器的支持,那么win7系统下怎么配置Tomcat服务器环境?接下来就以为例子跟大家说说设置的步骤。
具体的设置方法:
下载的时候请把如图中上边的Accept License Agreement选中了,然后根据你的系统点击相应的版本。我的系统是64位windows,选择jdk-7u45-windows-x64下载。
Tomcat下载,你需要下载与JDK相配的版本,官方首页就有如下图所示,在这里与最新版JDK相对应的就是Tomcat 80了。下载下来的文件名是
apache-tomcat-800-RC5-windows-x64exe
安装与配置环境变量
1、先安装JDK,跟你平时安装软件一样,非常傻瓜地进行着,在此就不讲述了。
在这里说明一下,一般网上 复制的经验都是直接默认安装路径,本人在这里非常看不过带有版本号的文件夹,在安装选择路径的时候直接安装在c盘文件夹JDK下如下图所示。
2、配置JDK环境变量
这一步很多人都不明白,一般都是对着配置。简单地说,就是相当给你安装的JDK路径取个别名,方便以后在CMD命令行操作编译。
1)右击计算机(我的电脑)-属性或者直接点击控制面板,将会弹出控制面板主页。
2)请根据图A所示选择环境变量,将弹出图B所示的窗口
3)在系统变量中需要新建3个变量
大小写不区分,如果存在相同变量名,请使用编辑修改变量值。
变量名为JAVA_HOME,变量值为:C:JDK(具体请根据你安装的JDK路径而定,如果是默认应该是这个形式C:Program FilesJavajdk17)
变量名为CLASSPATH,变量值为;%JAVA_HOME%lib;
变量名为PATH,变量值为%JAVA_HOME%bin
至此完成了JDK的环境配置,请在cmd命令行界面下输入java -version测试是否安装成功。下面进行Tomcat服务器的安装与配置。
Tomcat的安装与配置
解压下载文件包,不习惯版本号文件夹,在这里我修改默认文件夹名apache-tomcat-800-RC5-windows-x64为tomcat。请同学们根据自己的意愿选择。
配置Tomcat环境变量
打开系统环境变量请参考第三步图示操作。
在系统变量中添加以下变量
1)新建TOMCAT_HOME变量
变量名TOMCAT_HOME
变量值c:tomcat
变量值即为我们下载的tomcat解压路径,在这里我的是c:tomcat,如果有疑惑,可以参考第五步。
2)新建CATALINA_HOME变量
变量名CATALINA_HOME
变量值c:tomcat
没错,CATALINA_HOME的变量值与TOMCAT_HOME的变量值是一样的。
3)修改变量Path
在系统变量中找到Path变量名,双击或点击编辑,在末尾添加如下内容
;%CATALINA_HOME%bin;%CATALINA_HOME%lib
这里要注意,各个变量值之间一定要用;分隔。
4)启动Tomcat服务器
在cmd命令窗口下输入startup回车,运行如下图所示
测试Tomcat服务器是否安装成功
在浏览器中输入http://http://localhost:8080或http://127001:8080
安装成功将如下图所示
0条评论