RedHat/CentOS8【Tomcat】部署 JavaWeb 應(yīng)用

Tomcat 是一個開源的(遵循 Apache 2.0 協(xié)議)輕量級 Web 應(yīng)用服務(wù)器中間件,在中小型系統(tǒng)和并發(fā)量小的場景中普遍使用,是開發(fā)和調(diào)試 Servlet 和 JSP 程序的首選中間件。

本方案基于CentOS8系統(tǒng)設(shè)計,建議在RedHat/CentOS系統(tǒng)中使用。


1.安裝 Tomcat 中間件

注意:安裝 Tomcat 前,應(yīng)確保系統(tǒng)已經(jīng)正確安裝配置 JDK 。如何安裝配置 JDK,請閱讀文件《RedHat/CentOS8 安裝配置 OracleJDK 8 和 OpenJDK 1.8》【http://www.itdecent.cn/p/208cc5b8688b

第一步,打開 Tomcat 官方網(wǎng)站下載頁面【https://tomcat.apache.org/download-90.cgi】,下載 Tomcat 的編譯程序 tar 包到用戶主目錄中。

Tomcat 下載頁面

第二步,解壓縮編譯程序 tar 包到"/usr/local"目錄中。

[centos@host ~]$ sudo tar zxvf apache-tomcat-9.0.34.tar.gz -C /usr/local
[centos@host ~]$ sudo mv /usr/local/apache-tomcat-9.0.34 /usr/local/tomcat-9.0.34

第三步,創(chuàng)建 Tomcat 管理用戶和組,并設(shè)置為程序安裝目錄的擁有者。

[centos@host  ~ ]$ sudo id tomcat
id: “tomcat”:無此用戶
[centos@host  ~ ]$ sudo groupadd tomcat
[centos@host  ~ ]$ sudo useradd -g tomcat -s /bin/false tomcat
[centos@host  ~ ]$ sudo chown -R tomcat:tomcat /usr/local/tomcat-9.0.34

第四步,創(chuàng)建 Tomcat 開機啟動服務(wù)配置文件。

使用文本編輯器打開配置文件:

[centos@host ~]$ sudo gedit /usr/lib/systemd/system/tomcat.service

修改或驗證文件中的以下參數(shù)并保存:

[Unit]
Description=Tomcat Server
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
Type=forking
User=tomcat
Group=tomcat

Environment=JAVA_HOME=/usr/local/jdk1.8.0_261
Environment=JRE_HOME=/usr/local/jdk1.8.0_261/jre

ExecStart=/usr/local/tomcat-9.0.34/bin/startup.sh
ExecStop=/usr/local/tomcat-9.0.34/bin/shutdown.sh
ExecReload=/usr/local/tomcat-9.0.34/bin/shutdown.sh

第五步,啟動 Tomcat 服務(wù),并設(shè)置為開機自動啟動。

[centos@host ~]$ sudo systemctl daemon-reload
[centos@host ~]$ sudo systemctl enable tomcat.service
[centos@host ~]$ sudo systemctl start tomcat.service

第六步,設(shè)置防火墻端口(CentOS8默認安裝firewall防火墻),允許"8080"端口(Tomcat 默認端口)訪問服務(wù)器。

[centos@host ~]$ sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
[centos@host ~]$ sudo firewall-cmd --reload

第七步,驗證安裝,在瀏覽器中輸入"http://127.0.0.1:8080"來訪問 Tomcat 默認主頁。

Tomcat 驗證頁面


2.Tomcat 主配置文件詳解

Tomcat 的主配置文件是 "/程序安裝目錄/conf/server.xml",該文件定義了 Tomcat 的監(jiān)聽服務(wù),站點,虛擬目錄信息。

Tomcat 的主配置文件結(jié)構(gòu)如下:

<Server>
    <Listener />  
    <GlobaNamingResources></GlobaNamingResources>
    <Service>  
        <Connector />  
        <Engine>  
            <Realm />  
            <host>  
                <Context /> 
                <Value />  
             </host>  
        </Engine>  
    </Service>  
</Server>  
  • Server(服務(wù)器)節(jié)點:Server 定義了一個提供完整的JVM的獨立組件,服務(wù)器在指定的端口上監(jiān)聽shutdown命令。 Server 代表根容器,它是唯一的,且不能做為任何元素的子元素。屬性如下:
    -- port:指定監(jiān)聽 shutdown 命令端口,終止 Tomcat 時需要在服務(wù)器上發(fā)出 shutdown 命令,必須設(shè)置。
    -- shutdown:指定終止 Tomcat 時,發(fā)給服務(wù)器的 shutdown 監(jiān)聽端口的字符串,必須設(shè)置。

  • Service(服務(wù))節(jié)點:Service 定義了一個或多個 Connectors 共享一個 Engine 的組合。 Server 可以包含一個或多個 Service 。
    -- name:指定 Service 的名字。

  • Connector(連接器)節(jié)點: Connector 定義請求被接收和應(yīng)答所需要的端口。每個 Connector 通過共享的 Engine 處理請求。
    -- port:指定服務(wù)器端創(chuàng)建的端口號,這個端口監(jiān)聽來自客戶端的請求。
    -- protocol:指定 HTTP 協(xié)議。
    -- redirectPort:指定服務(wù)器正在處理 HTTP 請求時收到了一個 SSL 傳輸請求后重定向的端口號。
    -- connectionTimeout:指定超時的時間數(shù)(以毫秒為單位)。

  • Engine(引擎)節(jié)點:Engine 定義處理每個請求的入口點。每個 Service 只能有一個 Engine,處理所有 Connector 接收到的客戶請求。每個 Engine 可以包含一個或多個 Host 。
    -- name:指定 Engine 的名字。
    -- defaultHost:指定默認 Host 的名字。

  • Host(主機)節(jié)點:Host 定義虛擬主機,它包含了一個或多個 Web 應(yīng)用。
    -- name:指定 Host 的名字。
    -- appBase:應(yīng)用程序基本目錄,即存放應(yīng)用程序(WAR 文件)的目錄。
    -- unpackWARs:指定為"true",則自動將WAR文件解壓;指定為"false",則不解壓直接從WAR文件中運行應(yīng)用程序。
    -- autoDeploy:指定為"true",在 Tomcat 服務(wù)處于運行狀態(tài)時,能夠自動監(jiān)測 appBase 下的 Web 應(yīng)用,如果發(fā)現(xiàn)新的 Web 應(yīng)用會自運發(fā)布這個 Web 應(yīng)用;指定為"false",則不自動檢測。

  • Context(應(yīng)用程序)節(jié)點:Context 定義單個 Web 應(yīng)用程序,每個 Host 可以包含一個或多個 Context 。
    -- docBase:指定應(yīng)用程序(WAR 文件)的物理目錄。
    -- path:指定應(yīng)用程序的虛擬目錄。 URL 請求的形式是"http://IP:PORT/虛擬目錄"。
    -- debug:指定輸出的調(diào)試信息,允許設(shè)置"0-9","0"表示提供最少的信息,"9"表示提供最多的信息。
    -- reloadable:指定為"true",則 Tomcat 會自動檢測應(yīng)用程序的"/WEB-INF/lib"和 "/WEB-INF/classes"目錄的更新,自動裝載新的應(yīng)用程序;指定為"false",則不會。

  • Value(日志)節(jié)點:定義調(diào)試和錯誤信息。
    -- className:指定實現(xiàn)類,默認是"org.apache.catalina.valves.AccessLogValve",用于記錄應(yīng)用程序的訪問信息。
    -- directory:指定日志文件存放的位置。
    -- prefix:指定日志文件名的前綴。
    -- suffix:指定日志文件名的后綴。
    -- pattern:指定日志文件記錄的內(nèi)容和格式,通過通配符腳本表示。

  • Realm(認證)節(jié)點:Realm 定義存放用戶名,密碼及角色的數(shù)據(jù)庫。
    -- className:指定實現(xiàn)類。


3.使用 Ecplise 發(fā)布 WAR 包

第一步,在需要發(fā)布的項目上右擊,選擇"Export..."。

第二步,選擇"Web"下的"WAR file"選項,點擊"Next>"按鈕。

第三步,點擊"Browse"按鈕,設(shè)置 WAR 文件存放位置。

第四步,設(shè)置 WAR 包文件部署的服務(wù)器運行環(huán)境,如:Tomcat;設(shè)置是否將源文件一并導(dǎo)出到 WAR 文件中(不選擇則只導(dǎo)出編譯文件,不建議選擇),點擊“Finish”按鈕等待導(dǎo)出進度完成。


4.在 Tomcat 中部署 WAR 包

方案一:在默認站點中的應(yīng)用程序目錄中部署。(最簡部署)

將已發(fā)布的 WAR 文件拷貝到"/程序安裝目錄/webapps"目錄中即可,Tomcat 會自動檢測部署,用戶通過"http://ip:port/WAR文件名"即可訪問,默認的端口是8080。

方案二:在默認站點中建立虛擬目錄的方式部署。

① 修改主配置文件 "/程序安裝目錄/conf/server.xml",在默認 Host(站點)中增加 Context(應(yīng)用程序)的定義。

使用文本編輯器打開配置文件:

[centos@host ~]$ sudo gedit /usr/local/tomcat-9.0.34/conf/server.xml

在文件中的增加以下配置并保存:

<Server>
    <Service>  
        <Engine>
           <Host name="localhost" appBase="webapps" autoDeploy="true">
              <Context path="/virtualdirectory" docBase="physicaldirectory" reloadable="true" debug="0" />
           </Host>
        </Engine>  
    </Service>  
</Server>

② 在"/程序安裝目錄/webapps"中創(chuàng)建"physicaldirectory"目錄。

[centos@host ~]$ sudo -u tomcat mkdir /usr/local/tomcat-9.0.34/webapps/physicaldirectory

③ 并將已發(fā)布的 WAR 文件拷貝到該目錄中,Tomcat 會自動檢測部署,用戶通過"http://ip:port/virtualdirectory/WAR文件名"即可訪問,默認的端口是8080。

方案三:建立新的站點部署(主機頭部署)。

① 修改主配置文件 "/程序安裝目錄/conf/server.xml",在默認的 Service (服務(wù))中增加自定義 Host 的定義。

使用文本編輯器打開配置文件:

[centos@host ~]$ sudo gedit /usr/local/tomcat-9.0.34/conf/server.xml

在文件中的增加以下配置并保存:

<Server>
    <Service>  
        <Engine>
           <Host name="www.host.com" appBase="hostapps" autoDeploy="true">
               <Valve className="org.apache.catalina.valves.AccessLogValve" directory="hostlogs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            </Host>
         </Engine>  
    </Service>  
</Server>

② 在"/程序安裝目錄"中創(chuàng)建"hostapps"和"hostlogs"目錄。

[centos@host ~]$ sudo -u tomcat mkdir /usr/local/tomcat-9.0.34/hostapps
[centos@host ~]$ sudo -u tomcat mkdir /usr/local/tomcat-9.0.34/hostlogs

③ 將已發(fā)布的 WAR 文件拷貝到該目錄中,Tomcat 會自動檢測部署,用戶通過"http://www.host.com:port/WAR文件名"即可訪問,默認的端口是8080。

④ 在 DNS 服務(wù)器上建立域名"www.host.com"與服務(wù)器 IP 地址的解析記錄。**

方案四:建立新的監(jiān)聽端口部署。

① 修改主配置文件 "/程序安裝目錄/conf/server.xml",增加新的 Service(服務(wù))的定義。

使用文本編輯器打開配置文件:

[centos@host ~]$ sudo gedit /usr/local/tomcat-9.0.34/conf/server.xml

在文件中的增加以下配置并保存:

<Server>
    <Service name="Catalina_New">
        <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
        <Engine name="Catalina" defaultHost="localhost">
            <Host name="localhost" appBase="webapps_new" autoDeploy="true">
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs_new"
                    prefix="localhost_access_log" suffix=".txt"
                    pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            </Host>
         </Engine>
    </Service>
</Server>

② 在"/程序安裝目錄"中創(chuàng)建"webapps_new"和"logs_new"目錄。

[centos@host ~]$ sudo -u tomcat mkdir /usr/local/tomcat-9.0.34/webapps_new
[centos@host ~]$ sudo -u tomcat mkdir /usr/local/tomcat-9.0.34/logs_new

重啟啟動 Tomcat 后,會監(jiān)聽8081端口。在新的 Service(服務(wù))中,繼續(xù)選擇方案一、方案二、方案三的方式部署站點和應(yīng)用程序,但是在訪問時應(yīng)使用新的端口號。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容