Tomcat介紹及相關實驗(一)

Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。

本節索引:

一、tomcat介紹

二、tomcat服務配置

三、實驗:實現tomcat應用部署及版本控制

四、實驗:tomcat創建虛擬主機Host及Context

五、實驗:開啟tomcat管理頁面

 

 

一、tomcat介紹

Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由

Apache、Sun 和其他一些公司及個人共同開發而成。因為Tomcat 技術先進、性能穩定,而且免費,因而

深受Java 愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。

Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并

發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對于一個初學者來說,可以這

樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應HTML(標準通用標記語言下的一個應用)

頁面的訪問請求。實際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當你運行

tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。Apache 為HTML頁面服務,而

Tomcat 實際上運行JSP 頁面和Servlet。

 

官方網站:http://tomcat.apache.org/

 

如何安裝tomcat?

方法一:本地yum安裝(base源)

systemctl start tomcat

默認監聽:8080,8005(管理端口),8009

1

 

方法二:ASF官網站點下載安裝

官方網站下載地址:https://tomcat.apache.org/download-90.cgi

wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz

tar -zxf apache-tomcat-8.5.24.tar.gz

啟動tomcat

./apache-tomcat-8.5.24/bin/startup.sh

 

添加環境變量CATELINA_HOME

vim /etc/profile.d/

export CATALINA_BASE=/usr/local/tomcat

export PATH=$CATALINA:$PATH

服務控制由catalina腳本執行

catalina.sh start

 

此時,瀏覽器訪問localhostIp:8080就可以看到tomcat默認界面了

2

 

二、tomcat服務配置

Tomcat的主要目錄結構:

3

 

bin:腳本,及啟動時用到的類;

conf:配置文件目錄;

lib:庫文件,Java類庫,jar;

logs:日志文件目錄;

temp:臨時文件目錄;

webapps:webapp的默認目錄;

work:工作目錄,存放編譯后的字節碼文件;

 

Tomcat的配置文件構成:

server.xml:主配置文件;

web.xml:每個webapp只有“部署”后才能被訪問,它的部署方式通常由web.xml進行定義,其存放位置為

WEB-INF/目錄中;此文件為所有的webapps提供默認部署相關的配置;

context.xml:每個webapp都可以使用的配置文件,它通常由專用的配置文件context.xml來定義,其存

放位置為WEB-INF/目錄中;此文件為所有的webapps提供默認配置;

tomcat-users.xml:用戶認證的賬號和密碼文件;角色(role),用戶(User);此文件在tomcat啟動

時被裝入內存;

catalina.policy:當使用-security選項啟動tomcat時,用于為tomcat設置安全策略;

catalina.properties:Java屬性的定義文件,用于設定類加載器路徑,以及一些與JVM調優相關參數;

logging.properties:日志系統相關的配置;

 

Tomcat的核心組件:server.xml

<Server>

<Service>

<connector/>

<connector/>

<Engine>

<Host>

<Context/>

<Context/>

</Host>

<Host>

</Host>

</Engine>

</Service>

</Server>

 

 

每一個組件都由一個Java“”實現,這些組件大體可分為以下幾個類型:

頂級組件:Server

服務類組件:Service

連接器組件:http, https, ajp(apache jserv protocol)

容器類:Engine, Host, Context

被嵌套類:valve, logger, realm, loader, manager, …

集群類組件:listener, cluster, …

 

一般 web 項目路徑結構

4

webapp歸檔格式:

.war:webapp;

.jar:EJB的類打包文件(類庫);

.rar:資源適配器類打包文件;

.ear:企業級webapp;

 

 

部署(deploy)webapp的相關操作:

deploy:將webapp的源文件放置于目標目錄(網頁程序文件存放目錄),配置tomcat服務器能夠基于

web.xml和context.xml文件中定義的路徑來訪問此webapp;將其特有的類和依賴的類通過class loader裝載

至JVM;

部署有兩種方式:

自動部署:auto deploy

手動部署:

冷部署:把webapp復制到指定的位置,而后才啟動tomcat;

熱部署:在不停止tomcat的前提下進行部署;

部署工具:manager、ant腳本、tcd(tomcat client deployer)等;

undeploy:拆除(反部署),停止webapp,并從tomcat實例上卸載webapp;

start:啟動處于停止狀態的webapp;

stop:停止webapp,不再向用戶提供服務;其類依然在jvm上;

redeploy:重新部署;

 

Tomcat基礎架構

5

連接器(connector)負責接收請求并傳給引擎,由引擎運行jsp代碼并返回給連接器

Server:代表整個服務器,一個server可以包含多個service

一個Service可包含一個Engine,多個Connecter

Connector:連接器類元素,代表通信接

Engine:為特定的Service組件處理客戶請求,要包含多個Host

Host:為特定的虛擬主機組件處理客戶請求,可包含多個Context

Context:為特定的Web應用處理所有的客戶請求

 

Tomcat的常用組件配置:

Server

功能:代表tomcat instance,即表現出的一個java進程;監聽在8005端口,只接收“SHUTDOWN”。各

server監聽的端口不能相同,因此,在同一物理主機啟動多個實例時,需要修改其監聽端口為不同的端

口;

port=”-1″,

shutdown=”RANDOM_CHARCTER”

 

Service

功能:用于實現將一個或多個connector組件關聯至一個engine組件;

一個Server中可以有多個Service

 

Connector

功能:負責接收請求,常見的有三類http/https/ajp;

進入tomcat的請求可分為兩類:

(1) standalone : 請求來自于客戶端瀏覽器;

(2) 由其它的web server反代:來自前端的反代服務器;

nginx –> http connector –> tomcat

httpd(proxy_http_module) –> http connector –> tomcat

httpd(proxy_ajp_module) –> ajp connector –> tomcat

httpd(mod_jk) –> ajp connector –> tomcat

 

屬性:

port=”8080″

protocol=”HTTP/1.1″

connectionTimeout=”20000″

 

address:監聽的IP地址;默認為本機所有可用地址;

maxThreads:最大并發連接數,默認為200;

enableLookups:是否啟用DNS查詢功能;

acceptCount:等待隊列的最大長度;

secure:

sslProtocol:

 

Engine

功能:Servlet實例,即servlet引擎,其內部可以一個或多個host組件來定義站點; 通常需要通過

defaultHost來定義默認的虛擬主機;

 

屬性:

name=?????????? #此引擎的邏輯名稱,用于日志和錯誤消息。

defaultHost=”localhost”?? #默認主機名,用于標識將處理指向此服務器上主機名稱但未在此配置文件中配

置的請求的主機。

jvmRoute=

 

 

Host

功能:位于engine內部用于接收請求并進行相應處理的主機或虛擬主機

Host元素表示一個虛擬主機

<Host name=”localhost”? appBase=”webapps”

unpackWARs=”true” autoDeploy=”true”>

</Host>

 

常用屬性說明:

name:名稱;用于日志輸出

appBase:虛擬主機對應的應用基礎路徑,可以是個絕對路徑, 或${CATALINA_BASE}相對路徑

xmlBase:虛擬主機XML基礎路徑,里面應該有Context xml配置文件;可以是個絕對路徑, 或${CATALINA_BASE}相對路徑

createDirs:當appBase和xmlBase不存在時,是否創建目錄;默認為true

autoDeploy:是否周期性的檢查appBase和xmlBase并deploy web應用和context描述符;默認為true

deployIgnore:忽略deploy的正則

deployOnStartup:Tomcat啟動時是否自動deploy;默認為true

 

Context

功能:Context元素表示一個Web應用程序,它在特定的虛擬主機中運行。每個Web應用程序都基于Web

應用程序存檔(WAR)文件,或者包含相應的解包內容的相應目錄

 

常用屬性說明:

altDDName:web.xml部署描述符路徑;默認 /WEB-INF/web.xml

docBase:Context的Root路徑,和Host的appBase相結合, 可確定web應用的實際目錄

path :web應用的context path;如果為根路徑,則配置為空字符串(“”), 不能不配置

privileged:是否使用Tomcat提供的manager servlet

reloadable:/WEB-INF/classes/ 和/WEB-INF/lib/ 目錄中class文件發生變化是否自動重新加載;默認為false

swallowOutput:true情況下, System.out和System.err輸出將被定向到web應用日志中;默認為false

 

Valve

<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”

prefix=”localhost_access_log” suffix=”.txt”

pattern=”%h %l %u %t &quot;%r&quot; %s %b” />

 

Valve存在多種類型:

定義訪問日志:org.apache.catalina.valves.AccessLogValve

定義訪問控制:org.apache.catalina.valves.RemoteAddrValve

<Valve className=”org.apache.catalina.valves.RemoteAddrValve” deny=”172\.16\.100\.67″/>

 

三、實驗:實現tomcat應用部署及版本控制

前期準備:

本節實驗全部以yum安裝為準,tomcat版本:tomcat-7.0.76-6.el7.noarch

創建一個測試類應用

mkdir? -pv? /usr/share/tomcat/webapps/test/{classes,lib,WEB-INF}

2

 

tomcat端測試:

瀏覽器打開:tomcat.wxlinux.com/test/

3

當應用被部署上線后,就會在/usr/share/tomcat/work/Catalina/localhost/test目錄生成源碼和類

庫文件

4

 

版本部署

軟連接實現部署部署

5

軟連接方式不支持熱部署,需重啟tomcat服務后才能連接成功

systemctl restart tomcat

6

生產環境中一般使用git來實現版本控制,可以使用一個目錄名包含多個版本程序

 

四、實驗:tomcat創建虛擬主機Host及Context

定義虛擬主機

修改server配置文件添加一個host配置:

vim /etc/tomcat/server.xml

1

寫入一個測試類應用,內容如下:

mkdir /data/webapps/ROOT/{classes,lib,META-INF,WEB-INF} -pv

2

為了方便訪問,這里添加主機名解析到hosts文件中

vim /etc/hosts

192.168.30.18?? node1.wxlinux.com

 

瀏覽器訪問node1.wxlinux.com:8080

3

自定義host日志:

vim /etc/tomcat/server.xml

4

當host被訪問時,后生成日志:

5

創建一個context:

vim /etc/tomcat/server.xml

6

在context定義的目錄中創建另外一個應用,為了方便對比,僅僅改變字體顏色

測試訪問:

8

 

 

五、實驗:開啟tomcat管理頁面

前期準備:

虛擬機一臺

系統版本:CentOS 7.4 ? ? ?IP:192.168.30.27

 

manager管理頁面:

vim /etc/tomcat/tomcat-users.xml

1

瀏覽器打開192.168.30.27:8080點擊紅色區域

2

管理界面可進行對web的管理,如停止,開始,卸載部署等操作

3

圖形界面熱部署WAR文件:

4

 

HostManager管理頁面:

vim /etc/tomcat/tomcat-users.xml

5

測試訪問:

67

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/103953

(1)
wangxczwangxcz
上一篇 2018-07-24
下一篇 2018-07-24

相關推薦

  • docker學習記錄系列(一)

    虛擬化與容器

    Linux筆記 2018-06-02
  • Linux第六天筆記(markdown格式)

    文本處理三劍客 grep:grep,egrep,fgrep pattern:模式,類型 sed awk 通用技術:正則表達式 blank和space的區別: `[:blank:]’ Blank characters: space and tab. ? [:space:]’ ? ? ? Space characters: in theC’ locale, th…

    Linux筆記 2018-04-08
  • Homework_week5

    1、簡述rpm與yum命令的常見選項,并舉例 RPM rpm是一個功能十分強大的軟件包管理系統,它使得在Linux下安裝、升級和刪除軟件包的工作變的容易、并且具有查詢、驗證軟件包的功能 安裝 rpm {-i|–install} [install-options] PACKAGE_FILE … 選項: -h:-hash,顯示安裝進度 -…

    Linux筆記 2018-07-23
  • MBR實驗

    實驗一? MBR修復 破壞MBR lsblk? /*確認磁盤名*/ hexdump -C /dev/sda -n 512? /*查看MBR分區*/ dd if=/dev/sda of=/date/mbr.bak bs=1 count=512?? /*復制MBR分區*/ scp /date/mbr.bak 192.168.213.129:/root/?? /*…

    Linux筆記 2018-05-13
  • systemd服務管理

    在systemd中,之前服務的啟動腳本將以Unit(單元)的形式存在,因此服務管理=單元管理。

    Linux筆記 2018-06-12
  • 學習筆記(16)

    學習筆記

    Linux筆記 2018-05-06
欧美性久久久久