讀書筆記_Tomcat權威指南第2版

本書對應Tomcat6.0。

第1章 Tomcat的開幕式 

l  先安裝配置好相應版本的Java,安裝配置tomcat。各個操作系統上安裝tomcat的方法介紹,測試安裝成功:瀏覽器輸入http://localhost:8080

l  執行Tomcat的腳本。

l  Catalina腳本的啓動參數。

l  Tomcat的環境變量。

l  不同操作系統下Tomcat的啓動與停止與重啓與自動啓動。不同的Tomcat實例需要佔用不同的Http端口。

Ubuntu命令行服務器下的一個Tomcat安裝實踐:

安裝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

第2章 配置Tomcat

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的。

第3章 在Tomcat中部署Servlet與JSP Web應用程序

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",創建<Context>嵌套到可進行熱部署的<Host>中,將war文件複製到可熱部署的Host的appBase中,創建一個contextXML片段文件指向解包目錄或者war文件,並將contextXML片段文件放在CATALINA_HOME/conf/[EngineerName]/[HostName]/目錄中。

l  Manager部署以及Ant自動部署。

第4章 Tomcat的性能調校

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》。

第5章 與Apache Web服務器的整合

l  略。

第6章 Tomcat安全防護

l  操作系統安全防護,配置網絡,多臺服務器的安全防護模式,使用SecurityManager,授予文件權限,設置Tomcat chroot Jail。

l  過濾黑客攻擊:XSS、HTML注入、SQL注入、命令注入。

l  HTTP請求過濾,BadInputValve,BadInputFilter。

l  使用SSL,Tomcat設置SSL連接器。

第7章 配置

l  server.xml:Tomcat主配置文件;web.xml:servlet與其他適用於整個web應用程序設置的配置文件,必須符合servlet規範的標準格式;tomcat-user.xml:Tomcat的UserDatabaseRealm用於認證的默認角色、用戶以及密碼清單;catalina.policy:Tomcat的Java安全防護策略文件;context.xml:默認的context設置,應用於安裝了Tomcat的所有主機的所有部署內容。

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。

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。

tomcat-user.xml:用戶名、角色和密碼的清單。根元素爲tomcat-user,role(rolename),user(name、password、roles)。

catalina.policy:安全防護的配置文件,有JVM讀取,有-security選項調用Tomcat的時候纔會用到。

catalina.properties:類加載器路徑、安全防護包列表以及一些可調校的性能屬性。可自定義屬性然後再server.xml中用到,如http.port=80,在server.xml中用port="${http.port}"方式引用。

context.xml:全局context設置。

第8章 調試與疑難排解

l  解讀日誌文件:日誌級別等設置在conf/loggin.properties。

l  獵尋錯誤:catalina.out日誌文件有助於排查故障。

l  用RequestDumperValve來調試:在server.xml中加入<Valve className="org.apache.catalina.valves.RequestDumperValve"/>。

l  無法停止tomcat的疑難排解。

第9章 從源代碼組件Tomcat

l  略。

第10章 Tomcat集羣

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,多種集羣。

第11章 閉幕式

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的第三方網站。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章