Tomcat之虚拟主机配置以及web应用配置
Tomcat之虚拟主机配置以及web应用配置
Tomcat文件夹结构例如以下:
bin ---- 启动和关闭须要的bat文件所在的文件夹
conf --- 配置文件夹
lib --- tomcat执行时须要的jar包所在的文件夹
logs --- 执行时产生的日志信息所在的文件夹
temp --- tomcat执行时产生的暂时文件存放的文件夹,不须要我们管理
webapps --- 开发中最经常使用的文件夹,web应用放置到此文件夹下浏览器能够直接訪问
work --- 工作文件夹,tomcat执行时产生的工作文件存放在这个文件夹中
一、基本概念
虚拟主机的简单理解:
在一台Tomcatserver中能够同一时候管理多个站点。即能够将多个站点配置在同一台Tomcatserver上。而对于用户(浏览器)而言,是不知道详细哪些站点是布置在同一台Tomcat(server)之上的。对于用户(浏览器)而言,每一个站点都像是执行在各自独立的server上。此时每一个站点就是执行在同一台这是server中各自相应的虚拟主机上。此时,简单的理解。每一个站点就能够觉得是一个虚拟主机。
Web应用:
一个Web应用程序是由完毕特定任务的各种Web组件(web components)构成的并通过Web将服务展示给外界。
在实际应用中,Web应用程序是由多个Servlet、JSP页面、HTML文件以及图像文件等web资源组成。而这些web资源不能直接交给虚拟主机,故将这些资源依照一定的格式组织成web应用交由虚拟机主机管理。
全部这些组件相互协调为用户提供一组完整的服务。
简单的将:web应用就是依照特定格式组织的一些web资源(Servlet、JSP页面、HTML文件以及图像文件等)的集合,为用户提供特定服务。
一个Tomcat中能够配置多个虚拟主机,一个虚拟主机中能够配置多个web应用。
二、Tomcat虚机主机配置
在conf/server.xml中<Engin>标签下配置<Host>标签就能够为tomcat添加一台虚拟主机了
name -- 指定虚拟主机的名称,浏览器通过这个名称訪问虚拟主机
appBase -- 虚拟主机管理的文件夹,放置在这个文件夹下的web应用当前虚拟主机能够自己主动载入(在autoDeploy为true的情况下)相当于Localhost虚拟主机的webapps文件夹(在autoDeploy为true的情况下)
debug -- 是日志的调试等级
unpackWARs -- 设置为true,在Web应用为*.war时,解压此WAR文件. 假设为true,则tomcat会自己主动将WAR文件解压;否则不解压,直接从WAR文件里执行应用程序.
autoDeploy -- 默觉得true,表示假设有新的WEB应用放入appBase 而且Tomcat在执行的情况下,自己主动加载应用
实例代码:
</pre><pre>
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.core.JasperListener"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/> <GlobalNamingResources> <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
</GlobalNamingResources> <Service name="Catalina">
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> <Engine defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm> <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/> <Context docBase="D:\apache-tomcat-7.0.63\wtpwebapps\Cabinet_WS" path="/Cabinet_WS" reloadable="true" source="org.eclipse.jst.jee.server:Cabinet_WS"/>
</Host> <!-- 加入新的虚拟主机 -->
<Host appBase="mywebapps" autoDeploy="true" name="www.google.com" unpackWARs="true">
</Host>
</Engine>
</Service>
</Server>
三、Tomcat配置web应用
3.1、Tomcat中Web应用的文件夹结构:
web应用文件夹结构: 假设文件夹结构不合法可能会出现各种问题.
news
|
|--静态资源和JSP文件都能够直接放置在web应用的文件夹下,浏览器能够直接訪问到
|--WEB-INF
|--classes -- 动态web资源执行时的class文件要放在这个文件夹下
|--lib -- 动态web资源执行时所依赖的jar包要放在这个文件夹下
|--web.xml -- 整个web应用的配置文件,配置主页/Servlet的映射/过滤器监听器的配置都须要依赖这个文件进行
说明
WEB-INF -- 能够没有,可是最好有,假设有则一定要保证他的文件夹结构是完整的.放置在WEB-INF文件夹下的全部资源浏览器没有办法直接进行訪问
3.2、Tomcat中配置web应用的几种方式:
方式一:这样的配置方式须要重新启动server不推荐
在tomcat安装文件夹/conf/Server.xml的<Host>标签中,配置<Context>标签,就能够为该虚拟主机配置一个web应用了
缺省web应用设置:
假设将path设置为空则这个web应用为缺省web应用
演示样例代码例如以下:加粗部分
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.core.JasperListener"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/> <GlobalNamingResources> <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
</GlobalNamingResources> <Service name="Catalina">
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> <Engine defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm> <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/>
<!-- 加入新的web应用。应用名为HelloWord,虚拟路径/HelloWord -->
<Context docBase="D:\apache-tomcat-7.0.63\wtpwebapps\HelloWord" path="/HelloWord" reloadable="true" />
</Host>
</Engine>
</Service>
</Server>
</pre><pre>
当中<Context>标签属性说明:
属性名 |
说明 |
path |
訪问的URI,如:http://localhost/是我的应用的根文件夹,在浏览器中訪问此应用将用。在地址栏输入:http://localhost/HelloWord |
docBase |
WEB应用的文件夹web application的文件存放的硬件路径或者是WAR文件存放硬件路径。 |
reloadable |
是否在程序有修改时又一次加载,设置成true会影响性能,但可自己主动加载修改后的文件. 假设为true,则Tomcat将支持热部署,会自己主动检測web application的/WEB-INF/lib和/WEB-INF/classes文件夹的变化。自己主动装载新的JSP和Servlet,我们能够在不重起Tomcat的情况下改变web application |
方式二、这样的配置方式不须要重新启动server,推荐使用
在tomcat安装文件夹/conf/[EnginName]/[HostName]/在这个文件夹下写一个xml文件,当中xml文件的名字就是虚拟路径,在这个xml中能够配置<Context>标签,当中配置真实路径.
注意:
1)当中[EnginName]指的是在tomcat安装文件夹/conf/Server.xml这个配置文件里<Engin>标签元素相应的名字。
2)[HostName]指tomcat安装文件夹/conf/Server.xml这个配置文件里<Host>标签元素的名字。
3)假设所配置的虚拟路径中有/。因为文件名称中不同意包括/须要用#替代.
使用方式二完毕方法一中同样的配置时,应进行例如以下操作:
1)在tomcat安装文件夹/conf/CataLina/localhost/文件夹下创建一个名为HelloWord.xml的文件,(若文件名称中有斜杠时使用#好取代:test#HelloWord.xml)
2)在HelloWord.xml文件里写入例如以下代码:
<? xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:\apache-tomcat-7.0.63\wtpwebapps\HelloWord" path="/HelloWord" reloadable="true" />
当中<Context>标签属性说明參照上面内容。
缺省web应用设置:
仅仅要将文件名称设置为ROOT.xml则这个xml描写叙述的web应用就成为了缺省web应用,
方式三、最简单、最经常使用的方式
直接将web应用放置到,虚拟主机管理的文件夹下,此时虚拟主机就会自己主动载入该文件夹下的web应用
/conf/Server.xml的<Host>标签中的属性appBase所指向的文件夹即为当前虚拟主机虚拟主机自己主动管理的文件夹,在属性autoDeploy为true的情况下。放置在这个文件夹下的web应用当前虚拟主机能够自己主动载入。
缺省web应用设置:
仅仅要将web应用目录名设置为ROOT则这个web应用就成为了缺省web应用。默认已经有一个web应用。即默认訪问的Tomcat的主页。
附关于/conf/Server.xml配置的具体说明
/conf/Server.xml文件的具体配置说明例如以下:
<Server port="8005" shutdown="SHUTDOWN">
<!--属性说明
port:指定一个port,这个port负责监听关闭Tomcat的请求
shutdown:向以上port发送的关闭server的命令字符串
-->
<Listener className="org.apache.catalina.core.AprLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> <GlobalNamingResources>
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources> <!-- 每一个Service元素仅仅能有一个Engine元素.元素处理在同一个<Service>中全部<Connector>元素接收到的客户请求 -->
<Service name="Catalina">
<!--属性说明
name:Service的名称
--> <!--
Connector元素:由Connector接口定义.<Connector>元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客户返回响应结果.
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<!--属性说明
port:server连接器的port号,该连接器将在指定port侦听来自client的请求,设定Tcp/IPport,默认值为8080,假设把8080改成80,则仅仅要输入http://localhost就可以 由于TCP/IP的默认port是80
enableLookups:假设为true,则能够通过调用request.getRemoteHost()进行DNS查询来得到远程client的实际主机名;若为false则不进行DNS查询,而是返回其ip地址
redirectPort:server正在处理http请求时收到了一个SSL传输请求后重定向的port号
acceptCount:当全部能够使用的处理请求的线程都被用光时,能够放到处理队列中的请求数,超过这个数 的请求将不予处理,而返回Connection refused错误
connectionTimeout:等待超时的时间数(以毫秒为单位)
maxThreads:设定在监听port的线程的最大数目,这个值也决定了server能够同一时候响应客户请求的最大数目.默认值为200
protocol:必须设定为AJP/1.3协议.
address:假设server有两个以上IP地址,该属性能够设定port监听的IP地址,默认情况下,port会监听server上全部IP地址.
minProcessors:server启动时创建的处理请求的线程数,每一个请求由一个线程负责
maxProcessors:最多能够创建的处理请求的线程数
minSpareThreads:最小备用线程
maxSpareThreads:最大备用线程
debug:日志等级
disableUploadTimeout:禁用上传超时,主要用于大数据上传时
--> <Engine name="Catalina" defaultHost="localhost">
<!--属性说明
name:相应$CATALINA_HOME/config/Catalina中的Catalina
defaultHost:相应Host元素中的name属性,也就是和$CATALINA_HOME/config/Catalina/localhost中的localhost缺省的处理请求的虚拟主机名,它至少与当中的一个Host元素的name属性值是一样的
debug:日志等级 --> <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/> <!--由Host接口定义.一个Engine元素能够包括多个<Host>元素. 每一个<Host>的元素定义了一个虚拟主机.它包括了一个或多个Web应用. -->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<!--属性说明
name:在此例中一直被强调为$CATALINA_HOME/config/Catalina/localhost中的localhost 虚拟主机名
debug:是日志的调试等级
appBase:默认的应用路径,也就是把应用放在一个文件夹下,并在autoDeploy为true的情况下,放置在这个文件夹下的web应用当前虚拟主机能够自己主动载入
unpackWARs:设置为true,在Web应用为*.war是,解压此WAR文件.假设为true,则tomcat会自己主动将WAR文件解压;否则不解压,直接从WAR文件里执行应用程序.
autoDeploy:默觉得true,表示假设有新的WEB应用放入appBase 而且Tomcat在执行的情况下,自己主动载入应用 --> <Context path="/demm" docBase="E:\\projects\\demm\\WebRoot" debug="0" reloadable="true" >
</Context>
<!--属性说明
path:訪问的URI,如:http://localhost/是我的应用的根文件夹,訪问此应用将用:http://localhost/demm进行操作,
docBase:WEB应用的文件夹.web application的文件存放的硬件路径或者是WAR文件存放硬件路径
debug:日志等级
reloadable:是否在程序有修改时又一次载入,设置成true会影响性能,但可自己主动载入修改后的文件.
假设为true。则Tomcat将支持热部署。会自己主动检測web application的/WEB-INF/lib
和/WEB-INF/classes文件夹的变化,自己主动装载新的JSP和Servlet,我们能够在不重起
Tomcat的情况下改变web application -->
</Host> </Engine> </Service>
</Server> <!--
标签的具体定义:
<Host>元素
属性:
1>className:指定实现Host接口的类.默认值为StandardHost
2>appBase:指定虚拟主机的文件夹,能够指定绝对文件夹,也能够指定相对于的相对文件夹.假设没有此项,默觉得/webapps,此文件夹为虚拟主机管理的文件夹,放置在这个文件夹下的web应用当前虚拟主机能够自己主动载入
3>autoDeploy:假设此项设为true,表示Tomcat服务处于执行状态时,能够监測appBase下的文件,假设有新有web应用增加进来,会自运公布这个WEB应用
4>unpackWARs:假设此项设置为true,表示把WEB应用的WAR文件先展开为开放文件夹结构后再执行.假设设为false将直接执行为WAR文件
5>alias:指定主机别名,能够指定多个别名
6>deployOnStartup:假设此项设为true,表示Tomcatserver启动时会自己主动公布appBase文件夹下全部的Web应用.假设Web应用中的server.xml没有相应的元素,将採用Tomcat默认的Context
7>name:定义虚拟主机的名字 <Context> 元素:它由Context接口定义.是使用最频繁的元素.每一个能够包括多个元素.每一个web应用有唯一的一个相相应的Context代表web应用自身.servlet容器为第一个web应用创建一个 ServletContext对象
属性:
1>className:指定实现Context的类,默觉得StandardContext类
2>path:指定訪问Web应用的URL入口,注意/myweb,而不是myweb了事
3>reloadable:假设这个属性设为true, Tomcat:server在执行状态下会监视在WEB-INF/classes和Web-INF/lib文件夹CLASS文件的改运.假设监视到有class文件被更新,server自又一次载入Web应用
3>cookies:指定是否通过Cookies来支持Session,默认值为true
4>useNaming:指定是否支持JNDI,默认值为了true <Connector>元素
由Connector:接口定义.元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客户返回响应结果.
第一个Connector:元素定义了一个HTTP Connector,它通过8080port接收HTTP请求;
第二个Connector:元素定义了一个JD Connector,它通过8009port接收由其他server转发过来的请求.
属性
1> className:指定实现Connector接口的类
2> enableLookups:假设设为true,表示支持域名解析,能够把IP地址解析为主机名.WEB应用中调用request.getRemoteHost方法返回客户机主机名.默认值为true
3> redirectPort:指定转发port.假设当前port仅仅支持non-SSL请求,在须要安全通信的场命,将把客户请求转发至SSL的redirectPortport
HttpConnector元素的属性
1>className:实现Connector的类
2>port:设定Tcp/IPport,默认值为8080,假设把8080改成80,则仅仅要输入http://localhost就可以 由于TCP/IP的默认port是80
3>address:假设server有二个以上ip地址,此属性能够设定port监听的ip地址.默认情况下,port会监听server上全部的ip地址
4>bufferSize:设定由port创建的输入流的缓存大小.默认值为2048byte
5>protocol:设定Http协议,默认值为HTTP/1.1
6>maxThreads:设定在监听port的线程的最大数目,这个值也决定了server能够同一时候响应客户请求的最大数目.默认值为200
7>acceptCount:设定在监听port队列的最大客户请求数量,默认值为10.假设队列已满,客户必须等待.
8>connectionTimeout:定义建立客户连接超时的时间.假设为-1,表示不限制建立客户连接的时间
-->
Tomcat之虚拟主机配置以及web应用配置的更多相关文章
- 二十二. 安装部署Tomcat服务器、使用Tomcat部署虚拟主机、使用Varnish加速Web
web proxy web1 web2 1.安装部署Tomcat服务器 web1 1.1 使用RPM安装JDK环境 ]# yum -y install java-1.8.0-openjdk ]# ...
- tomcat建立虚拟主机
WEB浏览器与WEBserver建立连接后,除了将请求URL中的资源路径发送给WEBserver外,还会将URL中的主机名部分作为HTTP请求消息的Host头发送给WEBserver.比如,在浏览器地 ...
- Tomcat定义虚拟主机案例
Tomcat定义虚拟主机案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备环境 1>.创建web程序的根目录 [root@yinzhengjie ~]# mkdir ...
- 高级运维(四):Nginx常见问题处理、安装部署Tomcat服务器、使用Tomcat部署虚拟主机
一.Nginx常见问题处理 目标: 本案例要求对Nginx服务器进行适当优化,以提升服务器的处理性能: 1> 不显示Nginx软件版本号 2> 如果客户端访问服务器提示“Too many ...
- 自学Aruba6.1-基本网络参数配置(web页面配置)
点击返回:自学Aruba之路 自学Aruba6.1-基本网络参数配置(web页面配置) 1 配置VLAN 1.1 新建VLAN Configuration---VLANs中,VLANID选项卡下的A ...
- [svc]tomcat目录结构/虚拟主机/nginx反向代理cache配置
tomcat目录文件 /usr/local/tomcat/bin/catalina.sh stop sleep 3 /usr/local/tomcat/bin/catalina.sh start to ...
- Tomcat的虚拟主机的配置
比如:配置一个虚拟主机的名字是www.sina.com 1 改动window系统中的HOST文件[C:\WINDOWS\system32\drivers\etc\hosts] 127.0.0.1 ...
- Lighttpd虚拟主机和多域名的配置
lighttpd是个轻巧的web服务器组件,在linux系统上较为流行,功能能满足一般网站的需求(虚拟主机,伪静态,防盗链等),而跑起来负载却低于apache. 一般网站地址的形式为www.xxx.c ...
- tomcat部署虚拟主机-搭建两个应用以及httpd和Nginx的反向代理
实验环境:CentOS7 前提:已经安装好tomcat,未安装请查看http://www.cnblogs.com/wzhuo/p/7111135.html: 目的:基于主机名访问两个应用: [root ...
随机推荐
- poj2728 Desert King(最小生成树+01分数规划=最优比率生成树)
题意 n个点完全图,每个边有两个权值,求分数规划要求的东西的最小值. (n<=1000) 题解 心态炸了. 堆优化primT了. 普通的就过了. 我再也不写prim了!!!! 咳咳 最优比率生成 ...
- tail---显示文件中的尾部内容
tail命令用于输入文件中的尾部内容.tail命令默认在屏幕上显示指定文件的末尾10行.如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题.如果没有指定文件或者文件名为“-”,则读取标准输 ...
- WHU 1540 Fibonacci 递推
武大邀请赛的网络预选赛,就去做了个签到题,居然连这个递推都没推出来,真是惭愧. 而且好久没写矩阵乘法了,来回顾一下. 题意: 求Fibonacci数列的,前n项立方和. 思路: 可以求得一下递推公式: ...
- 【Uva 11584】Partitioning by Palindromes
[Link]:https://cn.vjudge.net/contest/170078#problem/G [Description] 给你若干个只由小写字母组成的字符串; 问你,这个字符串,最少能由 ...
- ArcGIS api for javascript——鼠标悬停时显示信息窗口
描述 本例展示当用户在要素上悬停鼠标时如何显示InfoWindow.本例中,要素是查询USA州图层的QueryTask的查询结果.工作流程如下: 1.用户单击一个要素 2.要素是“加亮的”图形. 3. ...
- (hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)
题目: The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- 面对即将终止支持的server你还能做些什么
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXF1c2hp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...
- Java并发编程 - Executor,Executors,ExecutorService, CompletionServie,Future,Callable
一.Exectuor框架简介 Java从1.5版本开始,为简化多线程并发编程,引入全新的并发编程包:java.util.concurrent及其并发编程框架(Executor框架). Executor ...
- spring配置 quartz-config.xml
<!-- 配置调度程序quartz ,其中配置JobDetail有两种方式--> <!-- 使用MethodInvokingJobDetailFactoryBean,任务类可以不实现 ...
- HDU 5353 Average 贪心
就是贪心啊,不知道为啥总是不过,总是WA 方法不对吗? 将数组扩展一倍,从左到右扫描,大于平均数就给右边的,小于就从右边拿,等于就不变,记录下操作类型. 大于2直接NO,不知道哪错了,自己出了一些数据 ...