tomcat服務組件詳解(二)
Tomcat的架構:
頂級組件: 位於配置層次的頂級,並且彼此間有著嚴格的對應關系 連接器: 連接客戶端(可以是瀏覽器或Web服務器)請求至Servlet容器 容器: 包含一組其它組件 被嵌套的組件: 位於一個容器當中,但不能包含其它組件
各常見組件:
服務器(server): Tomcat的一個實例,通常一個JVM只能包含一個Tomcat實例 服務(service): 一個服務組件通常包含一個引擎和與此引擎相關聯的一個或多個連接器。 給服務命名可以方便管理員在日誌文件中識別不同服務產生的日誌。一個server可以包含多個service組件,但通常情下只為一個service指派一個server
連接器類組件:
連接器(connectors): 負責連接客戶端請求至Servlet容器內的Web應用程序,通常指的是接收客戶發來請求的位置及服務器端分配的端口。 默認端口通常是HTTP協議的8080,一個引擎可以配置多個連接器,但這些連接器必須使用不同的端口。默認的連接器是基於HTTP/1.1的Coyote
容器類組件:
引擎(Engine): 引擎是指處理請求的Servlet引擎組件,它檢查每請求的HTTP首部信息以辨別請求應該發往哪個host或context,並將請求處理後的結果返回的相應的客戶端 主機(Host): 主機組件類似於Apache中的虛擬主機,但在Tomcat中只支持基於FQDN的“虛擬主機”。一個引擎至少要包含一個主機 上下文(Context): Context組件是最內層次的組件,它表示Web應用程序本身。配置一個Context最主要的是指定Web應用程序的根目錄,以便Servlet容器能夠將用戶請求發往正確的位置
tomcat目錄結構:
bin: 可執行腳本 conf: 配置文件 lib: 運行時依賴的庫文件 logs: 日誌文件 webapps: web應用所在目錄,web資源的存放目錄 work: tomcat的工作目錄
conf目錄:
server.xml: Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主組件的相關配置信息 web.xml: 遵循Servlet規範標準的配置文件,用於配置servlet,並為所有的Web應用程序提供默認配置信息 tomcat-user.xml: 用戶認證時用到的相關角色、用戶和密碼等信息 context.xml: 所有host的默認配置信息 catalina.policy : Java相關的安全策略配置文件,在系統資源級別上提供訪問控制的能力; catalina.properties: Tomcat內部package的定義及訪問相關的控制 logging.properties: 日誌記錄相關的配置信息
webapps目錄:
docs:幫助文檔
examples:配置示例
host-manager:虛擬主機管理
manager:tomcat管理
ROOT:默認訪問目錄
每個應用程序目錄下都有幾個同樣的目錄
WEB-INF:當前webapp的私有資源,通常存放當前webapp的web.xml文件
META-INF:當前webapp的私有資源,通常存放當前webapp的context.xml文件
classes:當前webapp的私有類
lib:當前webapp的私有類,打包為jar格式
index.jpg:當前webapp的首頁
webapp部署:
冷部署:把webapp復制的指定目錄之後才啟動tomcat
熱部署:在不停止tomcat的前提下部署webapp
部署工具:manager
反部署:停止webapp並從tomcat實例拆除其部分文件和部署名
stop:停止webapp,不向用戶提供服務
start:啟動停止狀態大webapp
redeploy:重新部署
catalina.sh #tomcat/bin/catalina.sh命令路徑 start #啟動tomcat start -security #以安全方式啟動tomcat stop #停止tomcat stop n #指定多少秒之後停止tomcat,默認為5秒 stop -force #強制停止tomcat stop n -force #指定多少秒之後強制停止tomcat,默認為5秒 configtest #測試配置文件語法 version #查看版本信息
tomcat配置:
創建測試webapp:
mkdir -pv /usr/local/tomcat/webapps/myapp/{WEB-INF,META-INF,classes,lib} #創建相關目錄
vim /usr/local/tomcat/webapps/myapp/index.jsp #創建測試首頁
<html> <body> <center> Now time is: <%=new java.util.Date()%> </center> </body> </html>
http://18.18.23.109:8080/myapp/ #如果能看見當前時間則證明tomcat測試成功
配置管理後臺:
vim /usr/local/tomcat/conf/tomcat-users.xml
<tomcat-users> <role rolename="manager-gui"/>#狀態管理接口 <role rolename="admin-gui"/>#虛擬主機管理接口 <user username="tomcat" password="123.com" roles="manager-gui,admin-gui"/>#用戶,密碼,調用接口 </tomcat-users>
虛擬主機配置:
<Host name="www.test.com" unpackWARs="true" appBase="/data/webapps/" autoDeploy="false" > <Context path="" docBase="/data/webapps/" reloadable="true" /> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs" prefix="www.tomcat.com_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
host:name="主機名" unpackWARs="是否自動展開WAR文檔" appBase="網站根目錄" autoDeploy="是否自動部署,建議為false"
context:path="訪問時使用的路徑" docBase="網頁路徑" reloadable="是否自動重載"
Valve:directory="日誌存放路徑" prefix="日誌名和後綴名" pattern="日誌記錄格式"
tomcat服務組件詳解(二)