熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

深入淺析Tomcat配置技巧 Top 10

2013-11-23 20:19:31  來源: Java開源技術 

  現在開發Java Web應用建立和部署Web內容是一件很簡單的工作使用Jakarta Tomcat作為Servlet和JSP容器的人已經遍及全世界Tomcat具有免費跨平台等諸多特性並且更新得很快現在非常的流行
  
  你所需要做的就是按照你的需求配置Tomcat只要你正確配置Tomcat一般都能適合你的要求下面是一系列關於Tomcat的配置技巧這些技巧源自於我的書《Tomcat權威指南》希望對你有所幫助—— Jason Brittain
  
  . 配置系統管理(Admin Web Application)
  大多數商業化的JEE服務器都提供一個功能強大的管理界面且大都采用易於理解的Web應用界面Tomcat按照自己的方式同樣提供一個成熟的管理工具並且絲毫不遜於那些商業化的競爭對手Tomcat的Admin Web Application最初在版本時出現當時的功能包括管理contextdata sourceuser和group等當然也可以管理像初始化參數usergrouprole的多種數據庫管理等在後續的版本中這些功能將得到很大的擴展但現有的功能已經非常實用了
  
  Admin Web Application被定義在自動部署文件CATALINA_BASE/webapps/adminxml
  (譯者注CATALINA_BASE即tomcat安裝目錄下的server目錄)
  
  你必須編輯這個文件以確定Context中的docBase參數是絕對路徑也就是說CATALINA_BASE/webapps/adminxml 的路徑是絕對路徑作為另外一種選擇你也可以刪除這個自動部署文件而在serverxml文件中建立一個Admin Web Application的context效果是一樣的你不能管理Admin Web Application這個應用換而言之除了刪除CATALINA_BASE/webapps/adminxml 你可能什麼都做不了
  
  如果你使用UserDatabaseRealm(默認)你將需要添加一個user以及一個role到CATALINA_BASE/conf/tomcatusersxml 文件中你編輯這個文件添加一個名叫admin的role 到該文件中如下
  
  <role name=admin/>
  
  你同樣需要有一個用戶並且這個用戶的角色是admin象存在的用戶那樣添加一個用戶(改變密碼使其更加安全)
  
  <user name=admin password=deep_dark_secret roles=admin/>
  
  當你完成這些步驟後請重新啟動Tomcat訪//localhost:/admin你將看到一個登錄界面Admin Web Application采用基於容器管理的安全機制並采用了Jakarta Struts框架一旦你作為admin角色的用戶登錄管理界面你將能夠使用這個管理界面配置Tomcat
  
  .配置應用管理(Manager Web Application)
  Manager Web Application讓你通過一個比Admin Web Application更為簡單的用戶界面執行一些簡單的Web應用任務
  
  Manager Web Application被被定義在一個自動部署文件中
  
  CATALINA_BASE/webapps/managerxml
  
  你必須編輯這個文件以確保context的docBase參數是絕對路徑也就是說CATALINA_HOME/server/webapps/manager的絕對路徑
  (譯者注CATALINA_HOME即tomcat安裝目錄)
  
  如果你使用的是UserDatabaseRealm那麼你需要添加一個角色和一個用戶到CATALINA_BASE/conf/tomcatusersxml文件中接下來編輯這個文件添加一個名為manager的角色到該文件中
  
  <role name=manager>
  
  你同樣需要有一個角色為manager的用戶像已經存在的用戶那樣添加一個新用戶(改變密碼使其更加安全)
  
  <user name=manager password=deep_dark_secret roles=manager/>
  
  然後重新啟動Tomcat訪//localhost/manager/list將看到一個很樸素的文本型管理界面或者訪//localhost/manager/html/list將看到一個HMTL的管理界面不管是哪種方式都說明你的Manager Web Application現在已經啟動了
  
  Manager application讓你可以在沒有系統管理特權的基礎上安裝新的Web應用以用於測試如果我們有一個新的web應用位於/home/user/hello下在並且想把它安裝到 /hello下為了測試這個應用我們可以這麼做在第一個文件框中輸入/hello(作為訪問時的path)在第二個文本框中輸入file:/home/user/hello(作為Config URL)
  
  Manager application還允許你停止重新啟動移除以及重新部署一個web應用停止一個應用使其無法被訪問當有用戶嘗試訪問這個被停止的應用時將看到一個的錯誤—— This application is not currently available
  
  移除一個web應用只是指從Tomcat的運行拷貝中刪除了該應用如果你重新啟動Tomcat被刪除的應用將再次出現(也就是說移除並不是指從硬盤上刪除)
  
  .部署一個web應用
  有兩個辦法可以在系統中部署web服務
  > 拷貝你的WAR文件或者你的web應用文件夾(包括該web的所有內容)到$CATALINA_BASE/webapps目錄下
  > 為你的web服務建立一個只包括context內容的XML片斷文件並把該文件放到$CATALINA_BASE/webapps目錄下這個web應用本身可以存儲在硬盤上的任何地方
  
  如果你有一個WAR文件你若想部署它則只需要把該文件簡單的拷貝到CATALINA_BASE/webapps目錄下即可文件必須以war作為擴展名一旦Tomcat監聽到這個文件它將(缺省的)解開該文件包作為一個子目錄並以WAR文件的文件名作為子目錄的名字接下來Tomcat將在內存中建立一個context就好象你在serverxml文件裡建立一樣當然其他必需的內容將從serverxml中的DefaultContext獲得
  
  部署web應用的另一種方式是寫一個Context XML片斷文件然後把該文件拷貝到CATALINA_BASE/webapps目錄下一個Context片斷並非一個完整的XML文件而只是一個context元素以及對該應用的相應描述這種片斷文件就像是從serverxml中切取出來的context元素一樣所以這種片斷被命名為context片斷
  
  舉個例子如果我們想部署一個名叫MyWebAppwar的應用該應用使用realm作為訪問控制方式我們可以使用下面這個片斷
  
  <!
  Context fragment for deploying MyWebAppwar
  >
  <Context path=/demo docBase=webapps/MyWebAppwar
  debug= privileged=true>
  <Realm className=orgapachecatalinarealmUserDatabaseRealm
  resourceName=UserDatabase/>
  </Context>
  
  把該片斷命名為MyWebAppxml然後拷貝到CATALINA_BASE/webapps目錄下
  
  這種context片斷提供了一種便利的方法來部署web應用你不需要編輯serverxml除非你想改變缺省的部署特性安裝一個新的web應用時不需要重啟動Tomcat
  
  .配置虛擬主機(Virtual Hosts)
  關於serverxml中Host這個元素只有在你設置虛擬主機的才需要修改虛擬主機是一種在一個web服務器上服務多個域名的機制對每個域名而言都好象獨享了整個主機實際上大多數的小型商務網站都是采用虛擬主機實現的這主要是因為虛擬主機能直接連接到Internet並提供相應的帶寬以保障合理的訪問響應速度另外虛擬主機還能提供一個穩定的固定IP
  
  基於名字的虛擬主機可以被建立在任何web服務器上建立的方法就是通過在域名服務器(DNS)上建立IP地址的別名並且告訴web服務器把去往不同域名的請求分發到相應的網頁目錄因為這篇文章主要是講Tomcat我們不准備介紹在各種操作系統上設置DNS的方法如果你在這方面需要幫助請參考《DNS and Bind》一書作者是Paul Albitz and Cricket Liu (OReilly)為了示范方便我將使用一個靜態的主機文件因為這是測試別名最簡單的方法
  在Tomcat中使用虛擬主機你需要設置DNS或主機數據為了測試為本地IP設置一個IP別名就足夠了接下來你需要在serverxml中添加幾行內容如下
  
  <Server port= shutdown=SHUTDOWN debug=>
  <Service name=TomcatStandalone>
  <Connector className=yotetomcatCoyoteConnector
  port= minProcessors= maxProcessors=
  enableLookups=true redirectPort=/>
  <Connector className=yotetomcatCoyoteConnector
  port= minProcessors= maxProcessors=
  acceptCount= debug= scheme=https secure=true/>
  <Factory className=yotetomcatCoyoteServerSocketFactory
  clientAuth=false protocol=TLS />
  </Connector>
  <Engine name=Standalone defaultHost=localhost debug=>
  <! This Host is the default Host >
  <Host name=localhost debug= appBase=webapps
  unpackWARs=true autoDeploy=true>
  <Context path= docBase=ROOT debug=/>
  <Context path=/orders docBase=/home/ian/orders debug=
  reloadable=true crossContext=true>
  </Context>
  </Host>
  
  <! This Host is the first Virtual Host: >
  <Host name= appBase=/home/example/webapp>
  <Context path= docBase=/>
  </Host>
  
  </Engine>
  </Service>

From:http://tw.wingwit.com/Article/program/Java/ky/201311/28314.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.