tomcat Web服務器 文件結構和發佈網站

web服務器和客戶端大致工作流程爲:客戶端向web服務器發送一個HTTP請求,web服務器接收一個請求,向客戶端響應一個http請求。這裏面會涉及服務端(Servlet-side服務器處理數據)技術,如:CGI,JSP(JavaServer Pages),servlets,ASP,JavaScript等。Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,可解析http協議,它使用服務器端技術。

下載好的tomcat文件如下:

根目錄有可執行文件夾(bin)、配置文件夾(conf)、lib(庫文件夾)、logs(日誌)、temp(臨時文件夾)、webapps(網頁應用程序)、work(工作),以及license、notice幾個文件。

LICENSE:許可證,記錄tomcat的一些條款,一些開源的協議。

NOTICE:注意事項。記錄tomcat的新的通知,公告。

RELEASE-NOTES:發行版本說明,一些捆綁的API,新特性等等。

RUNNING.txt:運行環境以及怎樣配置參數,變量,啓動等等。

bin

bin文件夾下面放的是可執行性文件。其中:bat/exe文件是windows下可執行的腳本文件;sh文件時Linux/Unix下可執行的腳本文件。

bootstrap.jar 從文件名可以看出這個jar包是引導程序jar包,是tomcat的入口。

catalina.bat 這個腳本就比較重要了,這個腳本完成了很多基本操作,如啓動、關閉等,catalina.bat都參與其中。

catalina.sh文件作用同catalina.bat,只不過在Linux/Unix系統下運行。

catalina-tasks.xml 配置文件,主要是引入各種jar包。

commons-daemon-native.tar.gz Linux/Unix下。

configtest.bat 檢測語法是否正確的腳本文件。

cpappend.bat 這個腳本可以這樣理解,classpath(cp)append就是將指定參數添加到classpath裏面。

digest.bat 博主暫時也沒弄清。

service.bat 啓動tomcat服務。和註冊tomcat服務那塊有關係。

setclasspath.bat 設置classpath的腳本,在catalin.bat腳本中調用,可以設置java_home,jre_home等。

shutdown.bat  主要是檢查catalina.bat 執行所需環境,並調用catalina.bat 批處理文件關閉tomcat服務。

startup.bat 主要是檢查catalina.bat 執行所需環境,並調用catalina.bat 批處理文件啓動tomcat服務。

tcnative-1.dll 加速器組件,可以提高性能。(也是在網上搜到的)

tomcat8.exe

tomcat8w.exe

tomcat-juli.jar Apache Tomcat由一個自己的實現了java.util.logging多個關鍵元素的實現。這個實現被稱爲“JULI”。實現的核心組件是定製化的LogManager,可以獲取運行在Tomcat中的不同web應用(以及不同的class loader)。他支持爲應用配置單獨的日誌配置。當有web應用從內在中是被卸載時,會接到Tomcat的通知,以便他所引用的類可以被清除,避免內存泄露。

tomcat-native.tar.gz 裏面放的是tomcat本地的library。

tool-wrapper.bat 工具包裝腳本

version.bat 一般是用來判斷系統版本獲取系統版本信息等。

conf

conf目錄主要是用來存放tomcat的一些配置文件。

server.xml可以設置端口號、設置域名或IP、默認加載的項目、請求編碼 

web.xml可以設置tomcat支持的文件類型 

context.xml可以用來配置數據源之類的 

tomcat-users.xml用來配置管理tomcat的用戶與權限 

在Catalina目錄下可以設置默認加載的項目 

屬性

解釋

server

port

指定一個端口,這個端口負責監聽關閉tomcat的請求

shutdown

指定向端口發送的命令字符串

 

GlobalNamingResources

 

服務器的全局JNDI資源,可以有子標籤<Resource></Resource>

Executor(線程池,一個或多個Connector可以共享此線程池)

name

線程池名稱,名稱必須唯一

namePrefix

線程的名字前綴,用來標記線程名字的,這樣每個線程就用這個前綴加上線程編號了,比如 catalina-exec-1 、catalina-exec-2

 

maxThreads

允許的最大線程池裏的線程數量,默認是200,大的併發應該設置的高一些,反正只是限制而已,不佔用資源

 

minSpareThreads

最小的保持活躍的線程數量,默認是25.這個要根據負載情況自行調整了。太小了就影響反應速度,太大了白白佔用資源

 

maxIdleTime

最小的保持活躍的線程數量,默認是25.這個要根據負載情況自行調整了。太小了就影響反應速度,太大了白白佔用資源

 

threadPriority

線程的等級。默認是Thread.NORM_PRIORITY

 

service

name

指定service的名字

Connector (表示客戶端和service之間的連接)

port

指定服務器端要創建的端口號,並在這個斷口監聽來自客戶端的請求

minProcessors

服務器啓動時創建的處理請求的線程數

 

maxProcessors

最大可以創建的處理請求的線程數

 

enableLookups

如果爲true,則可以通過調用request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名,若爲false則不進行DNS查詢,而是返回其ip地址

 

redirectPort

指定服務器正在處理http請求時收到了一個SSL傳輸請求後重定向的端口號

 

acceptCount

指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理

 

connectionTimeout

指定超時的時間數(以毫秒爲單位)

 

Engine (表示指定service中的請求處理機,接收和處理來自Connector的請求)

name

 

defaultHost

指定缺省的處理請求的主機名,它至少與其中的一個host元素的name屬性值是一樣的

 

jvmRoute

   

host (表示一個虛擬主機、並且可以包含Context子節點配置虛擬目錄)

name

指定主機名

appBase

應用程序基本目錄,即存放應用程序的目錄

 

unpackWARs

如果爲true,則tomcat會自動將WAR文件解壓,否則不解壓,直接從WAR文件中運行應用程序

 

autoDeploy

自動部署

 

xmlValidation

是否驗證xml

 

xmlNamespaceAware

   

Realm (表示存放用戶名,密碼及role的數據庫)

className

指定Realm使用的類名,此類必須實現org.apache.catalina.Realm接口

Context(host子節點配置虛擬目錄)

path

虛擬目錄名稱

docBase

物理路徑

 

Debug

Debug模式

 

Reload

True 重新加載,修改後自動加載

上面是server.xml元素的含義。基本配置都在這裏了。

tomcat-users.xml tomcat配置用戶的文件。是指定控制檯用戶、角色、密碼的。

<tomcat-users>
 <role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="123456" roles="admin,manager"/>
</tomcat-users>

通過以上配置,可以爲tomcat添加具有管理員權限的用戶。

web.xml 訪問tomcat入口。配置加載類和資源,如歡迎頁等。


<Host name="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true">
      <Context path="itcast_hello" docBase="F:/hello"/>
</Host>
 

lib

lib目錄主要用來存放tomcat運行需要加載的jar包。 

logs

logs目錄用來存放tomcat在運行過程中產生的日誌文件,非常重要的是在控制檯輸出的日誌。

webapps

webapps目錄用來存放應用程序,當tomcat啓動時會去加載webapps目錄下的應用程序。

 

work

work目錄用來存放tomcat在運行時的編譯後文件,例如JSP編譯後的文件。 

清空work目錄,然後重啓tomcat,可以達到清除緩存的作用。

經常用到的是conf和webapps兩個文件夾,

tomcat組件

頂級組件:位於配置層次的頂級,並且彼此間有着嚴格的對應關係;

連接器:連接客戶端(可以是瀏覽器或Web服務器)請求至Servlet容器,

容器:包含一組其它組件;

被嵌套的組件:位於一個容器當中,但不能包含其它組件;

各常見組件:

1、服務器(server):Tomcat的一個實例,通常一個JVM只能包含一個Tomcat實例;因此,一臺物理服務器上可以在啓動多個JVM的情況下在每一個JVM中啓動一個Tomcat實例,每個實例分屬於一個獨立的管理端口。這是一個頂級組件。

2、服務(service):一個服務組件通常包含一個引擎和與此引擎相關聯的一個或多個連接器。給服務命名可以方便管理員在日誌文件中識別不同服務產生的日誌。一個server可以包含多個service組件,但通常情下只爲一個service指派一個server。

連接器類組件:

3、連接器(connectors):負責連接客戶端(可以是瀏覽器或Web服務器)請求至Servlet容器內的Web應用程序,通常指的是接收客戶發來請求的位置及服務器端分配的端口。默認端口通常是HTTP協議的8080,管理員也可以根據自己的需要改變此端口。一個引擎可以配置多個連接器,但這些連接器必須使用不同的端口。默認的連接器是基於HTTP/1.1的Coyote。同時,Tomcat也支持AJP、JServ和JK2連接器。

容器類組件:

4、引擎(Engine):引擎通是指處理請求的Servlet引擎組件,即Catalina Servlet引擎,它檢查每一個請求的HTTP首部信息以辨別此請求應該發往哪個host或context,並將請求處理後的結果返回的相應的客戶端。嚴格意義上來說,容器不必非得通過引擎來實現,它也可以是隻是一個容器。如果Tomcat被配置成爲獨立服務器,默認引擎就是已經定義好的引擎。而如果Tomcat被配置爲Apache Web服務器的提供Servlet功能的後端,默認引擎將被忽略,因爲Web服務器自身就能確定將用戶請求發往何處。一個引擎可以包含多個host組件。

5、主機(Host):主機組件類似於Apache中的虛擬主機,但在Tomcat中只支持基於FQDN的“虛擬主機”。一個引擎至少要包含一個主機組件。

6、上下文(Context):Context組件是最內層次的組件,它表示Web應用程序本身。配置一個Context最主要的是指定Web應用程序的根目錄,以便Servlet容器能夠將用戶請求發往正確的位置。Context組件也可包含自定義的錯誤頁,以實現在用戶訪問發生錯誤時提供友好的提示信息。

被嵌套類(nested)組件:

這類組件通常包含於容器類組件中以提供具有管理功能的服務,它們不能包含其它組件,但有些卻可以由不同層次的容器各自配置。

7、閥門(Valve):用來攔截請求並在將其轉至目標之前進行某種處理操作,類似於Servlet規範中定義的過濾器。Valve可以定義在任何容器類的組件中。Valve常被用來記錄客戶端請求、客戶端IP地址和服務器等信息,這種處理技術通常被稱作請求轉儲(request dumping)。請求轉儲valve記錄請求客戶端請求數據包中的HTTP首部信息和cookie信息文件中,響應轉儲valve則記錄響應數據包首部信息和cookie信息至文件中。

8、日誌記錄器(Logger):用於記錄組件內部的狀態信息,可被用於除Context之外的任何容器中。日誌記錄的功能可被繼承,因此,一個引擎級別的Logger將會記錄引擎內部所有組件相關的信息,除非某內部組件定義了自己的Logger組件。

9、領域(Realm):用於用戶的認證和授權;在配置一個應用程序時,管理員可以爲每個資源或資源組定義角色及權限,而這些訪問控制功能的生效需要通過Realm來實現。Realm的認證可以基於文本文件、數據庫表、LDAP服務等來實現。Realm的效用會遍及整個引擎或頂級容器,因此,一個容器內的所有應用程序將共享用戶資源。同時,Realm可以被其所在組件的子組件繼承,也可以被子組件中定義的Realm所覆蓋。

引擎(Engine):引擎是指處理請求的Servlet引擎組件,即Catalina Servlet引擎,它從HTTPconnector接收請求並響應請求。它檢查每一個請求的HTTP首部信息以辨別此請求應該發往哪個host或context,並將請求處理後的結果返回的相應的客戶端。嚴格意義上來說,容器不必非得通過引擎來實現,它也可以是隻是一個容器。如果Tomcat被配置成爲獨立服務器,默認引擎就是已經定義好的引擎。而如果Tomcat被配置爲Apache Web服務器的提供Servlet功能的後端,默認引擎將被忽略,因爲Web服務器自身就能確定將用戶請求發往何處。一個引擎可以包含多個host組件。

Tomcat連接器架構:

基於Apache做爲Tomcat前端的架構來講,Apache通過mod_jk、mod_jk2或mod_proxy模塊與後端的Tomcat進行數據交換。而對Tomcat來說,每個Web容器實例都有一個Java語言開發的連接器模塊組件,在Tomcat6中,這個連接器是org.apache.catalina.Connector類。這個類的構造器可以構造兩種類別的連接器:HTTP/1.1負責響應基於HTTP/HTTPS協議的請求,AJP/1.3負責響應基於AJP的請求。但可以簡單地通過在server.xml配置文件中實現連接器的創建,但創建時所使用的類根據系統是支持APR(Apache Portable Runtime)而有所不同。

APR是附加在提供了通用和標準API的操作系統之上一個通訊層的本地庫的集合,它能夠爲使用了APR的應用程序在與Apache通信時提供較好伸縮能力時帶去平衡效用。
同時,需要說明的是,mod_jk2模塊目前已經不再被支持了,mod_jk模塊目前還apache被支持,但其項目活躍度已經大大降低。因此,目前更常用 的方式是使用mod_proxy模塊。

如果支持APR:

1

2

HTTP/1.1:org.apache.cotote.http11.Http11AprProtocol

AJP/1.3:org.apache.coyote.ajp.AjpAprProtocol

如果不支持APR:

1

2

HTTP/1.1: org.apache.coyote.http11.Http11Protocol

AJP/1.3: org.apache.jk.server.JkCoyoteHandler

連接器協議:

Tomcat的Web服務器連接器支持兩種協議:AJP和HTTP,它們均定義了以二進制格式在Web服務器和Tomcat之間進行數據傳輸,並提供相應的控制命令。

AJP(Apache JServ Protocol)協議:目前正在使用的AJP協議的版本是通過JK和JK2連接器提供支持的AJP13,它基於二進制的格式在Web服務器和Tomcat之間傳輸數據,而此前的版本AJP10和AJP11則使用文本格式傳輸數據。

HTTP協議:誠如其名稱所表示,其是使用HTTP或HTTPS協議在Web服務器和Tomcat之間建立通信,此時,Tomcat就是一個完全功能的HTTP服務器,它需要監聽在某端口上以接收來自於商前服務器的請求。

 

附件:tomcat配置網站完整過程。

一 什麼是tomcat

Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。

Tomcat是一個JSP/Servlet容器。其作爲Servlet容器,有三種工作模式:獨立的Servlet容器、進程內的Servlet容器和進程外的Servlet容器。

二 tomcat 的版本:

tomcat 現有的版本有tomcat 7 ,tomcat 8 tomcat8.5,tomcat 9
image
我們可以在圖片中看到tomcat8.0版本後續也是不會再進行更新和升級了,我們可以使用tomcat8.5和9.0

三 tomcat的下載

3.1 tomcat9版本下載鏈接

https://tomcat.apache.org/download-90.cgi

3.2 tomcat8.5版本下載鏈接

https://tomcat.apache.org/download-80.cgi

我們可以根據我們需要版本和系統進行下載。

四 tomcat的安裝

tomcat的安裝,由於該應用常用在linux服務器上,我們的安裝教程是基於centos7進行安裝:

4.1 java環境配置

tomcat 9 版本需要java8以上才能支持
cd /tmp && wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm 
rpm -ivh jdk-8u131-linux-x64.rpm
 環境變量:
vi + /etc/profile 
JAVA_HOME=/usr/java/jdk1.8.0_131 
CLASSPATH=.:$JAVA_HOME/lib.tools.jar 
PATH=$JAVA_HOME/bin:$PATH export 
JAVA_HOME CLASSPATH PATH 

#加載環境變量source /etc/profile

4.2 tomcat安裝

# 安裝wgetyum install wget -y# 下載tomcat包cd /tmp &&wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.13/bin/apache-tomcat-9.0.13.tar.gz# 解壓tar -xzvf  apache-tomcat-9.0.13.tar.gz# 移動到指定位置並重命名mv /tmp/apache-tomcat-9.0.13 /opt/tomcat9# 啓動 tomcat/opt/tomcat9/bin/startup.sh 
或者
/opt/tomcat9/bin/catalina.sh start# # 關閉tomcat/opt/tomcat9/bin/shutdown.sh
或者
/opt/tomcat9/bin/catalina.sh stop
還可以直接kill 進程號,當我們的tomcat是有用戶進行訪問的時候,我們殺死不了這個進程,只能通過強制殺死 kill -9# 查看當前的版本/opt/tomcat9/bin/version.sh# 開放端口tomcat 默認訪問端口是8080,我們可以在conf目錄的文件server.xml的69行進行端口更改。

firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
如果是在阿里雲進行配置的話,記得打開安全組的8080端口.

訪問:

路徑是 ip:8080(tomcat默認是綁定ip 0.0.0.0)
image

五 tomcat的目錄結構

bin  # 腳本啓動目錄conf #配置文件目錄lib  #tomcat運行的依賴包logs #日誌文件目錄temp #臨時文件目錄webapps  # 用來存放應用程序
    --docs  # 文檔
    --examples # 示例
    --host-manager # 虛擬主機web管理界面
    --manager # 管理界面
    --ROOT # 默認訪問的應用程序work # 部署的Web應用程序的臨時工作目錄,當我們需要清除緩存的時候可以將該目錄刪除.然後重啓動tomcat.

六 tomcat的初始化

根據需求來進行初始化

  1. 第一更改端口:

    編輯配置文件 server.xml .
    大約在69行,將 port = "8080"更改成我們想綁定的端口.
    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

  2. 配置編碼

    爲了避免程序上的一些請求和返回的中文亂碼問題.我們需要配置.
    編輯配置文件 server.xml .
    大約在69行後,添加 useBodyEncodingForURI="true" URIEncoding="UTF-8"

    <Connector port="8080" protocol="HTTP/1.1"
                useBodyEncodingForURI="true" URIEncoding="UTF-8"
                connectionTimeout="20000"
                redirectPort="8443" />
  3. 配置文件



     

  4. <Server port="8005" shutdown="SHUTDOWN">
    <!-- 屬性說明
        port:指定一個端口,這個端口負責監聽關閉Tomcat的請求
        shutdown:向以上端口發送的關閉服務器的命令字符串
    -->
     
      <Listener className="org.apache.catalina.core.AprLifecycleListener" />
      <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
      <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
     
      <GlobalNamingResources>
     
        <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
     
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
           description="User database that can be updated and saved"
               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
     
      </GlobalNamingResources>
    <!--
        每個Service元素只能有一個Engine元素.元素處理在同一個<Service>中所有<Connector>元素接收到的客戶請求
    -->
      <Service name="Catalina">
    <!-- 屬性說明
        name:Service的名稱
    -->
     
        <!--
            Connector元素:
                由Connector接口定義.<Connector>元素代表與客戶程序實際交互的組件,它負責接收客戶請求,以及向客戶返回響應結果.
        -->
        <Connector port="80" maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   connectionTimeout="20000" disableUploadTimeout="true" />
        <!-- 屬性說明
            port:服務器連接器的端口號,該連接器將在指定端口偵聽來自客戶端的請求。
            enableLookups:如果爲true,則可以通過調用request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名;
                        若爲false則不進行DNS查詢,而是返回其ip地址。
            redirectPort:服務器正在處理http請求時收到了一個SSL傳輸請求後重定向的端口號。
            acceptCount:當所有可以使用的處理請求的線程都被用光時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理,而返回Connection refused錯誤。
            connectionTimeout:等待超時的時間數(以毫秒爲單位)。
            maxThreads:設定在監聽端口的線程的最大數目,這個值也決定了服務器可以同時響應客戶請求的最大數目.默認值爲200。
            protocol:必須設定爲AJP/1.3協議。
            address:如果服務器有兩個以上IP地址,該屬性可以設定端口監聽的IP地址,默認情況下,端口會監聽服務器上所有IP地址。
            minProcessors:服務器啓動時創建的處理請求的線程數,每個請求由一個線程負責。
            maxProcessors:最多可以創建的處理請求的線程數。
            minSpareThreads:最小備用線程 。
            maxSpareThreads:最大備用線程。
            debug:日誌等級。
            disableUploadTimeout:禁用上傳超時,主要用於大數據上傳時。
        -->
     
     
        <Connector port="8009" 
                   enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
        <!-- 負責和其他HTTP服務器建立連接。在把Tomcat與其他HTTP服務器集成時就需要用到這個連接器。 -->
        
        <Engine name="Catalina" defaultHost="localhost">
        <!-- 屬性說明
            name:對應$CATALINA_HOME/config/Catalina中的Catalina 
            defaultHost:對應Host元素中的name屬性,也就是和$CATALINA_HOME/config/Catalina/localhost中的localhost
                缺省的處理請求的虛擬主機名,它至少與其中的一個Host元素的name屬性值是一樣的
            debug:日誌等級
        -->
     
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                 resourceName="UserDatabase"/>
        <!--
            由Host接口定義.一個Engine元素可以包含多個<Host>元素.
                每個<Host>的元素定義了一個虛擬主機.它包含了一個或多個Web應用.
        -->
        <Host name="localhost" appBase="webapps"
           unpackWARs="true" autoDeploy="true"
           xmlValidation="false" xmlNamespaceAware="false">
        
        <!-- 屬性說明
            name:在此例中一直被強調爲$CATALINA_HOME/config/Catalina/localhost中的localhost虛擬主機名
            debug:是日誌的調試等級 
            appBase:默認的應用路徑,也就是把應用放在一個目錄下,並在autoDeploy爲true的情況下,可自動部署應用此路徑相對於$CATALINA_HOME/ (web applications的基本目錄)
            unpackWARs:設置爲true,在Web應用爲*.war是,解壓此WAR文件. 
                       如果爲true,則tomcat會自動將WAR文件解壓;否則不解壓,直接從WAR文件中運行應用程序.
            autoDeploy:默認爲true,表示如果有新的WEB應用放入appBase 並且Tomcat在運行的情況下,自動載入應用 
        -->
     
        <Context path="/demm" docBase="E:\\projects\\demm\\WebRoot" debug="0" reloadable="true" > 
            </Context>
        <!-- 屬性說明
            path:訪問的URI,如:http://localhost/是我的應用的根目錄,訪問此應用將用:http://localhost/demm進行操作,此元素必須,
                表示此web application的URL的前綴,用來匹配一個Context。請求的URL形式爲http://localhost:8080/path/*
            docBase:WEB應用的目錄,此目錄必須符合Java WEB應用的規範,web application的文件存放路徑或者是WAR文件存放路徑。
            debug:日誌等級 
            reloadable:是否在程序有改動時重新載入,設置成true會影響性能,但可自動載入修改後的文件,
                如果爲true,則Tomcat將支持熱部署,會自動檢測web application的/WEB-INF/lib和/WEB-INF/classes目錄的變化,
                自動裝載新的JSP和Servlet,我們可以在不重起Tomcat的情況下改變web application
        -->
          </Host>
        </Engine>
      </Service>
    </Server>

七 tomcat的啓動

# 啓動 tomcat/opt/tomcat9/bin/startup.sh 
或者/opt/tomcat9/bin/catalina.sh start# # 關閉tomcat/opt/tomcat9/bin/shutdown.sh
或者/opt/tomcat9/bin/catalina.sh stop
還可以直接kill 進程號,當我們的tomcat是有用戶進行訪問的時候,我們殺死不了這個進程,只能通過強制殺死 kill -9# 查看當前的版本/opt/tomcat9/bin/version.sh

八 tomcat更改綁定ip

在生產環境我們經常有這樣的需求,將tomcat的綁定ip更改.不讓外部人可以直接訪問.

tomcat默認的綁定是 0.0.0.0 ,也就意味着這樣外網就可以訪問我們的tomcat,
但是我們想要我們的tomcat不讓外網訪問

解決方法:

  1. 更改綁定ip,綁定127.0.0.1,這樣就只能本機訪問了
    編輯配置文件 server.xml .
    大約在69行,在配置端口的地方,添加 :address="127.0.0.1"

    <Connector port="8080" protocol="HTTP/1.1"
           address="127.0.0.1"
           connectionTimeout="20000"
           redirectPort="8443" />
  2. 更改防火牆規則,不對外開放8080端口.

    firewall-cmd  --remove-port=8080/tcp --permanentfirewall-cmd  --reload

九 tomcat隱藏manager界面

通過nginx重定向的隱藏界面

十 jenkins使用插件自動部署tomcat

使用jenkins來進行發佈war包

  1. 除了常規的將tomcat暫停後,進行刪除原來的war包,scp傳輸新的war包,啓動tomcat

  2. 還可以使用插件 deploy war/ear to a container ,通過tomcat的manager界面來進行 來進行發佈。

deploy war/ear to a container:發佈war包到服務器

deploy artifacts to maven reepository:發佈到maven服務器

image

WAR/EAR files: 填的是生成的wa包的路徑。ugou-admin/target/ugou-admin.war(實際路徑是:/root/.jenkins/jobs/ugou-admin-online/workspace/ugou-admin/target/ugou-admin.war)
Context path: 填的是上傳到tomcat的路徑。即使用localhost/(content path設置的名字)來訪問項目
比如我的項目訪問路徑是 :http://127.0.0.1/ugou-admin/ 那麼這裏我應該填入的就是 /ugou-admin

Container: 選擇我們使用的tomcat版本。
Manager user name /Manager password: 填入我們在$CATALINA_BASE/conf/tomcat-users.xml 配置的用戶名和密碼

Tomcat URL : 填入我們的tomcat url 比如我們設置的端口是80 那麼直接填入ip就行了 :http://127.0.0.1/,如果有端口,那麼我們就需要填入對應的端口

Deploy on failure : 構建失敗是否還發布。勾選表示是,不勾選表示不是,生產環境建議不勾選。

十一 tomcat 部署項目的三種方法(補充)

11.1 方法一 把war包添加到webapps

直接將 war 包放在 ./webapps 下

tomcat 會自動將war解壓

image

11.2 方法二 更改配置文件 server.xml(官方不建議使用該方法)

我們可以在 ./conf/目錄下找到server.xml文件
我們需要在 裏面添加上我們的項目的訪問路徑和存放路徑配置

<Context  path="/djx" docBase="/tmp/djx/" reloadable="true" />
path 指的是 訪問路徑  
docBase 指的是項目存放路徑
reloadable 設置爲true表示Catalina將監視 /WEB-INF/classes/和/WEB-INF/lib的文件,一旦發生更改將自動重新加載Web應用程序。它可以在在開發的時候使用,但需要消耗更多資源,官方文檔寫到不建議在生產環境上使用,所以它的默認值是false.8.0版本文檔
Set to true if you want Catalina to monitor classes in /WEB-INF/classes/ and /WEB-INF/lib for changes, and automatically reload the web application if a change is detected. This feature is very useful during application development, but it requires significant runtime overhead and is not recommended for use on deployed production applications. That's why the default setting for this attribute is false. You can use the Manager web application, however, to trigger reloads of deployed applications on demand.

配置示例:

配置示例

11.3 方法三 使用xml配置文件(建議方法)

在 ./conf/Catalina/localhost/ 下添加xml配置文件.

示例: 我要讓/tmp/www/ 裏的網站部署在tomcat上 。

vim  djx.xml    # 文件的名稱也就是我們後面訪問時要在ip端口加的後綴

djx.xml 內容,docBase 後面填入項目的路徑

<Context  docBase="/tmp/www/" />

然後我們重啓tomcat,然後在瀏覽器 192.168.1.198/djx/訪問的文件名 即可訪問到我們的項目文件了
image

11.4 注意點

注意點一

方法三中如果我想直接通過ip+端口就能直接訪問到我部署的項目,那麼我們這個xml 文件的名稱就應該是 ROOT.xml(要全都大寫哦)

第三種的文件命名示例:
image

注意點二

對於參數reloadable="true" ,在方法二特別說明了,大家注意。

 

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