Tomcat入门(一)
WEB站点虚拟目录server.xml
给server.xml加中文注释导致tomcat无法启动
1.配置文件改错了
2.加了中文注释(虽然xml头部声明编码为utf-8),但是在添加中文注释的时候,编辑器如editplus使用的ANSI编码进行保存的,导致tomcat解析server.xml编码不一致!
<Host name="localhost" appBase="webapps"/>
将webapps指定为WEB站点的基准目录
其下的ROOT目录将默认作为根目录(如果有)
本地文件系统的某个目录映射为一个WEB站点的虚拟目录
path="" 表示设置WEB站点的根目录
docBase 虚拟目录所映射的本地文件系统目录
可以使用绝对路径或者相对路径(相对于host元素的appBase所指定的目录)
<Context path="" docBase=""/>
设置WEB站点的虚拟子目录
1.在server.xml文件中的<host>中配置<Context>元素
如,<Context path="/myApp" docBase="/demo"/>
2.特殊目录下的XML文件中包含<Context>元素
如,E:\soft\apache-tomcat-6.0.39\conf\Catalina\localhost\manager.xml文件中包含的<Context>元素:
<Context antiResourceLocking="false" privileged="true" useHttpOnly="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>
3.<Host>元素的appBase属性所指向的目录("webapps"),所包含的目录中包含WEB-INF/web.xml的那些子目录
如,WEB-INF/web.xml在 webapps/demo/目录下,则以"demo"作为该WEB站点的虚拟子目录
4.<Host>元素的appBase属性所设置的基准目录下的war文件,将以该war文件的名称作为WEB站点的虚拟目录
如,webapps/demo.war ,则该WEB站点的虚拟目录为"demo"
使用<Context>为1个文件系统目录设置多个虚拟目录
如webapps/demo.war
可以通过<Context>设置若干个虚拟目录
<Context path="path1" docBase="/demo.war"/>
<Context path="path2" docBase="/demo.war"/>
<Context path="path3" docBase="/demo.war"/>
打war包命令
E:\soft\apache-tomcat-6.0.39\webapps> jar -cvf new.war -C demo .
将webapps目录下的demo目录下的所有文件打包为war包,该war包的名称为new.war
基于主机名的WEB站点虚拟主机
<host/> 表示1个WEB站点
<Engine/>内部可以配置多个<host/>来指定多个虚拟主机
<!-- 默认主机为name="localhost"的Host -->
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<!-- 默认主机,该主机的根目录通过appBase设置为"webapps"(相对路径:相对于tomcat目录) -->
<Host name="localhost"appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
<!-- 虚拟主机:Virtual Machine A -->
<Host name="www.server.com"appBase="virtualMachineA"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="demo"/>
</Host>
</Engine>
上面的配置,通过<Host>设置了一个新的虚拟主机
name=www.server.com指定了该虚拟主机的名称
[修改hosts文件:127.0.0.1 www.server.com]
appBase="VirtualMachine" 指定该虚拟主机的根目录为相对与Tomcat目录下名称为VirtualMachine的目录
接着,在<Host>内部,通过<Context>设置该WEB站点的根目录
path="" 表示设置WEB站点的根目录,然后通过docBase="demo"指定根目录为"demo"
这里的"demo"也是一个相对路径的写法,它是相对于appBase属性所指向的目录
即,docBase="demo" 等效于 docBase="apache-tomcat-6.0.39\virtualMachineA\demo"
【也可以使用Tomcat的默认机制,在WEB站点下直接创建ROOT目录,该目录将自动被解析为根目录,前提是没有另外设置path=""】
本例中的目录结构大概如下:
apache-Tomcat
webapps
ROOT
oa.war
VirtualMachine
ROOT
index.html
demo
index.html
当访问http://localhost:8080/时
将打开Tomcat默认的主页,也就是webapps下的ROOT目录中的index.html
当访问http://www.server.com:8080/时
将打开VirtualMachine下的demo目录下的index.html
<!-- 通过1个Service标签,封装多个Connector与1个Engine,这样,Connector就有了对应的Engine匹配 -->
<Service name="Catalina">
<!-- Connector负责不同端口的监听,1个Connector监听1个端口号 -->
<Connector port="8080"/>
...
<Connector port="8009"/>
<!-- 每个Connector都需要有1个Engine进行处理 -->
<Engine name="Catalina" defaultHost="localhost">
<!-- 1个Engine下面可以配置多个Host -->
<Host name="localhost"/>
...
<Host name="www.server.com">
<!-- 1个Host中可以配置多个Context -->
<Context/>
<Context/>
<Context path="" docBase="demo"/>
</Host>
</Engine>
</Service>
页:
[1]