基于tomcat配置文件server.xml详解

2019-10-18 16:18:39刘景俊

1. 入门示例:虚拟主机提供web服务

该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改$CATALINA_HOME/conf/server.xml文件为如下内容即可。其中大部分都采用了默认设置,只是在engine容器中添加了两个Host容器。

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
 <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
 <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
 <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
 <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

 <GlobalNamingResources>
 <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 name="Catalina">
 <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" enableLookups="false" />
 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
 <Engine name="Catalina" defaultHost="localhost">
  <Realm className="org.apache.catalina.realm.LockOutRealm">
  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    resourceName="UserDatabase" />
  </Realm>

<!-- 从此处开始添加以下两个Host容器作为虚拟主机 -->
  <Host name="www.longshuai.com" appBase="/www/webapps/longshuai"
   unpackWARs="true" autoDeploy="true">
   <Context path="" docBase="/www/webapps/longshuai" reloadable="true" />
   <Context path="/xuexi" docBase="xuexi" reloadable="true" />
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="longshuai_access_log" suffix=".txt"
    pattern="%h %l %u %t "%r" %s %b" />
  </Host>
  <Host name="www.xiaofang.com" appBase="/www/webapps/xiaofang"
   unpackWARs="true" autoDeploy="true">
   <Context path="" docBase="/www/webapps/xiaofang" reloadable="true" />
   <Context path="/xuexi" docBase="xuexi" reloadable="true" />
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="xiaofang_access_log" suffix=".txt"
    pattern="%h %l %u %t "%r" %s %b" />
  </Host>
  <Host name="localhost" appBase="webapps"
   unpackWARs="true" autoDeploy="true">
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="localhost_access_log" suffix=".txt"
    pattern="%h %l %u %t "%r" %s %b" />
  </Host>
 </Engine>
 </Service>
</Server>

除了engine中定义的默认localhost虚拟主机,另外布置了两个虚拟主机www.longshuai.com和www.xiaofang.com,它们的程序目录分别为/www/longshuai和/www/xiaofang,所以需要提前建立好这两个目录。另外,在context中定义了docBase,对于uri路径/xuexi,它的文件系统路径为/www/{longshuai,xiaofang}/xuexi目录,所以也要在上面两个程序根目录中定义好xuexi目录。除此之外,还分别为这3个虚拟主机定义了日志,它们的路径为相对路径logs,相对于$CATALINA_HOME。