生產環境下到底該如何部署Tomcat?

做者:享學課堂老顧html

微信公衆號: 享學課堂online web

在這裏插入圖片描述

1、前言

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

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

另外,每一個公司的業務場景不同,Tomcat的部署方案可能有所不能,因此請你們輕噴!tomcat

2、Tomcat組件

咱們先回顧一下Tomcat有哪些組件: 微信

在這裏插入圖片描述

Tomcat請求流程:網絡

一、對外接收請求是Connector鏈接器組件,能夠支持不一樣協議,Connector組件中可設置端口,因此咱們請求的時候須要輸入端口號。能夠把Connector看成接待員。多線程

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

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

四、在根據path分配context組件

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

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

3、部署目錄

咱們先看一下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應用從新部署?

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

4、目錄規劃

Tomcat軟連接

咱們先把Tomcat應用放到/usr/local目錄下:

在這裏插入圖片描述

上面咱們是應用了Tomcat8.5版本,若是咱們須要升級到9.x版本的話,那關於Tomcat目錄的路徑就須要從新修改,這就太不方便了,因此咱們能夠用軟連接的方式解決這個問題

在這裏插入圖片描述

這樣之後用Tomcat應用路徑,就直接使用Tomcat這個軟連接,即便未來Tomcat升級只要修改一些軟連接就好了,其餘就不須要改。

5、目錄分離

咱們應該要把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存放日誌文件。

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

6、啓動腳本

此啓動腳本,老顧引用了網上的一個腳本改造了一下,命名爲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,這個知識點,網上不少,小夥伴們可自行查看,由於咱們已經單應用分離出來了,那樣的配置好處不大。

7、總結

上面老顧介紹了Tomcat在生產環境的部署要點,其實還缺乏一個環節,就是咱們war包或jar包是按照什麼流程以及方式上傳到生產環境的?這個可使用自動化集成工具Jenkins

咱們通常在學習中,一些介紹的資料都是淺層次的,雖然可以運行起來,但在真實使用過程當中須要考慮別的因素(維護的方便性,隔離性等),因此在咱們學習到的基礎上面會有很大的不同。但願小夥伴經過本身學習的,必定要結合公司或者前輩們分享的生產實戰經驗,去理解真正的使用。

熱門內容:

一、系統又出Bug?這幾個調優攻略,幫你解決大部分問題!

二、神級代碼註釋鑑賞,喜歡就拿去用!

三、開源的13個Spring Boot 優秀學習項目!超53K星,一網打盡!

四、華爲海思總裁致員工信:再也不有換胎機會,必當科技自立!

五、不瞭解這12個語法糖,別說你會Java!

六、小小的分頁問題引起的加班血案!

七、1萬屬性,100億數據,每秒10萬吞吐,架構如何設計?

八、爲啥程序會有Bug?

在這裏插入圖片描述

【視頻福利】2T免費學習視頻,搜索或掃描上述二維碼關注微信公衆號:Java後端技術(ID: JavaITWork),和20萬人一塊兒學Java!回覆:1024,便可免費獲取!內含SSM、Spring全家桶、微服務、MySQL、MyCat、集羣、分佈式、中間件、Linux、網絡、多線程,Jenkins、Nexus、Docker、ELK等等免費學習視頻,持續更新!

相關文章
相關標籤/搜索