本书对应Tomcat6.0。
l 先安装配置好相应版本的Java,安装配置tomcat。各个操作系统上安装tomcat的方法介绍,测试安装成功:浏览器输入http://localhost:8080。
l 执行Tomcat的脚本。
l Catalina脚本的启动参数。
l Tomcat的环境变量。
l 不同操作系统下Tomcat的启动与停止与重启与自动启动。不同的Tomcat实例需要占用不同的Http端口。
安装jdk====================================================
sudo tar -zxvf jdk-7u80-linux-x64.tar.gz
/home/vivoadmin/jdk1.7.0_80
环境变量
vim ~/.bashrc
使用vim命令操作i进入编辑,esc退出编辑,:q退出,:wq保存并退出,:w保存,:q!不保存退出
gg:命令将光标移动到文档开头
G:命令将光标移动到文档末尾
搜索:/字符串 或者 ?字符串
文件末尾加入:并保存
#set oracle jdk environment
exportJAVA_HOME=/home/vivoadmin/jdk1.7.0_80
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
使环境变量生效:
source ~/.bashrc
设置系统默认jdk 版本(可不做)
sudo update-alternatives --install/usr/bin/java java /usr/lib/jvm/jdk1.7.0_60/bin/java 300
sudo update-alternatives --install /usr/bin/javacjavac /usr/lib/jvm/jdk1.7.0_60/bin/javac 300
sudo update-alternatives --install/usr/bin/jar jar /usr/lib/jvm/jdk1.7.0_60/bin/jar 300
sudo update-alternatives --install/usr/bin/javah javah /usr/lib/jvm/jdk1.7.0_60/bin/javah 300
sudo update-alternatives --install/usr/bin/javap javap /usr/lib/jvm/jdk1.7.0_60/bin/javap 300
测试jdk:
java -version
安装tomcat=========================================
tar -zvxf apache-tomcat-7.0.81.tar.gz
vim ~/.bashrc
末尾添加:
#set apache tomcat environment
exportCLASSPATH=$CLASSPATH:%JAVA_HOME/lib/tools.jar
exportTOMCAT_HOME=/home/vivoadmin/apache-tomcat-7.0.81
export CATALINA_HOME=$TOMCAT_HOME
export PATH=$PATH:$TOMCAT_HOME/bin
source ~/.bashrc
配置jdk目录:
vim apache-tomcat-7.0.81/bin/catalina.sh
在apache-tomcat-7.0.81/bin下启动tomcat:
./startup.sh
关闭则为:
./shutdown.sh
检测tomcat是否在运行:
ps -ef|grep tomcat
查看tomcat控制台输出:进入tomcat/logs/文件夹下
tail -f catalina.out
http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin
http://download.oracle.com/otn/java/jdk/7u80-b15/jdk-7u80-linux-x64.tar.gz
l 重定向Web应用程序的目录。
l 更改8080端口号:server.xml中Connector元素的port。
l 将端口80的TCP连接传递给端口8080:linux下iptables –t nat –L查看端口情况。
l Java VM配置。
l 变换JSP编译器。
l 管理域、角色、用户:UserDatabaseRealm、JDBCRealm、JNDIRealm、JAASRealm。
l 容器管理的安全防护:基本验证(http base64用户口令,web.xml),摘要验证(http摘要编码用户口令,web.xml),表单验证,Client-cert验证(数字证书,ssl)。
l 单次签名。
l 控制会话。StandardManager将会话持续性存储在文件系统上的内嵌程序代码。PersistentManager将会话存入session store也可配置成FileStore、JDBCStore的。
l 三种场合:把解包的webapp目录部署到同一台机器的Tomcat实例中;在同一台机器上将WAR文件部署到Tomcat中;通过连接到Manger webapp的TCP网络把解包webapp目录或者WAR文件部署到Tomcat实例(本地或者远程)中。
l Server.xml Context部署,配置server.xml以辨认、启动和管理Web应用程序,对每个新增的Web应用程序,这是推荐的设置Tomcat的方法。可配置成8080即可访问不需要应用名的方式。
l Context Xml片段文件部署,区别于server.xml配置,从而不需要频繁地修改server.xml,但是Context不包含的元素则还是需要修改server.xml。
l 热部署:Host设置autoDeploy="true",且deployOnStartup="false",创建
l Manager部署以及Ant自动部署。
l 调校服务器是相当复杂的艺术,包括测量、了解、改变与再次测量等。基本步骤:1、决定需要测量的对象;2、决定测量的方式;3、测量;4、从测量结果中了解其含义;5、以预期会提升测量结果的方式来修补系统设置;6、测量并与之前的测量结果比较;7、回到第4步。
l 测量Web服务器的性能。测试程序应该与tomcat机器通信隔离。需要考虑的很多问题以及选择。
l 测试负载的工具:http://softwareqatest.com/qatweb1.html,包括Apache Benchmark、Siege、Apache Jakarta的Jmeter。如果要确定服务器每秒最多能成功处理多少请求,那么使用Apache Benchmark或者Siege,否则使用Jmeter就能满足很多需求且有图形界面。ab下载:https://www.apachehaus.com/cgi-bin/download.plx对应的x64版本,官方文档:http://httpd.apache.org/docs/2.4/programs/ab.html。
l Tomcat连接器和Apache httpd连接器模块:Tomcat提供了三种不同的服务器设计实现方法:以服务于HTTP,并实现与服务于AJP三种设计方法相同的设计方法:JIO(java.io)、APR(ApachePortable Runtime)、NIO(java.nio)
l 关闭DNS查询:当Web应用程序想要记录客户端的信息时可以记录其IP地址或者DNS中查询真正的主机名会产生耗时和延迟,server.xml的Connector中设置enablelookups="false"以关闭DNS查询。Tomcat外其实可以查到主机名。
l 调整线程数:Connector的minThreads和maxThreads可尝试不同的值来仿真查看响应时间和内存占用情况,没有现成规则只能靠实践和经验。
l 预编译JSP。
l 容量规划:通过研究及(或)预测网站必须处理的总网络流量,决定可接受的服务质量与寻找满足或超越服务器软件需求,来预测网站所需的计算机硬件、操作系统与带宽的活动。这里的计算机软件包括Tomcat以及在Tomcat前端使用的第三方Web服务器与负载均衡器。可理解为符合网站预期流量大小的硬件与带宽。分为经验式和学术式(如企业容量规划)。
l 额外的资源:《Java Performance Tuning》。
l 略。
l 操作系统安全防护,配置网络,多台服务器的安全防护模式,使用SecurityManager,授予文件权限,设置Tomcat chroot Jail。
l 过滤黑客攻击:XSS、HTML注入、SQL注入、命令注入。
l HTTP请求过滤,BadInputValve,BadInputFilter。
l 使用SSL,Tomcat设置SSL连接器。
l server.xml:Tomcat主配置文件;web.xml:servlet与其他适用于整个web应用程序设置的配置文件,必须符合servlet规范的标准格式;tomcat-user.xml:Tomcat的UserDatabaseRealm用于认证的默认角色、用户以及密码清单;catalina.policy:Tomcat的Java安全防护策略文件;context.xml:默认的context设置,应用于安装了Tomcat的所有主机的所有部署内容。
l server.xml:元素:Server(根元素代表Tomcat自己),Service,Executor(用于Connector共享线程池),Connector(一个Web服务器),Engine,Cluster(多个tomcat实例之间),Host,Alias,Context(Web应用程序),Realm(用户与角色),Valve(处理过滤),Manager(管理会话),Listener(处理lifecycle),Resources,Resource,ResourceEnvRef,ResourceLink,WatchedResource,GlobalNamingResources,Environmentsetting,Store,Transactionsetting,Channel,Membership,Sender,Transport,Receiver,Inspector,Member,Deployer,ClusterListener。
l Connector属性:acceptCount队列可等待最大连接数,address,algorithm,allowTrace,bufferSize(使用的内存数为buffersize*maxThread),ciphers,clientAuth,compression,compressableMimeTypes,connectionLinger(Connector关闭了客户端socket连接后延长一定时间),connectionTimeout,connectionUploadTimeout,disableUploadTimeout,emptySessionPath,executor,keepAliveTimeout,keyAlias,keystoreFile,keystorePass,keystoreType,maxHttpHeaderSize,maxKeepAliveRequests,maxPostSize,maxSavePostSize,maxSpareThreads,maxThreads(并发运行的请求处理线程最大数,太大太小都会延长响应时间),minSpareThreads,noCompressionUserAgents,port,protocol(可为HTTP/1.1、AJP/1.3、org.apache.coyote.http11.Http11Protocol、org.apache.coyote.http11.Http11AprProtocol、org.apache.jk.server.JkCoyoteHandler、org.apache.coyote.ajp.AjpAprProtocol、org.apache.coyote.http11.Http11NioProtocol),proxyName,proxyPort,redirectPort,restrictedUserAgents,schema(http或https),secure,SSLEnabled,sslProtocol,tcpNoDelay(是否开启nagle算法),threadPriority,truststoreFile,truststorePass,truststoreType,URIEncode,userBodyEncodingForURI,usePVHost,xpoweredBy。
l Manager:共5种,StandardManager(默认),PersistentManager(空闲会话对象交换到磁盘上),DeltaManager(集群会话管理),BackupManager(复制会话变化到另一个集群实例中),SimpleTcpReplicationManager(不推荐)。
l Valve实现:AccessLogValve,ExtendedAccessLogValve,JDBCAccessLogValve,RequestDumperValve,RemoteAddrValve,RemoteHostValve,SemaphoreValve,CometConnectionManagerValve,JvmRouteBinderValve,ReplicationValve,SingleSignOn,ClusterSingleSignOn。
l Cluster:集群,运行两个以上的 Tomcat节点并复制节点之间的会话状态以及潜在的context属性状态。可含Channel、Membership、Receiver、Sender、Transport、Interceptor(DomainFilterInterceptor、FragmentationInterceptor、GzipInterceptor、MessageDispatchInterceptor、MessageDispatch15Interceptor、OrderInterceptor、StaticMembershipInterceptor、TcpFailureDetector、ThroughputInterceptor、TwoPhaseCommitInterceptor)、Deployer。
l web.xml:Java servletcontainer都会用到,包括$CATALINA/conf下以及每个Web应用程序内,conf/web.xml会应用于所有Web应用程序。
l web-app:root元素。icon、display-name、description、distributable、context-param、filter(通用过滤机制,含init-param)、filter-mapping(把过滤器调用映射为servlet名或URL模式)、listener、servlet(短名、类名及servlet的可选项)、servlet-mapping(为servlet指定非缺省的URL)、session-config(指定session配置,session超时才指定)、mime-mapping(服务器上文件的MIME类型)、welcom-file-list、error-page、jsp-config(所有jsp全局配置、taglib、jsp-property-group)、resource-ref(给对象引用JNDI factory)、resource-env-ref、message-destination、message-destination-ref、security-constraint(要求认证)、login-config(登录机制)、security-role(与security-constraint配套使用)、service-ref(Web服务的引用)、env-entry(静态对象的JNDI查询)、ejb-ref、ejb-local-ref、locale-encoding-mapping-list。
l jsp-property-group子元素:url-pattern、page-encoding、is-xml、el-ignored、scripting-invalid、include-prelude、include-coda、deferred-syntax-allowed-as-literal、trim-derective-whitespaces。
l tomcat-user.xml:用户名、角色和密码的清单。根元素为tomcat-user,role(rolename),user(name、password、roles)。
l catalina.policy:安全防护的配置文件,有JVM读取,有-security选项调用Tomcat的时候才会用到。
l catalina.properties:类加载器路径、安全防护包列表以及一些可调校的性能属性。可自定义属性然后再server.xml中用到,如http.port=80,在server.xml中用port="${http.port}"方式引用。
l context.xml:全局context设置。
l 解读日志文件:日志级别等设置在conf/loggin.properties。
l 猎寻错误:catalina.out日志文件有助于排查故障。
l 用RequestDumperValve来调试:在server.xml中加入
l 无法停止tomcat的疑难排解。
l 略。
l 集群技术:DNS请求分配(经由Apache httpd和mod_proxy),TCP网络地址转换(TCP NAT请求分配),Mod_proxy_balancer负载均衡与故障复原,JDBC请求分布与故障复原。
l 分布式Java Servlet Container:会话亲和(Session Affinity,相同会话请求由相同Tomcat实例处理),会话复制(Replicated Session,有多种复制方式)。
l 配置和测试IP多播。
l 配置完全复制(All To All)。
l 配置静态成员关系。
l 配置主/备复制。
l 其他资源:高可靠性软件,消息定位中间键,数据库集群,商业HA硬件,IP多播,NFS,多种集群。
l 补充资源:Tomcat的联机文档,Apache Tomcat网站文档(http://tomcat.apache.org),Apache Tomcat邮件列表归档区(http://tomcat.apache.org/lists.html),本书的网站(http://www.oreilly.com/catalog/9780596101060,http://tomcatbook.drawinsys.com, http://tomcatbook.brittainweb.org),关于Tomcat的第三方网站。