前文咱們聊到了java相關重要組件和它們之間的關係以及jdk、tomcat部署回顧請參考http://www.javashuo.com/article/p-tmlblnso-mv.html;今天咱們來聊一聊tomcat的配置使用相關話題;php
1、tomcat配置相關文件簡介html
一、server.xmljava
server.xml的配置文件格式大體以下web
<Server> <Service> <connector/> <connector/> ... <Engine> <Host> <Context/> <Context/> ... </Host> <Host> ... </Host> ... </Engine> </Service> </Server>
提示:server.xml是tomcat的主配置文件,主要定義server屬性相關參數,而server中核心的組件有service(服務)、connector(鏈接器)、engine(引擎)、host(虛擬主機)、context(上下文);這些組件它們都有必定聯繫,其中一個service中能夠包含一個或多個鏈接器(connector),其次就是引擎(engine),引擎是tomcat運行jsp代碼的核心組件,一般狀況一個鏈接器只能對應一個引擎,而一個引擎能夠對應多個鏈接器,能夠包含多個host,host咱們能夠理解爲httpd中的基於名稱的虛擬主機;一個host中能夠一個或多個context;context的主要做用是定義location與文件系統路徑的對應關係和訪問權限相關配置;apache
對於tomcat配置文件server.xml中的組件,其實都是Java的類實現,這些組件大致可分爲以下類型:windows
頂級組件:Server瀏覽器
服務類組件:Servicetomcat
鏈接器組件:http, https, ajp(apache jserv protocol)安全
容器類:Engine, Host, Contextbash
被嵌套類:valve, logger, realm, loader, manager, ...
集羣類組件:listener, cluster, ...
二、web.xml:每一個webapp只有部署後才能被訪問,它的部署方式一般由web.xml進行定義,其存放位置爲WEB-INF/目錄中;一般狀況每一個webapp項目中都會有WEB-INF或META-INF目錄,該目錄就是用於存放該項目部署相關配置(web.xml或者context.xml),若是對應項目裏沒有這個目錄,那麼tomcat中的web.xml就提供默認部署相關配置;
三、context.xml:webapp的專用配置文件,其存放位置爲WEB-INF/目錄中;該文件和web.xml文件相似,若是對應webapp項目中沒有WEB-INF或META-INF目錄,那麼tomcat中的content.xml就是爲其提供默認配置;
四、tomcat-users.xml:用戶認證的帳號和密碼文件;
五、catalina.policy:當使用-security選項啓動tomcat時,用於爲tomcat設置安全策略;
六、catalina.properties:Java屬性的定義文件,用於設定類加載器路徑,以及一些與JVM調優相關參數;
七、logging.properties:日誌系統相關的配置;
2、webapp的組織結構
/:webapps的根目錄
index.jsp:主頁腳本,相似fpm中的index.php;
WEB-INF/:當前webapp的私有資源路徑;一般用於存儲當前webapp的web.xml和context.xml配置文件;所謂私有資源路徑就是在對應url上沒法進行訪問的資源(不能以uri的方式被其餘人訪問到);
META-INF/:此目錄做用相似WEB-INF/;
class/:存儲當前webapp所提供的類文件;
lib/:存儲類文件目錄,當前webapp所提供的類被打包成jar格式的類文件;
webapp歸檔格式:
.war這類文件是webapp的歸檔文件,裏面包含了整個webapp的全部文件,類,咱們能夠理解.war格式的文件就是整個webapp全部文件的壓縮歸檔文件,一般咱們直接把該文件放在webapps目錄下而後啓動tomcat,這個包會自動展開;一般.war包用於部署單元來使用;
.jar這類文件一般是把類和類相關的資源封裝壓縮在一塊兒的歸檔文件;一般用於部署和封裝庫、組件和插件程序;
.rar這類文件主要是資源適配器類打包文件的格式;
.ear這類文件是企業級webapp打包文件,和.war不一樣的是,ear是針對EJB容器,.war針對web容器;ear包含war;
3、部署webapp的相關術語:
一、deploy(部署):所謂部署就是把webapp的源文件放置於目標目錄(網頁程序文件存放目錄,相似httpd中的documentroot指定的目錄),而後配置tomcat服務器可以基於web.xml和context.xml文件中定義的路徑來訪問webapp;而後將其特有的類和依賴的類經過類加載器(class loader)裝載至jvm的這一過程;部署第方式有兩種,一種是自動部署(auto deploy),自動部署就是咱們直接把webapp文件放置對應目錄下就能夠實現訪問,不須要人爲手動的去配置部署;另一種就是手動部署,手動部署又能夠分爲冷部署和熱部署;所謂冷部署就是把webapp源碼文件放到指定位置,而後啓動tomcat這種方式叫冷部署;熱部署指的是在不中止tomcat的前提下進行部署的方式;經常使用的部署工具備:manager、ant腳本和tcd(tomcat client deployer)等;
二、undeploy(反部署):所謂反部署就是部署的逆向操做,中止webapp並從tomcat實例上卸載webapp的操做叫反部署;
三、start:啓動處於中止狀態的webapp;
四、stop:中止webapp,使其再也不像客戶提供服務,可是類依然在jvm上;
五、redeploy:從新部署;
示例:手動提供一測試類應用,並冷部署到tomcat上
一、建立目錄結構
提示:在webapps目錄下建立項目目錄;這裏說一下webapps目錄,這個目錄默認配置是支持熱部署的,其中ROOT目錄是主站點源碼文件存放地,存放在ROOT目錄下的文件在訪問時能夠不用加任何uri就能夠訪問獲得,其餘目錄須要加對應目錄名爲uri才能夠被訪問;
二、建立index.jsp文件
提示:index.jsp文件中就作了一件事,打印hello world這句話;
三、更改目錄權限
提示:新建的文件咱們須要保證tomcat用戶有能夠正常的讀取便可,對於目錄tomcat用戶能夠進入便可;
四、啓動tomcat
提示:默認狀況tomcat所在webapps目錄下的子目錄是能夠經過訪問對應目錄名稱訪問到的,咱們把網頁腳本文件放到webapps目錄下的子目錄下,不停tomcat也是能夠訪問到,緣由是tomcat默認就支持熱部署;以下配置文件所示
驗證:用瀏覽器訪問咱們剛纔部署testwebapp,看看是否可以被訪問到?
提示:能夠看到咱們訪問對應子目錄的名稱是能夠正常訪問到對應目錄下的index.jsp文件;
4、利用tomcat的兩個管理應用來部署webapp
一、給manager應用配置帳號
提示:tomcat-user.xml這個配置文件主要是定義用戶相關配置;以上配置表示啓動manager-gui角色,並添加tomcat用戶擁有manager-gui角色的全部權限;這須要注意一點username password roles 這幾個變量之間是用空格作分割的,不要忘記每一個變量賦值後,用空格分割,最後一個不須要有空格;
重啓tomcat服務
網頁登錄manager app
提示:登陸到manager app後,咱們就能夠看到tomcat上全部的webapp,咱們能夠在後面進行操做,中止啓動,和重載以及卸載對應webapp;
測試:中止/test 看看對應webapp是否還能夠訪問?
提示:能夠看到當咱們把對應webapp中止後,對應webapp就不可以訪問了,訪問它會告訴咱們該資源未找到,404錯誤;
啓動/test webapp,看看是否立刻就能夠訪問了呢?
二、給host-manager配置帳號
提示:啓動admin-gui角色,並把admin-gui角色擁有的權限附加到tomcat用戶上;
重啓tomcat
登陸主站的host manager
提示:能夠看到登陸host-manager 應用中,咱們能夠看到有一個默認的host是localhost,和一些服務器相關信息;
添加一個host
提示:app base路徑須要在服務器上有該路徑,而且須要咱們把對應的源碼文件放進去;還須要注意對應目錄tomcat用戶能夠讀和進入到該目錄的權限;
在windows上配置解析www.test.com 爲192.168.0.22
測試:訪問咱們剛纔添加的host,看看是否可以訪問到?
提示:tomcat監聽在8080,因此咱們訪問添加的虛擬主機也須要把端口帶上;從上面的訪問結果看,它提示咱們404網頁文件未找到;其緣由是咱們在/tmp/下的/test/目錄沒有ROOT目錄,默認狀況訪問虛擬主機,就至關於訪問這個虛擬主機的主站,所謂主站就是訪問的rul上沒有rui,如上圖所示;這時tomcat它會去對應目錄下找ROOT目錄裏的主頁文件(index.jsp);
提示:修改了/tmp/test/下的目錄結構後,如今在訪問看看?
提示:更改了/tmp/test/目錄結構後,直接訪問就能夠訪問到對應的頁面了,這裏須要注意一點,若是咱們剛纔添加虛擬主機時,沒有勾選支持自動部署,咱們還須要去部署才能夠訪問;
登陸server status 應用
提示:用剛纔的tomcat用戶就能夠直接登陸server status 應用,由於剛纔配置的tomcat用戶是 admin-gui角色和manager-gui角色,這兩個角色都有登陸訪問server status的權限;
提示:server status 應用主要是用於查看服務器狀態相關的信息;該頁面主要記錄了tomcat版本,jvm版本和對應服務器的版本信息以及服務器主機名,ip地址;jvm內存池使用相關信息;ajp鏈接器相關連接信息和http鏈接器相關信息;經過查看狀態頁面,咱們能夠了解到服務器和tomcat的狀況,從而進行優化和調整;