海外主机测评

您现在的位置是:首页 > 服务器 > 正文

服务器

虚拟主机tomcat虚拟主机搭建网站

cds8202023-05-22服务器80
本文目录一览:1、虚拟主机上tomcat的安装2、Tomcat组件简介3、Tomcat虚拟主机配置4、Tomcat配置实践虚拟主机上tomcat的安装Tomcat在

本文目录一览:

  • 1、虚拟主机上tomcat的安装
  • 2、Tomcat 组件简介
  • 3、Tomcat虚拟主机配置
  • 4、Tomcat配置实践

虚拟主机上tomcat的安装

Tomcat在安 (装建议选用Tomcat6.0.x版本,下载通用版本Tomcat6.0.tar.gz格式)

1.将Tomcat6.0.tar.gz通过FTP上传到/usr/local/ 目录

2. tar zxvf Tomcat6.0.tar.gz (解压安装包)

3.cd bin

3.执行 ./startup.sh (启动tomcat服务, shutdown.sh为终止tomcat服务

tomcat监听端口默认为8080端口)

简单写了下。如果部署JAVAWEB 项目,先装JDK

Tomcat 组件简介

title: Tomcat 组件简介

date: 2020/05/06 17:19

先简单介绍一下 Tomcat 中的各种组件,要不你后面听不懂

conf/server.xml

根据Tomcat自身的分类,上面这些元素可以分成四种:

一个Tomcat只有一个 Server.xml,即 一个Tomcat实例只有一个Server 。

它不是一个容器,它只是单纯地扮演着一个包裹的角色。

它代表 Tomcat 实例本身。

Server可配置的属性很少。根据上面摘录的默认配置,Server会侦听localhost的TCP端口8005,当该端口接收到字符串"SHUTDOWN"时,即执行关闭Tomcat操作。

Server有两种特有的组件,一个是GlobalNamingResources(全局命名资源),一个是Service(服务)。

除此之外,还可以有Listener(监听器)这种可以作用于不同层次容器的组件。Server默认配置了六种Listener。配置在Server这一层的Listener对所有容器起作用。

它代表整个 Tomcat 实例,因此它还有一个作用,就是监听 SHUTDOWN 请求。

它是一个顶层组件,用于包裹它下面的多个 Service 组件。

一个Service就是一个完整的服务, 负责将若干个Connector和一个Engine(引擎)包裹在一起 。除此之外,Service还可以配置一个Executor(共享线程池)用于管理所有Connector的线程数量。

如图所示,Service有Executor、Connector和Engine三种组件。其中,每个Connector负责侦听一个TCP端口,接收相应的请求,并转发给绑定的Engine处理。Engine处理完后,通过Connector把结果返回给客户端。在配置了Executor的情况下,所有Connector的线程受Executor统一管理。

它的作用是将多个连接器与容器实例联系起来,使得不同协议的请求可以使用同一个容器来处理。

Engine是Service的请求处理引擎,负责处理所有Connector发过来的请求,并将内部处理完毕的结果返回给Connector。它是最外层的容器。

Engine.name - 引擎的名称

Engine.defaultHost - 默认采用哪一个子容器Host来处理请求

Engine 的作用是可以采用一个连接器接收请求并映射到不同的域名中

一个Host就是一个虚拟主机,对应一个或多个域名。

Host.name - 主机名称(域名)

默认配置定义了一个名为 localhost 的主机。至少要有一个Host的名称与Engine的defaultHost一致。

除了域名外,Host可以通过子节点alias来配置别名。别名的作用与域名一致。例如:

其作用机制如下图所示:

Host.appBase - 虚拟主机的根目录

Host.unpackWARs - 放到 webapps 目录下的 WAR-file 是否应该被解压

Host.autoDeploy - 是否自动部署放到 webapps 目录下的应用

Context代表Host下面的一个虚拟目录。

默认是不配置的

Context.docBase - 应用程序的路径或者是WAR文件存放的路径

Context.path - 此web应用程序的上下文路径

Context.reloadable - 是否支持热部署

如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,并通过类加载器重新加载class文件,以实现在不重启tomcat的情况下重新部署。

Context.crossContext - 不同context是否共享sessiON

开头说过,Connector就是墙上的插座,负责侦听一个具体的TCP端口,并通过该端口处理Engine与客户端之间的交互。默认配置定义了两个 Connector:

Valve的中文含义是阀门,可以简单地理解为Tomcat的拦截器。它负责在请求发送到应用之前拦截HTTP请求,可以定义在任何容器中。默认配置中定义了一个AccessLogValve,负责拦截HTTP请求,并写入到日志文件中。

Listener即监听器,负责监听服务器端的行为。此处需要了解的监听器有两个:

请求地址为:

Tomcat虚拟主机配置

站点根目录为: c:\wwwroot

站点一目录为: c:\wwwroot\aaa , 域名为

站点二目录为: c:\wwwroot\bbb , 域名为

站点三目录为: c:\wwwroot\ccc , 域名为

Tomcat 配置文件为: tomcat路径/conf/server.xml

站点根目录为: c:\wwwroot

站点一目录为: c:\wwwroot\aaa , 域名为

站点二目录为: c:\wwwroot\bbb , 域名为

Tomcat 配置文件为: tomcat路径/conf/server.xml

注: 若需不同域名访问将 Host name="localhost" appBase="c:\wwwroot" unpackWARs="true" autoDeploy="true" name 字段改为对应域名即可,多个域名可在 Host 标签内添加一个或多个 Alias;/Alias 即可。其中 Connector port、defaultHost、Hostname、appBase、docBase、日志 prefix 为你实际的即可。

a. 可以将不同 service 组件的 Engine name 都指定成 Catalina。

b. 可以将不同 service 组件的 Host appBase 指定成默认的 webapps。

c. Context docBase="/data/java/appstore-web" path="" reloadable="true" / 这个用于配置根路径项目,也就是 /data/java/appstore-web 包访问时是通过 ip:port 来访问,而不是传统的 ip:port/app

假设:

第一个tomcat文件夹为tomcat8-1,路径为 /home/tomcat8-1/

第二个tomcat文件夹为tomcat8-2,路径为 /home/tomcat8-2/

分别修改 tomcat 文件夹 /conf 目录下 server.xml 的监听端口为不同端口。

分别启动 tomcat 文件夹 /bin 目录下的 startup.sh 启动tomcat,停止同上文。

即可运行多个tomcat。

注:根据官方文档 tomcat8.5 且 JAVA7 及其以上才支持 SNI。如果 tomcat 版本较低且需要绑定多个域名情况下,建议使用反向代理方式部署 HTTPS。

在 Connector port="8080" 配置字段下新增 443 端口监听设置即可。

注:若IIS反向代理tomcat绑定https时,选择上启用SSL卸载。以免tomcat未配置HTTPS访问的情况下请求得不到正常响应。

如:

修改配置文件 tomcat路径/conf/tomcat-users.xml :

Tomcat配置实践

要部署使用tomcat,则必须了解tomcat的目录结构以及各目录的作用。这里以tomcat7为例,进入tomcat安装目录下:

前端请求被tomcat直接接收或者由前端的代理,通过HTTP,或者AJP代理给Tomcat,此时请求被tomcat中的connector接收,不同的connector和Engine被service组件关联起来,在一个Engine中定义了许多的虚拟主机,由Host容器定义,每一个Host容器代表一个主机,在各自的Host中,又可以定义多个Context,用此来定义一个虚拟主机中的多个独立的应用程序。

Tomcat Server的结构图如下:

看上去很复杂。其实,大部分都是注释。下面是一个简图说明了各组件之间的关系!

上面列出的比较常用的组件元素,server.xml文件中可定义的元素非常多,包括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/1.1 Connector监听,而三个tomcat实例则至少需要3个HTTP/1.1 Connector,这样我们就 需要一个前端代理做分发处理,接收HTTP 80端口的请求,按域名通过每个tomcat实例的AJP/1.3 Connector传递请求 。而前端的代理选择apache,基于这样的思路,我们还可以做到tomcat的负载均衡,而且 apache会将接收的HTTP超文本传输报文重新封装成二进制格式通过AJP/1.3 协议传递给后端的tomcat处理 ,在效率上也是有明显的提升。

这会让Tomcat启动一个server实例(即一个JVM),它监听在8005端口以接收shutdown命令。各Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例,必须配置它们使用不同的端口。这个端口的定义用于为管理员提供一个关闭此实例的便捷途径,因此,管理员可以直接telnet至此端口使用SHUTDOWN命令关闭此实例。不过,基于安全角度的考虑,这通常不允许远程进行。

该元素代表整个容器,是Tomcat实例的顶层元素。由org.apache.catalina.Server接口来定义。它包含一个或多个Service元素。并且它不能做为任何元素的子元素。

Service主要用于关联一个引擎和与此引擎相关的连接器,每个连接器通过一个特定的端口和协议接收入站请求交将其转发至关联的引擎进行处理。因此,Service要包含一个引擎、一个或多个连接器。

该元素由org.apache.catalina.Service接口定义,它包含一个Engine元素,以及一个或多个Connector,这些Connector元素共享用同一个Engine元素。

Engine是Servlet处理器的一个实例,即servlet引擎,默认为定义在server.xml中的Catalina。

每个Service元素只能有一个Engine元素。元素处理在同一个Service中所有Connector元素接收到的客户请求。由org.apahce.catalina.Engine接口定义。

位于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应该考虑工作情形并为相应情形下的请求分别定义好需要的连接器才能正确接收来自于客户端的请求。一个引擎可以有一个或多个连接器,以适应多种请求方式。

定义连接器可以使用多种属性,有些属性也只适用于某特定的连接器类型。一般说来,常见于server.xml中的连接器类型通常有4种:

Connector元素共用属性:

HttpConnector元素的属性:

AJP Connector的属性:

即一个service配置多个端口,项目可以通过多个端口访问。 修改tomcat-home\conf下的server.xml,在Service下配置多个Connector即可。

在这个应用里,可以用8080端口号访问服务,也可以用8099端口号来访问服务; 服务放置的路径由host决定,上例中服务放在webapps下。

即配置多个service,每个service可以配置多个端口。修改tomcat-home\conf下的server.xml,添加多个Service即可。

注意:Service name、Engine name、appBase,端口号别忘了修改,以免重复。

以上三个service,发布的路径不同,项目分别发布在webapps、webapps1、webapps2下,访问不同的项目的方法:

在$CATALINA_HOME/conf/server.xml配置文件中的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/catalina.bat,Unix下,在文件$CATALINA_HOME/bin/catalina.sh的前面,增加如下设置:

一般说来,你应该使用物理内存的 80% 作为堆大小。如果本机上有Apache服务器,可以先折算Apache需要的内存,然后修改堆大小。 建议设置为70%;建议设置[初始化内存大小]等于[可以使用的最大内存],这样可以减少频繁分配堆而降低性能。

在$CATALINA_HOME/conf/web.xml中,把listings参数设置成false即可,如下:

参考

WEB请求处理四:Tomcat配置实践

关于虚拟主机tomcat和虚拟主机搭建网站的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~