1. 程式人生 > >初識TomCat之2——TomCat介紹及安裝

初識TomCat之2——TomCat介紹及安裝

重啟 一個tomcat security direct 查看 介紹 虛擬 vpd use

一、TomCat介紹

通過之前的介紹,Tomcat與JDK共同構成了一個Web Container容器,它在JDK的基礎上提供了Servlet和JSP組件,可以接受來自客戶端的動態請求,整個TomCat的核心組件由Catalina、Coyote和Jasper組成。Catalina實現Servlet容器功能,Coyote實現http連接器功能,Jasper(JSP Engine)將接收到的請求轉換為Java代碼。整個TomCat從結構上劃分如下圖所示:

技術分享圖片技術分享圖片

Server:tomcat是在java進程中運行的一個實例,一個Server即是一個tomcat實例,一個Java進程中可以存在多個tomcat實例,但通常只運行一個tomcat

Engine:用於執行Jsp或者Servlet代碼(JSP和Servlet有各自的執行引擎,此處統一以一個Engine表示),一個Engine可以有多個Connector

Connector:接受並解析用戶請求,將請求轉換為Engine中運行的代碼,並將運行的結果構建成響應報文,一個Connector只能有一個Engine,Connector提供一個可以接受用戶請求類似於web的服務

Service:由於Engine本身無法理解http或ajp請求,所以Service的作用是將Connector關聯至Engine組建,一個Service裏面只能有一個Engine

host:類似於web服務器中的虛擬主機

context:類似於web服務器中的alias

二、TomCat安裝

TomCat只提供了Servlet和JSP組建,所以在安裝TomCat前首先要安裝JDK程序

技術分享圖片

TomCat安裝後會生成以下目錄和文件

技術分享圖片

bin:腳本及啟動時用到的類,lib:類庫,conf:配置文件,log:日誌,webapp:應用程序默認部署目錄,work:工作目錄,temp:臨時目錄。其中要說明的是work目錄,TomCat作為一款重量級應用的效率卻很高的原因就是他將應用程序的Java代碼轉換成類文件後存放在此目錄下,在代碼為發生改變的情況下,下一次可以直接使用,省去了再轉換的過程。

TomCat的配置文件說明:

技術分享圖片

server.xml:主配置文件

context.xml:每個webapp都可以有專用的配置文件,這些配置文件通常位於webapp應用程序目錄下的WEB-INF目錄中,用於定義會話管理器、JDBC等,conf/context.xml是為各webapp提供默認配置

web.xml:每個webapp“部署”後才能被訪問,此文件為所有的webapp提供默認部署的相關配置

tomcat-users.xml:用戶認證的賬號和密碼配置文件

catalina.policy:當用戶使用catalina.sh -security啟動tomcat時加載的配置文件

catalina.properties:Java屬性的定義文件,用於設定加載器路徑等,及一些JVM性能相關調優參數

loggingproperties:日誌相關配置信息

三、TomCat管理按鍵

進入tomcat默認界面,可以看到三個管理按鍵

技術分享圖片技術分享圖片

但當點擊管理按鍵時會提示以下錯誤

技術分享圖片

在確認了不是因為缺少角色的原因後,可能出現問題的地方就是context.xml設置了

技術分享圖片技術分享圖片

需要註意的是此時的context.xml並不是conf/context.xml,而是webapps目錄中對應的子目錄下,webapps目錄中每一個子目錄都可以是一個單獨的應用,以此處為例Manager App對應的就是manager目錄,而每一個應用中的META-INF和WEB-INF目錄存放的都是這個應用獨有的其他應用不能訪問的配置或資源,從配置文件conf/service.xml中能看到應用程序的根目錄是在webapps下,但該目錄下並沒有像httpd服務一樣有頁面文件,tomcat的默認頁面是放在webapps/ROOT目錄中的

技術分享圖片技術分享圖片

將context.xml文件中Valve過濾器註釋掉後,重啟tomcat應用,功能鍵可以正常訪問

技術分享圖片

四、配置示例

1.在當前主機下部署一個頁面

不同於httpd服務當/可以訪問時,/下其他路經也可以直接訪問,TomCat部署的概念,所謂部署就是將程序運行中用到的類庫和需要調用的類庫加載至引擎,此處以/目錄下添加一個myapps子目錄為例,從conf/server.xml中得知根目錄是webapps

技術分享圖片

由前面得知每個應用都可以有單獨的類庫和配置資源,所以此處創建classes、lib、META-INF、WEB-INF目錄並創建一個index.jsp主頁文件,文件內容為:

<%@ page language="java" %>

<%@ page import="java.util.*" %>

<html>

<head>

<title>JSP test page</title>

</head>

<body>

<% out.println("Hello World."); %>

</body>

</html>

再次訪問就能看到結果

技術分享圖片技術分享圖片

2.基於虛擬主機訪問

以創建一個名為node1.ark.com虛擬主機為例,在conf/server.xml配置文件中添加一個Host配置段,並設置Context根路徑位置(不設置無法訪問),此處的docBase是相對appBase而言,valve日誌文件可以放在Context內或外部,放在外部表示對這個Host內全部Context生效,但要註意日誌的director是針對CATALINA_HOME而言而不是appBase,所以此處使用的是絕對路徑(建議以後將Context和日誌的路徑都使用絕對路徑。如果appBase使用的是相對路徑docBase再使用相對路徑整個Context會不生效,即docBase的相對路徑不能引用appBase的相對路徑)

技術分享圖片技術分享圖片

創建新建虛擬主機的相應目錄和index.jsp主頁

技術分享圖片技術分享圖片

重啟catalina服務(冷部署),再次訪問查看結果

技術分享圖片

初識TomCat之2——TomCat介紹及安裝