当前位置: 首页 > 技术支持 > 服务器维护>> tomcat在配置虚拟主机的时候,导致startup.bat闪退,如何解决(tomcat 虚拟主机部署war)

tomcat在配置虚拟主机的时候,导致startup.bat闪退,如何解决(tomcat 虚拟主机部署war)

出现这个的原因是因为tomcat没有配置启动的环境,右键电脑,点击属性,点击高级系统设置 点击系统环境变量,。

大家好,今天小编关注到一个比较有意思的话题,就是关于tomcat创建虚拟主机的问题,于是小编就整理了6个相关介绍tomcat创建虚拟主机的解答,让我们一起看看吧。

tomcat在配置虚拟主机的时候,导致startup.bat闪退,如何解决(tomcat 虚拟主机部署war)

文章目录:

  1. tomcat在配置虚拟主机的时候,导致startup.bat闪退,如何解决
  2. tomcat 虚拟主机部署war
  3. 虚拟主机上tomcat的安装
  4. 如何用tomcat配置虚拟目录?
  5. 分享:详细讲解Tomcat之系统架构
  6. Tomcat配置实践

一、tomcat在配置虚拟主机的时候,导致startup.bat闪退,如何解决

点击startup.bat会闪退,编辑startup.bat,在最后一行加入 pause ,然后保存,再次运行,就可以看到闪退的原因

出现这个的原因是因为tomcat没有配置启动的环境,右键电脑,点击属性,点击高级系统设置

点击系统环盯岩境变量,,模宴新建环境变量

步骤阅读

4

添加一个环境变量为TOMCAT_HOME ,值为tomcat的解压目录

5

再次编辑startup.bat ,去掉刚刚添加的pause,双击后,即可进行安装,不会再次闪退凯码御

二、tomcat 虚拟主机部署war

你拿握敬可以将Tomcat下的ROOT文件夹删掉,皮笑然后将项目打包消慎成ROOT.war,放到Tomcat下的webapp目录下就可以了

把整个test文件夹复制到tomcat目录的webapps文件夹下 重启tomcat就行了

因为启早你的文件不是直接打包的悄做雀 只是打包胡派了TEST文件夹而已。 你打开TEST选中所有的文件然后打包就可以了

三、虚拟主机上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配置虚拟目录?

方法1:修改配置文件

方法2:添加配置文件,推荐使用,不需要重启服务器

方法3:在Tomcat根目录下的conf目录context.xml文件中插入

方法4:在Tomcat根目录下的路径/conf/Catalina/localhost/context.xml.default ,在这里进行配置,隐敏键拿如这个虚拟路径修改方法会让该主机下的所有的站点都能加载,。

五、分享:详细讲解Tomcat之系统架构

Tomcat 或者 Jetty 就是一个“HTTP 服务器 + Servlet 容器”,我们也叫它们 Web 容器。

Spring 框架就是对 Servlet 的封装,Spring 应用本身就是一个 Servlet,而 Servlet 容器是管理和运行 Servlet 的。

Servlet 接口和 Servlet 容器这一整套规范叫作 Servlet 规范。Tomcat 和 Jetty 都按照 Servlet 规范的要求实现了 Servlet 容器。

Servlet 容器工作流程:

当客户请求某个资源时,HTTP 服务器会用一个 ServletRequest 对象把客户的请求信息封装起来,然后调用 Servlet 容器的 service 方法,Servlet 容器拿到请求后,根据请求的 URL 和 Servlet 的映射关系,找到相应的 Servlet,如果 Servlet 还没有被加载,就用反射机制创建这个 Servlet,并调用 Servlet 的 init 方法来完成初始化,接着调用 Servlet 的 service 方法来处理请求,把 ServletResponse 对象返回给 HTTP 服务器,HTTP 服务器会把响应发送给客户端。

Servlet 规范提供了两种扩展机制:Filter和Listener。

Tomcat 要实现 2 个核心功能:

因此 Tomcat 设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责内部处理。

1,连接器

连接器需要完成 3 个高内聚的功能:

因此 Tomcat 的设计者设计了 3 个组件来实现这 3 个功能,分别是 EndPoint、Processor 和 Adapter。

Endpoint 和 Processor 放在一起抽象成了 ProtocolHandler 组件,连接器用 ProtocolHandler 来处理网络连接和应用层协议。

EndPoint 是一个接口,它的抽象实现类 AbstractEndpoint 里面定义了两个内部类:Acceptor 和 SocketProcessor。其中 Acceptor 用于监听 Socket 连接请求。SocketProcessor 用于处理接收到的 Socket 请求。

EndPoint 接收到 Socket 连接后,生成一个 SocketProcessor 任务提交到线程池去处理,SocketProcessor 的 Run 方法会调用 Processor 组件去解析应用层协议,Processor 通过解析生成 Request 对象后,会调用 Adapter 的 Service 方法。

2,容器

Tomcat 设计了 4 种容器,分别是 Engine、Host、Context 和 Wrapper。这槐宏 4 种容器不是平行关系,而是父子关系。

Context 表示一个 Web 应用程序;Wrapper 表示一个 Servlet,一个 Web 应用程序中可能会有多个 Servlet;Host 代表的是一个虚拟主机,或者说一个站旅键点,可以给 Tomcat配置多个虚拟主机地址,而一个虚拟主机下可以部署多个 Web 应用程序;Engine 表示引擎,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine。

请求定位 Servlet 的过程:Tomcat 会创建一个 Service 组件和一个 Engine 容器组件,在 Engine 容器下创建两个 Host 子容器,在每个 Host 容器下创建两个 Context 子容器。由于一个 Web 应用通常有多个 Servlet,Tomcat 还会在每个 Context 容器里创建多个 Wrapper 子容器。

每一个容器都有一个 Pipeline 对象。

3,一个请求在 Tomcat 中流转的过程

4,startup.sh 启动 tomcat 的过程:铅镇册

粉丝福利,需获取Tomcat、spring等架构资料

六、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创建虚拟主机的问题就介绍到这了,希望介绍关于tomcat创建虚拟主机的6点解答对大家有用。


服务器购买/咨询热线:1563700917115617636856

本文链接:http://www.sqxnmj.com/jishuzhichiyuweihu/10132.html
tags:
腾讯云服务器特惠

  • 关注微信
是否收录:

猜你喜欢

微信公众号