Tomcat詳解

一、前言

小夥伴們在網上看到的很多文章,都是對Tomcat的一些介紹,什麼配置啊,怎麼啓動。其實在生產環境中怎麼部署,和網上介紹的有很大區別!

這篇文章老顧就帶着大家分享一些如何在生產環境下部署。這裏不介紹Tomcat的一些線程數的配置了,網上一大堆,核心介紹網上沒有的。

另外,每個公司的業務場景不一樣,Tomcat的部署方案可能有所不能,所以請大家輕噴!

二、Tomcat組件

我們先回顧一下Tomcat有哪些組件:
在這裏插入圖片描述

Tomcat請求流程:

1、對外接收請求是Connector連接器組件,可以支持不同協議,Connector組件中可設置端口,所以我們請求的時候需要輸入端口號。可以把Connector當作接待員。

2、Connector組件接收到請求後,轉發給處理Engine(catalina引擎)組件去處理。

3、根據請求的域名,分配到對應的Host主機。

4、在根據path分配context組件

**區分項目有2個核心組件,一個是Host,一個是Context。**根據域名和path分配不同的項目。其實還少了一個就是啓動參數的配置,也就是不同項目的啓動參數也可以不一樣,如端口號,線程數啊。

推薦閱讀:《讓面試官顫抖的Tomcat系統架構系列!

三、部署目錄

我們先看一下Tomcat目錄結構:

在這裏插入圖片描述

我們要部署一個web應用,只要把應用的war包放到webapps就可以了。網上一般也是這麼講的。小夥伴們覺得有什麼問題嗎?

我們看一下,如果我們要部署兩個web應用Web-A和Web-B,把他放到webapps中。我們到bin目錄下運行startup.sh啓動,這樣web-A和web-B就可以訪問了。

如果現在業務上需要把web-B先暫停,那我們改怎麼辦?還有就是Tomcat啓動是會有啓動參數設置,如最大線程數,最小線程數等配置。那web-A和web-B怎麼配置不一樣的啓動參數呢?

其實還有一個問題,如果我們要把Tomcat版本升級,怎麼辦?把Tomcat直接覆蓋?那些web應用重新部署?

小夥伴們,應該怎麼辦呢?

四、目錄規劃

Tomcat軟鏈接

我們先把Tomcat應用放到/usr/local目錄下:
在這裏插入圖片描述

上面我們是應用了Tomcat8.5版本,如果我們需要升級到9.x版本的話,那關於Tomcat目錄的路徑就需要重新修改,這就太不方便了,所以我們可以用軟鏈接的方式解決這個問題
在這裏插入圖片描述

這樣以後用Tomcat應用路徑,就直接使用Tomcat這個軟鏈接,即使將來Tomcat升級只要修改一些軟鏈接就行了,其他就不需要改。

五、目錄分離

我們應該要把Tomcat和web應用目錄分離出來,即使Tomcat升級也跟web應用沒有關係。那分離出來,怎麼啓動呢?

我們要利用啓動參數中的CATALINA_HOME和CATALINA_BASE,來指定Tomcat程序應用和web應用;通過CATALINA_BASE就可以實現web應用分離出去,我們來看一些Tomcat一共有哪些啓動參數

在這裏插入圖片描述

我們先在/usr/local目錄下新建一個web-apps目錄,此目錄就放web應用

在這裏插入圖片描述

在web-apps目錄下,新建web-a和web-b目錄,這兩個目錄就是web-A和web-b的web應用目錄。
在這裏插入圖片描述

把Tomcat程序中的conf目錄拷貝到web-a和web-b裏面,這樣各個web應用都有各自的配置文件。
在這裏插入圖片描述

再在web-a和web-b目錄下,新建webapps和logs目錄,webapps存放web應用,logs存放日誌文件。

到此目錄分離開了,但還缺少一個啓動腳本!

六、啓動腳本

此啓動腳本,老顧引用了網上的一個腳本改造了一下,命名爲tomcat.sh
在這裏插入圖片描述

腳本比較簡單,核心就是啓動參數,只要注意CATALINA_BASE="pwd"的意思是,執行腳本的路徑,也就是代表web應用路徑是腳本執行的路徑;

再把tomcat.sh設置一些啓動權限 # chmod +x tomcat.sh

修改conf下的server.xml
在這裏插入圖片描述

修改了紅色字體部分,host中的appBase是相對CATALINA_BASE的路徑,就是web應用的路徑,context中的path是請求url,docBase也是相對路徑,相對於appBase的,當然也可以設置絕對路徑。在web-a下創建index.html文件

到現在爲止的web-a的目錄下

在這裏插入圖片描述

啓動tomcat.sh
在這裏插入圖片描述

訪問 http://192.168.31.150:8080/就ok了,直接返回了index.html裏面的內容。

需要說明的是,在web-a執行tomcat.sh,裏面的啓動參數CATALINA_BASE是web應用路徑,那tomcat.sh腳本中的$CATALINA_HOME/bin/catalina.sh 這個腳本執行所採用的conf配置文件是web-a目錄下的,跟Tomcat程序的conf沒有任務關係,也跟web-b目錄下的conf也沒有任何關係,這樣就達到了應用之間的配置分離。

補充一下,在配置context和host時,很多公司不會在server.xml配置,而是通過conf/Catalina目錄下,新建host和context,這個知識點,網上很多,小夥伴們可自行查看,因爲我們已經單應用分離出來了,那樣的配置好處不大。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章