做者:享學課堂老顧html
微信公衆號: 享學課堂online web
小夥伴們在網上看到的不少文章,都是對Tomcat的一些介紹,什麼配置啊,怎麼啓動。其實在生產環境中怎麼部署,和網上介紹的有很大區別!面試
這篇文章老顧就帶着你們分享一些如何在生產環境下部署。這裏不介紹Tomcat的一些線程數的配置了,網上一大堆,核心介紹網上沒有的。後端
另外,每一個公司的業務場景不同,Tomcat的部署方案可能有所不能,因此請你們輕噴!tomcat
咱們先回顧一下Tomcat有哪些組件: 微信
Tomcat請求流程:網絡
一、對外接收請求是Connector鏈接器組件,能夠支持不一樣協議,Connector組件中可設置端口,因此咱們請求的時候須要輸入端口號。能夠把Connector看成接待員。多線程
二、Connector組件接收到請求後,轉發給處理Engine(catalina引擎)組件去處理。架構
三、根據請求的域名,分配到對應的Host主機。app
四、在根據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,這個知識點,網上不少,小夥伴們可自行查看,由於咱們已經單應用分離出來了,那樣的配置好處不大。
上面老顧介紹了Tomcat在生產環境的部署要點,其實還缺乏一個環節,就是咱們war包或jar包是按照什麼流程以及方式上傳到生產環境的?這個可使用自動化集成工具Jenkins。
咱們通常在學習中,一些介紹的資料都是淺層次的,雖然可以運行起來,但在真實使用過程當中須要考慮別的因素(維護的方便性,隔離性等),因此在咱們學習到的基礎上面會有很大的不同。但願小夥伴經過本身學習的,必定要結合公司或者前輩們分享的生產實戰經驗,去理解真正的使用。
熱門內容: