[bigdata-080] tomcat 8.5 官方文档 摘要

1. 官网地址
http://tomcat.apache.org/tomcat-8.5-doc/index.html


2. 介绍
$CATALINA_HOME  这个目录就是tomcat的安装目录
$CATALINA_BASE是一个目录,这个目录是每一个实例的安装目录




3. 在linux下安装和启动
http://tomcat.apache.org/tomcat-8.5-doc/RUNNING.txt


3.1 需要安装jre7或者更高


3.2 配置环境变量
tomcat是java程序,不需要环境变量。tomcat的启动脚本需要环境变量。
需要配置如下环境变量:
3.2.1 CATALINA_HOME:tomcat的安装目录
3.2.2 CATALINA_BASE:这个环境变量指定了"active configuration"的tomcat的根目录,默认情况下等于CATLINA_HOME。
对tomcat,分开使用CATALINA_HOME和CATALINA_BASE,便于简化升级和维护。
3.2.3 JAVA_HOME或者JRE_HOME:这是jdk或者jre的安装目录
3.2.4 CATALINA_OPTS:很少使用,这是起停tomcat和其他命令的附加参数。
3.2.5 CATALINA_PID:这个是tomcat的pid文件所在位置


3.3 setenv脚本
除了CATALINA_HOME和CATALINA_BASE,所有环境变量都由setenv脚本指定。


3.4 启动tomcat
$CATALINA_HOME/bin/startup.sh
$CATALINA_HOME/bin/catalina.sh start
启动后,tomcat默认的web服务位于 http://localhost:8080


3.5 关闭tomcat
$CATALINA_HOME/bin/shutdwon.sh
$CATALINA_HOME/bin/catalina.sh stop


3.6 多tomcat实例配置
通常,在机器上有一个tomcat二进制安装包,但多个用户可以使用--使用方式是,设置CATALINA_BASE。
如果同时配置CATALINA_HOME和CATALINA_BASE,这两个目录下的内容分别如下
CATALINA_BASE目录下有bin,conf,lib,logs,webapps,work,temp
CATALINA_HOME目录下有bin和lib目录
注意:
3.6.1 CALTALINA_BASE/lib和CATALINA_HOME/lib下的jar都会被加入到classpath,但CATALINA_BASE的是先加入且先被搜索。行规是:CATALINA_HOME/lib下放tomcat的标准库,CATALINA_BASE/lib放各种第三方库比如数据库驱动。但是,最好的建议是,不要在不同的web应用下共享各种jar包,而是要把它们分别放在WEB-INF/lib目录下。
3.6.2 CATALINA_BASE/bin目录,只有setenv.sh和tomcat-juli.jar这两个文件,但CATALINA_HOME/bin下面有各种起停脚本文件,如果CATALINA_BASE/bin目录下没有setenv.sh和tomcat-juli.jar这两个文件,就使用CATALINA_HOME/bin下的这两个文件。
3.6.3 CATALINA_HOME和CATALINA_BASE可以在xml里配置读取。




3.7 注意事项
在单例tomcat上,只有两个事情可能会出错:
3.7.1 tomcat默认端口是8080,如果两个web应用的端口都是8080,那么会冲突,需要修改$CATALINA_HOME/conf/server.xml
3.7.2 'localhost'机器找不到,这里要检查代理,可能是因为你的服务器使用了代理。


3.8 可选组件
tomcat native libary和commons deamon service launcher。
新人可以不用考虑它们。






4. 第一个webapp
4.1 一个标准webapp的目录层次
*.html、*.jsp等,html和jsp页面,需要放在不同的目录里,如果是小项目,放在同一个目录也可以。
/WEB-INF/web.xml,web应用部署描述 web application deployment descriptor,这个文件描述servlet和其他组件,这些组件组成应用。包括初始化参数,以及容器安全管理等等。
/WEB-INF/classes/,应用所需的所有java类都在这里,包括serverlet和非servelet,都会打包成jar文件,
/WEB-INF/lib,第三方jar放在这里。


4.2 如何部署
4.2.1 将未打包的文件直接copy到$CATALINA_BASE/webappps,tomcat会自动启动这个web服务。我们可以使用build.xml下使用这个技术,因为这个是最快最容易的部署方式。


4.2.2 把jar包文件放到$CATALINA_BASE/webapps,tomcat启动后,会自动将jar包解压缩展开,然后执行应用。注意,如果你用这种方法更新web应用,需要同时删除jar文件和展开的目录,然后再重启tomcat。


4.2.3 如果使用tomcate的管理功能,也就是tomcat的/manager,你可以部署和删除应用且不需要重启。


4.2.4 还有一个就是,tomcat热部署,有若干中解决方案。


4.3 一个基于ant的第一个webapp
4.3.1 目录结构
docs/ 文档
src/ java源码
web/ 静态的文件,比如html, jsp, javascript, css, images
web/WEB-INF web应用所需的特定的配置文件,包括web.xml。
在构建过程里,又会有如下两个目录
build/ 这个目录饱含webapp的所有东西
dist/ 执行ant dist会创建webapp所有东西,好扩license信息,文档,readme文件。




4.4 部署
将sample.war扔到webapps里,几秒内自动解压缩生效,可以在浏览器里看到url和对应页面; 如果删除sample.war,几秒后sample/目录也被自动删除;如果更新war包,同理。




5. 部署器deployer
5.1 tomcat manager是交互式/可编程的webapp部署和管理的java应用
http://tomcat.apache.org/tomcat-8.5-doc/manager-howto.html
此外,tomcat maven plugin也提供了许多非常方便的工具,http://tomcat.apache.org/maven-plugin.html。


5.2 webapp的静态部署没有安装需求,tomcat manager也没有任何安装需求但需要做一些配置。Tomcat client deployer(TCD)是需要安装的,具体参考这里http://tomcat.apache.org/tomcat-8.5-doc/deployer-howto.html#Deploying_using_the_Client_Deployer_Package。


5.3 context
关于webapp,有个context的概念,一个context就是tomcat称之为webapp的东西。用context descriptor配置context。一个context descriptor是一个xml文件,有各种配置,比如naming resources, session manager等等。早期,context descrptor放置在server.xml文件,但现在不鼓励这种做法。tomcate manager和tcd也引用context descriptor的配置参数。这个文件在 
$CATALINA_BASE/conf/[enginename]/[hostname]/[webappname].xml
$CATALINA_BASE/webapps/[webappname]/META-INF/context.xml


5.4 启动的tomcat时的部署
appbase,就是部署webapp的目录,默认的appbase是$CATALINA_BASE/webapps。在部署顺序上,优先级如下:
每个Context Descriptor最先部署;
每个展开的webapp被部署,这些webapp是没有被任何context descriptor引用。如果它们有一个关联的war文件,且这个war文件比它们的版本新,那么这个展开的webapp会被删除,然后部署新的基于这个war文件的应用;
每个war文件。


5.5 正在运行的tomcat的部署
如果autoDeploy的属性是true,那么它就会自动动态部署所有的被更新的webapp。这里分好几种情况,不过只需要记住war可以自动更新部署就行,其他细节用的比较少。


5.6 tomcat manger部署


5.7 tcd部署




6. manager
这里主要描述tomcat manager的使用


7. realms and AAA
这里主要是配置tomcat支持容器管理安全container managed security,基于数据库的用户/密码/用户角色管理。只有,你的webapp使用到了一个或者多个 元素或者元素才需要了解这一章,否则不需要看。




8. JNDI 资源(主要是各种xml文件配置)
tomcat提供一个jndi的initialContext初始上下文实现实例,每个webapp都在initialContext下运行。jndi兼容于java企业版应用服务器。


8.1 web.xml配置
环境变量
资源索引,比如jdbc数据源,比如javamail的session。
新版的


8.2 context.xml配置
tomcat指定的资源配置,在$CATALINA_BASE/conf/server.xml 或者 META-INF/context.xml的 元素。在有如下元素:
环境变量
资源文件
给资源文件增加一个link
事务
全局配置




8.3 如何使用资源
java代码
-----------------------
// Obtain our environment naming context
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");


// Look up our data source
DataSource ds = (DataSource)envCtx.lookup("jdbc/EmployeeDB");


// Allocate and use a connection from the pool
Connection conn = ds.getConnection();
... use this connection to access the database ...
conn.close();
-----------------------


8.4 tomcat标准资源factories
有诸多自定义的标准资源
generic javabean resources:


8.4.1 resource factory可以创建任意的java class。这里给出一个创建javabean的例子。
8.4.2 数据库账户用户名和密码关系,这个xml文件也在tomcat-users.xml里




9. jdbc datasrouces--JNDI Datasource HOW-TO
包括oracle,mysql, db2, postgre等等。
这一块,貌似不需要在这里配置了,直接在应用里配置更简单




10. Class Loader类加载器
tomcat的父子类加载器如下
   Bootstrap
          |
       System
          |
       Common
       /     \
  Webapp1   Webapp2 ...


每个类加载器,加载不同部位的类。






11. jasper 2 jsp 引擎
这个东东是必需的。
jasper2有如下特性:
jsp custom tag pooling,这个jsp custom tags可以池化和重用。
background jsp compliation,如果jsp页面发生变化,可以在background自动重编译。
recompile jsp when included page changes, 重编译jsp
jdt-eclipse的jsp的编译插件


12. ssl/tsl配置


13. ssi


14. cgi


15. proxy support


16. MBeans descriptors


17.default servlet
 


18. clustering
tomcat集群,主要是通过session进行all-to-all复制进行的。


19. load balancer
这块不用考虑


20. connectors连接器
http和ajp,不知道是什么作用


21. Monitoring and Managing监控和管理
如果需要jmx,需要设置参数。
这里有一个具体的例子,用jmx监控tomcat
http://www.cnblogs.com/dongguacai/p/5900507.html
http://www.open-open.com/lib/view/open1397359125465.html




22. Logging
主要配置在${catalina.base}/conf/logging.properties
如果不可用则 ${java.home}/lib/logging.properties 
对webapp而言,是WEB-INF/classes/logging.properties


23. Apache Portable Runtime (APR) based Native library for Tomcat
主要是用本地代码提升性能。


24. virtual hosting
虚拟主机。这里是配置虚拟主机。如果有两个hostname,也就是ren和stimpy,如何配置。
server.xml文件,配置engine,如下:

   
   

然后再创建webapps目录
mkdir $CATALINA_HOME/renapps
mkdir $CATALINA_HOME/stimpyapps


25. advanced io
异步写静态文件,可以暂时不用考虑。


26. additional components
暂时不用考虑


27. mavenized
可以在tomcat里引用maven


28. Security Considerations
安全问题。
28.1 首先,操作系统,网络,数据库等,这些非tomcat要安全
28.2 不要使用root帐号运行tomcat。要使用那些无法远程登录的账户启动tomcat。要设定tomcat各种文件的读写权限。
28.3 网络有防火墙设定。
如此等等






29. windows service
不用考虑


30. windows authenticaion
不用考虑


31. The Tomcat JDBC Connection Pool
jdbc连接池有多种选择。大型的web应用服务weblogic和websphere都提供连接池机制。tomcat也提供连接池。
连接池对象,可以在代码实例化配置参数,也可以在xml里配置,建议在xml里配置,这样代码最少。
在连接池里也可以配置拦截器interceptors


32. websocket
是一堆参数配置


33. Rewrite valve
这个功能类似apache的mod_rewrite功能。
rewrite valve可以配置在host的,也就是rewrite.config,配置方式在http://tomcat.apache.org/tomcat-8.5-doc/config/host.html。
也可以配置在webapp的context.xml文件,valve配置的rewrite.config文件,在WEB-INF目录。
rewrite.conf文件,包含一系列的待重写的目录directives


RewriteCond TestString CondPattern


举例,根据user agent,向用户返回不同的页面:
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*
RewriteRule  ^/$                 /homepage.max.html  [L]
RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
RewriteRule  ^/$                 /homepage.min.html  [L]
RewriteRule  ^/$                 /homepage.std.html  [L]













你可能感兴趣的:([bigdata-080] tomcat 8.5 官方文档 摘要)