Tomcat--各个⽬录详解(⼆)Tomcat整体⽬录:
⼀、bin⽂件(存放启动和关闭tomcat脚本)
其中.bat和.sh⽂件很多都是成对出现的,作⽤是⼀样的,⼀个是Windows的,⼀个是Linux。
① startup⽂件:主要是检查catalina.bat/sh 执⾏所需环境,并调⽤catalina.bat 批处理⽂件。启动tomcat。  异常:打开可能有闪退的问题。原因可能有以下两点:
    1)缺少环境变量配置,startup会检查你的电脑环境变量是否有JAVA_HOME。
    2)已经开启了Tomcat容器,再次开启端⼝号会被占⽤。
      java.BindException: Address already in use: JVM_Bind
② catalina⽂件:真正启动Tomcat⽂件,可以在⾥⾯设置jvm参数。
  异常:可能出现内存溢出错误可以考虑修改它
    1)java.lang.OutOfMemoryError: Java heap space
      Tomcat默认可以使⽤的内存为128MB,在较⼤型的应⽤项⽬中,这点内存是不够的,从⽽导致客户端显⽰500错误。        Windows环境下修改catalina.bat⽂件,在⽂件开头增加如下设置:set JAVA_OPTS=-Xms256m -Xmx512m
      Linux环境下修改catalina.sh⽂件,在⽂件开头增加如下设置:JAVA_OPTS=’-Xms256m -Xmx512m’
      其中,-Xms设置初始化内存⼤⼩,-Xmx设置可以使⽤的最⼤内存。
    2) java.lang.OutOfMemoryError: PermGen space
      PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM
      存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的
      Heap区域不同,GC(Garbage Collection)不会在主程序运⾏期对PermGen space进⾏清理,所以如果你的应⽤
      中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进⾏pre compile的
      时候。如果你的WEB APP下⽤了⼤量的第三⽅jar, 其⼤⼩超过了jvm默认的⼤⼩(4M)那么就会产⽣此错误信息了
jsp编译过程
    解决⽅法:
      在catalina.bat的第⼀⾏增加:(Windows)
      set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -
      XX:MaxPermSize=256m
      在catalina.sh的第⼀⾏增加:(Linux)
      JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -
      XX:MaxPermSize=256m
③ shutdown⽂件:关闭Tomcat
④ Tomcat8⽂件:相当于控制台直接输⼊startup
④ Tomcat8w⽂件:图像化控制Tomcat
如果想启动Tomcat,就点击Start。终⽌就点击Stop。
  异常:点击Tomcat8和Tomcat8w的时候出现错误
  解决:在命令⾏执⾏ service.bat install(必须在bin⽂件⽬录下执⾏),再点击就OK了。
⼆、conf⽂件(存放tomcat的配置⽂件)
① Catalina⽂件:⽤于存储⾃定义部署Web应⽤的路径(上⼀节详细阐述到了,如何部署)
② l:
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!-- Server代表⼀个 Tomcat 实例。可以包含⼀个或多个 Services,其中每个Service都有⾃⼰的Engines和Connectors。
4      port="8005"指定⼀个端⼝,这个端⼝负责监听关闭tomcat的请求
5-->
6<Server port="8005" shutdown="SHUTDOWN">
7<!-- -->
8<Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
9<Listener className="org.AprLifecycleListener" SSLEngine="on"/>
10<Listener className="org.JreMemoryLeakPreventionListener"/>
11<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
12<Listener className="org.ThreadLocalLeakPreventionListener"/>
13<!-- 全局命名资源,定义了UserDatabase的⼀个JNDI(java命名和⽬录接⼝),通过pathname的⽂件得到⼀个⽤户授权的内存数据库 --> 14<GlobalNamingResources>
15<Resource name="UserDatabase" auth="Container"
16              type="org.apache.catalina.UserDatabase"
17              description="User database that can be updated and saved"
18              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
19              pathname="l"/>
20</GlobalNamingResources>
21<!-- Service它包含⼀个<Engine>元素,以及⼀个或多个<Connector>,这些Connector元素共享⽤同⼀个Engine元素 -->
22<Service name="Catalina">
23<!--
24每个Service可以有⼀个或多个连接器<Connector>元素,
25第⼀个Connector元素定义了⼀个HTTP Connector,它通过8080端⼝接收HTTP请求;第⼆个Connector元素定
26义了⼀个JD Connector,它通过8009端⼝接收由其它服务器转发过来的请求.
27-->
28<Connector port="8080" protocol="HTTP/1.1"
29                connectionTimeout="20000"
30                redirectPort="8443"/>
31<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
32<!-- 每个Service只能有⼀个<Engine>元素 -->
33<Engine name="Catalina" defaultHost="localhost">
34<Realm className="org.alm.LockOutRealm">
35<Realm className="org.alm.UserDatabaseRealm"
36                resourceName="UserDatabase"/>
37</Realm>
38<!-- 默认host配置,有⼏个域名就配置⼏个Host,但是这种只能是同⼀个端⼝号 -->
39<Host name="localhost"  appBase="webapps"
40            unpackWARs="true" autoDeploy="true">
41  <!-- Tomcat的访问⽇志,默认可以关闭掉它,它会在logs⽂件⾥⽣成localhost_access_log的访问⽇志 -->
42<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
43                prefix="localhost_access_log" suffix=".txt"
44                pattern="%h %l %u %t "%r" %s %b"/>
45</Host>
46<Host name="www.hzg"  appBase="webapps"
47            unpackWARs="true" autoDeploy="true">
48<Context path="" docBase="/myweb1"/>
49<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
50                prefix="hzg_access_log" suffix=".txt"
51                pattern="%h %l %u %t "%r" %s %b"/>
52</Host>
53</Engine>
54</Service>
55</Server>
③ l:配置Tomcat的server的manager信息
1<?xml version="1.0" encoding="UTF-8"?>
2<tomcat-users xmlns="/xml"
3              xmlns:xsi="/2001/XMLSchema-instance"
4              xsi:schemaLocation="/xml tomcat-users.xsd"
5              version="1.0">
6<role rolename="manager-gui"/>
7<user username="manager" password="manager" roles="manager-gui"/>
8</tomcat-users>
三、lib⽂件(存放Tomcat运⾏需要的库⽂件)
  存放Tomcat运⾏需要的库⽂件
四、logs⽂件(存放Tomcat执⾏时的LOG⽂件)
1、catalina.⽇期.log:控制台⽇志
2、commons-daemon.⽇期.log:启动、重启和停⽌对Tomcat的操作⽇志
3、host-manager.⽇期.log:Tomcat管理页⾯中的host-manager的操作⽇志
4、localhost.⽇期.log:Web应⽤的内部程序⽇志
5、localhost_access_log.⽇期:⽤户请求Tomcat的访问⽇志(这个⽂件在l⾥配置)
6、manager.⽇期.log:Tomcat管理页⾯中的manager app的操作⽇志。
五、temp⽂件(存放Tomcat执⾏时的临时⽂件)
  temp⽬录⽤户存放tomcat在运⾏过程中产⽣的临时⽂件。(清空不会对tomcat运⾏带来影响)
六、webapps⽂件(存放Tomcat的应⽤⽂件)
  webapps⽬录⽤来存放应⽤程序,当tomcat启动时会去加载webapps⽬录下的应⽤程序。可以以⽂件夹、war包、jar包的形式发布应⽤。
  当然,你也可以把应⽤程序放置在磁盘的任意位置,在配置⽂件中映射好就⾏。
七、work⽂件(存放Tomcat运⾏时产⽣的class⽂件)
  work⽬录⽤来存放tomcat在运⾏时的编译后⽂件,例如JSP编译后的⽂件。清空work⽬录,然后重启tomcat,可以达到清除缓存的作⽤。
-------------------------------------------------------------------------------------------------------------------------