tomcat配置

Tomcat之虚拟主机配置以及web应用配置

Tomcat目录结构如下:

bin ---- 启动和关闭需要的bat文件所在的目录

conf --- 配置目录

lib --- tomcat运行时需要的jar包所在的目录

logs --- 运行时产生的日志信息所在的目录

temp --- tomcat运行时产生的临时文件存放的目录,不需要我们管理

webapps --- 开发中最常用的目录,web应用放置到此目录下浏览器可以直接访问

work --- 工作目录,tomcat运行时产生的工作文件存放在这个目录中

一、基本概念

虚拟主机的简单理解:

在一台Tomcat服务器中可以同时管理多个站点,即可以将多个站点配置在同一台Tomcat服务器上,而对于用户(浏览器)而言,是不知道具体哪些网站是布置在同一台Tomcat(服务器)之上的,对于用户(浏览器)而言,每个站点都像是运行在各自独立的服务器上。此时每个网站就是运行在同一台这是服务器中各自对应的虚拟主机上。此时,简单的理解,每个网站就可以认为是一个虚拟主机。

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在运行的情况下,自动载入应用

实例代码:

[html] view plaincopy

<embed id="ZeroClipboardMovie_1" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

  1. </pre><pre>

[html] view plaincopy

<embed id="ZeroClipboardMovie_2" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <Server port="8005" shutdown="SHUTDOWN">

  3. <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>

  4. <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>

  5. <Listener className="org.apache.catalina.core.JasperListener"/>

  6. <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>

  7. <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>

  8. <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

  9. <GlobalNamingResources>

  10. <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"/>

  11. </GlobalNamingResources>

  12. <Service name="Catalina">

  13. <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

  14. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

  15. <Engine defaultHost="localhost" name="Catalina">

  16. <Realm className="org.apache.catalina.realm.LockOutRealm">

  17. <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>

  18. </Realm>

  19. <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">

  20. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/>

  21. <Context docBase="D:\apache-tomcat-7.0.63\wtpwebapps\Cabinet_WS" path="/Cabinet_WS" reloadable="true" source="org.eclipse.jst.jee.server:Cabinet_WS"/>

  22. </Host>

  23. <Host appBase="mywebapps" autoDeploy="true" name="www.google.com" unpackWARs="true">

  24. </Host>

  25. </Engine>

  26. </Service>

  27. </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应用的几种方式:

方式一:这种配置方式需要重启服务器不推荐

在tomcat安装目录/conf/Server.xml的<Host>标签中,配置<Context>标签,就可以为该虚拟主机配置一个web应用了

缺省web应用设置:

如果将path设置为空则这个web应用为缺省web应用

示例代码如下:加粗部分

[html] view plaincopy

<embed id="ZeroClipboardMovie_3" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_3" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=3&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <Server port="8005" shutdown="SHUTDOWN">

  3. <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>

  4. <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>

  5. <Listener className="org.apache.catalina.core.JasperListener"/>

  6. <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>

  7. <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>

  8. <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

  9. <GlobalNamingResources>

  10. <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"/>

  11. </GlobalNamingResources>

  12. <Service name="Catalina">

  13. <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

  14. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

  15. <Engine defaultHost="localhost" name="Catalina">

  16. <Realm className="org.apache.catalina.realm.LockOutRealm">

  17. <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>

  18. </Realm>

  19. <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">

  20. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/>

  21. <Context docBase="D:\apache-tomcat-7.0.63\wtpwebapps\HelloWord" path="/HelloWord" reloadable="true" />

  22. </Host>

  23. </Engine>

  24. </Service>

  25. </Server>

[html] view plaincopy

<embed id="ZeroClipboardMovie_4" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_4" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=4&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

  1. </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

|

方式二、这种配置方式不需要重启服务器,推荐使用

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文件中写入如下代码:

[html] view plaincopy

<embed id="ZeroClipboardMovie_5" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_5" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=5&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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文件的详细配置说明如下:

[html] view plaincopy

<embed id="ZeroClipboardMovie_6" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_6" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=6&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

  1. <Server port="8005" shutdown="SHUTDOWN">

  2. <Listener className="org.apache.catalina.core.AprLifecycleListener" />

  3. <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />

  4. <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  5. <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>

  6. <GlobalNamingResources>

  7. <Environment name="simpleValue" type="java.lang.Integer" value="30"/>

  8. <Resource name="UserDatabase" auth="Container"

  9. type="org.apache.catalina.UserDatabase"

  10. description="User database that can be updated and saved"

  11. factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

  12. pathname="conf/tomcat-users.xml" />

  13. </GlobalNamingResources>

  14. <Service name="Catalina">

  15. <Connector port="8080" protocol="HTTP/1.1"

  16. connectionTimeout="20000"

  17. redirectPort="8443" />

  18. <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"

  19. maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

  20. clientAuth="false" sslProtocol="TLS" />

  21. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

  22. <Engine name="Catalina" defaultHost="localhost">

  23. <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

  24. resourceName="UserDatabase"/>

  25. <Host name="localhost" appBase="webapps"

  26. unpackWARs="true" autoDeploy="true"

  27. xmlValidation="false" xmlNamespaceAware="false">

  28. <Context path="/demm" docBase="E:\projects\demm\WebRoot" debug="0" reloadable="true" >

  29. </Context>

  30. </Host>

  31. </Engine>

  32. </Service>

  33. </Server>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,123评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,031评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,723评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,357评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,412评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,760评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,904评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,672评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,118评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,456评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,599评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,264评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,857评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,731评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,956评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,286评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,465评论 2 348

推荐阅读更多精彩内容