日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat - 你该知道的Tomcat生产环境部署

發(fā)布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat - 你该知道的Tomcat生产环境部署 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • Pre
  • Tomcat 各組件及關(guān)系
  • server.xml 配置詳解
    • server
    • service
    • connector
    • Engine
    • Host
    • Context
  • Tomcat與App應(yīng)用分開部署


Pre

Tomcat Version : 8.5+

我們先回顧下 前幾節(jié)學(xué)習(xí)的的tomcat的功能及架構(gòu)

Tomcat是一個基于JAVA的WEB容器,其實現(xiàn)了JAVA EE中的 Servlet 與 jsp 規(guī)范,與Nginx apache 服務(wù)器不同在于一般用于動態(tài)請求處理。

在架構(gòu)設(shè)計上采用面向組件的方式設(shè)計, 即整體功能是通過組件的方式拼裝完成。


Tomcat 各組件及關(guān)系

  • Server 和 Service

  • Connector 連接器
    ? HTTP 1.1
    ? SSL https
    ? AJP( Apache JServ Protocol) apache 私有協(xié)議,用于apache 反向代理Tomcat

  • Container
    ? Engine 引擎 catalina
    ? Host 虛擬機 基于域名 分發(fā)請求
    ? Context 隔離各個WEB應(yīng)用 每個Context的 ClassLoader都是獨立

  • Component
    ? Manager (管理器)
    ? logger (日志管理)
    ? loader (載入器)
    ? pipeline (管道)
    ? valve (管道中的閥)


server.xml 配置詳解

上述組件,都是可以在server.xml中配置

server

root元素 , server 的頂級配置

主要屬性:

  • port:執(zhí)行關(guān)閉命令的端口號
  • shutdown:關(guān)閉命令

基于telent 執(zhí)行SHUTDOWN 命令即可關(guān)閉(必須大寫)

telnet 127.0.0.1 8005 SHUTDOWN

service

服務(wù):將多個connector 與一個Engine組合成一個服務(wù),可以配置多個服務(wù)。


connector

連接器:用于接收 指定協(xié)議下的連接 并指定給唯一的Engine 進行處理。

主要屬性:

  • protocol 監(jiān)聽的協(xié)議,默認是http/1.1
  • port 指定服務(wù)器端要創(chuàng)建的端口號
  • minThread服務(wù)器啟動時創(chuàng)建的處理請求的線程數(shù)
  • maxThread最大可以創(chuàng)建的處理請求的線程數(shù)
  • enableLookups如果為true,則可以通過調(diào)用request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名,若為false則不進行DNS查詢,而是返回其ip地址
  • redirectPort指定服務(wù)器正在處理http請求時收到了一個SSL傳輸請求后重定向的端口號
  • acceptCount指定當所有可以使用的處理請求的線程數(shù)都被使用時,可以放到處理隊列中的請求數(shù),超過這個數(shù)的請求將不予處理
  • connectionTimeout指定超時的時間數(shù)(以毫秒為單位) 【請求連接tomcat的最大超時時間,如果超過該時間,tomcat自動掐斷該請求。如果當前可使用的線程都被使用,connectionTimeout時間內(nèi)還是沒有線程能處理該請求,即超時 】
  • SSLEnabled 是否開啟 SSL 驗證,在Https 訪問時需要開啟。

舉個例子

<Connector port="8860" protocol="org.apache.coyote.http11.Http11NioProtocol"connectionTimeout="20000"redirectPort="8862"URIEncoding="UTF-8"useBodyEncodingForURI="true"compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css,application/x-json,application/json,application/x-javascript"maxThreads="1024" minSpareThreads="200"acceptCount="800"enableLookups="false"/>

Engine

引擎:用于處理連接的執(zhí)行器,默認的引擎是catalina。一個service 中只能配置一個Engine。

主要屬性:name 引擎名稱 defaultHost 默認host


Host

虛擬機:基于域名匹配至指定虛擬機。類似于nginx 當中的server,默認的虛擬機是localhost. 主要屬性

舉例配置多個Host

<Host name="www.luban.com" appBase="/usr/www/artisan"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="www.artisan.com.access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host>

Context

應(yīng)用上下文:一個host 下可以配置多個Context ,每個Context 都有其獨立的classPath。相互隔離,以免造成ClassPath 沖突。

舉例配置多個Context

<Context docBase="hello" path="/h" reloadable="true"/>

docBase 不能有 / , 否則是根目錄


Tomcat與App應(yīng)用分開部署

我們平時啟動Tomcat過程是怎么樣的?

  • 復(fù)制WAR包至Tomcat webapp 目錄。
  • 執(zhí)行starut.bat 腳本啟動。
  • 啟動過程中war 包會被自動解壓裝載。
  • 再回想我們在idea 中啟動WEB項目的時候 也是把War包復(fù)雜至webapps 目錄解壓嗎?

    顯然不是,其真正做法是在Tomcat程序文件之外創(chuàng)建了一個部署目錄,在一般生產(chǎn)環(huán)境中也是這么做的 即:Tomcat 程序目錄和部署目錄分開 。

    我們只需要在啟動時指定CATALINA_HOME 與 CATALINA_BASE 參數(shù)即可實現(xiàn)。

    啟動參數(shù)描述說明
    JAVA_OPTSjvm 啟動參數(shù) , 設(shè)置內(nèi)存 編碼等 -Xms200m -Xmx200m -Dfile.encoding=UTF-8
    JAVA_HOME指定jdk 目錄,如果未設(shè)置從java 環(huán)境變量當中去找。
    CATALINA_HOMETomcat 程序根目錄
    CATALINA_BASE應(yīng)用部署目錄,默認為$CATALINA_HOME
    CATALINA_OUT應(yīng)用日志輸出目錄:默認$CATALINA_BASE/logs
    CATALINA_TMPDIR應(yīng)用臨時目錄:默認:$CATALINA_BASE/temp

    好處很明顯:

    • 不會和 tomcat耦合在一起,升級tomcat版本很方便 ,搞個軟連接愛指哪兒指哪兒
    • 配置文件隔離 : conf目錄每個app都有一份,那豈不是什么端口號啊 想改就改~ ,改了這個AP的,也不影響另外一個AP的。因為conf是每個應(yīng)用都有自己的嘛

    當然了,缺點也是你得搞個啟動腳本

    操作步驟:

  • 下載tomcat8.5+, 解壓,比如這里解壓到/root/artisan ,當然了你可以搞個軟連接指定8.5+的版本。 后續(xù)升級維護這個軟連接的指向即可
  • 新建目錄用于存放你的應(yīng)用,比如叫apps 然后下面存放你的其中一個應(yīng)用,比如叫 artisanAPP,也可以放多個 artisanAPP2 . 這些應(yīng)用都是可以單獨啟動的。
  • copy tomcat 中的 conf 和 webapps 到你的apps/artisanAPP目錄下
  • apps/artisanAPP目錄下新建logs目錄 (一定要建,不然報錯)
  • 編寫啟動腳本 tomcat.sh ,如下
  • #!/bin/bash export JAVA_OPTS="-Xms1024m -Xmx1024m" export JAVA_HOME=/root/artisan/jdk export CATALINA_HOME=/root/artisan/apache-tomcat export CATALINA_BASE=`pwd`# start stop restart status case $1 instart)$CATALINA_HOME/bin/catalina.sh startecho "start success";;stop)$CATALINA_HOME/bin/catalina.sh stopecho stop success!!;;restart)$CATALINA_HOME/bin/catalina.sh stopecho stop success!!sleep 3$CATALINA_HOME/bin/catalina.sh startecho start success!!;;version)$CATALINA_HOME/bin/catalina.sh version;;configtest)$CATALINA_HOME/bin/catalina.sh configtest;;esac exit 0

    以上是一個比較簡單的啟動tomcat的腳本,本質(zhì)上也是調(diào)用catalina.sh 。

    可以調(diào)用 tomcat.sh/configtest 來驗證配置是否正確。

    總結(jié)

    以上是生活随笔為你收集整理的Tomcat - 你该知道的Tomcat生产环境部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。