Tomcat 是一個(gè)開(kāi)源的(遵循 Apache 2.0 協(xié)議)輕量級(jí) Web 應(yīng)用服務(wù)器中間件铁孵,在中小型系統(tǒng)和并發(fā)量小的場(chǎng)景中普遍使用确沸,是開(kāi)發(fā)和調(diào)試 Servlet 和 JSP 程序的首選中間件西篓。
本方案基于CentOS8系統(tǒng)設(shè)計(jì)蹲盘,建議在RedHat/CentOS系統(tǒng)中使用揖铜。
1.安裝 Tomcat 中間件
注意:安裝 Tomcat 前喊熟,應(yīng)確保系統(tǒng)已經(jīng)正確安裝配置 JDK 柏肪。如何安裝配置 JDK,請(qǐng)閱讀文件《RedHat/CentOS8 安裝配置 OracleJDK 8 和 OpenJDK 1.8》【http://www.reibang.com/p/208cc5b8688b】
第一步芥牌,打開(kāi) Tomcat 官方網(wǎng)站下載頁(yè)面【https://tomcat.apache.org/download-90.cgi】烦味,下載 Tomcat 的編譯程序 tar 包到用戶主目錄中。
第二步壁拉,解壓縮編譯程序 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”:無(wú)此用戶
[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 開(kāi)機(jī)啟動(dòng)服務(wù)配置文件痘昌。
使用文本編輯器打開(kāi)配置文件:
[centos@host ~]$ sudo gedit /usr/lib/systemd/system/tomcat.service
修改或驗(yàn)證文件中的以下參數(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
第五步钥勋,啟動(dòng) Tomcat 服務(wù)炬转,并設(shè)置為開(kāi)機(jī)自動(dòng)啟動(dòng)。
[centos@host ~]$ sudo systemctl daemon-reload
[centos@host ~]$ sudo systemctl enable tomcat.service
[centos@host ~]$ sudo systemctl start tomcat.service
第六步算灸,設(shè)置防火墻端口(CentOS8默認(rèn)安裝firewall防火墻)扼劈,允許"8080"端口(Tomcat 默認(rèn)端口)訪問(wèn)服務(wù)器。
[centos@host ~]$ sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
[centos@host ~]$ sudo firewall-cmd --reload
第七步菲驴,驗(yàn)證安裝荐吵,在瀏覽器中輸入"http://127.0.0.1:8080"來(lái)訪問(wèn) Tomcat 默認(rèn)主頁(yè)。
2.Tomcat 主配置文件詳解
Tomcat 的主配置文件是 "/程序安裝目錄/conf/server.xml"赊瞬,該文件定義了 Tomcat 的監(jiān)聽(tīng)服務(wù)先煎,站點(diǎn),虛擬目錄信息巧涧。
Tomcat 的主配置文件結(jié)構(gòu)如下:
<Server>
<Listener />
<GlobaNamingResources></GlobaNamingResources>
<Service>
<Connector />
<Engine>
<Realm />
<host>
<Context />
<Value />
</host>
</Engine>
</Service>
</Server>
Server(服務(wù)器)節(jié)點(diǎn):Server 定義了一個(gè)提供完整的JVM的獨(dú)立組件薯蝎,服務(wù)器在指定的端口上監(jiān)聽(tīng)shutdown命令。 Server 代表根容器褒侧,它是唯一的良风,且不能做為任何元素的子元素。屬性如下:
-- port:指定監(jiān)聽(tīng) shutdown 命令端口闷供,終止 Tomcat 時(shí)需要在服務(wù)器上發(fā)出 shutdown 命令烟央,必須設(shè)置。
-- shutdown:指定終止 Tomcat 時(shí)歪脏,發(fā)給服務(wù)器的 shutdown 監(jiān)聽(tīng)端口的字符串疑俭,必須設(shè)置。Service(服務(wù))節(jié)點(diǎn):Service 定義了一個(gè)或多個(gè) Connectors 共享一個(gè) Engine 的組合婿失。 Server 可以包含一個(gè)或多個(gè) Service 钞艇。
-- name:指定 Service 的名字。Connector(連接器)節(jié)點(diǎn): Connector 定義請(qǐng)求被接收和應(yīng)答所需要的端口豪硅。每個(gè) Connector 通過(guò)共享的 Engine 處理請(qǐng)求哩照。
-- port:指定服務(wù)器端創(chuàng)建的端口號(hào),這個(gè)端口監(jiān)聽(tīng)來(lái)自客戶端的請(qǐng)求懒浮。
-- protocol:指定 HTTP 協(xié)議飘弧。
-- redirectPort:指定服務(wù)器正在處理 HTTP 請(qǐng)求時(shí)收到了一個(gè) SSL 傳輸請(qǐng)求后重定向的端口號(hào)。
-- connectionTimeout:指定超時(shí)的時(shí)間數(shù)(以毫秒為單位)砚著。Engine(引擎)節(jié)點(diǎn):Engine 定義處理每個(gè)請(qǐng)求的入口點(diǎn)次伶。每個(gè) Service 只能有一個(gè) Engine,處理所有 Connector 接收到的客戶請(qǐng)求稽穆。每個(gè) Engine 可以包含一個(gè)或多個(gè) Host 冠王。
-- name:指定 Engine 的名字。
-- defaultHost:指定默認(rèn) Host 的名字舌镶。Host(主機(jī))節(jié)點(diǎn):Host 定義虛擬主機(jī)柱彻,它包含了一個(gè)或多個(gè) Web 應(yīng)用豪娜。
-- name:指定 Host 的名字。
-- appBase:應(yīng)用程序基本目錄绒疗,即存放應(yīng)用程序(WAR 文件)的目錄侵歇。
-- unpackWARs:指定為"true",則自動(dòng)將WAR文件解壓吓蘑;指定為"false",則不解壓直接從WAR文件中運(yùn)行應(yīng)用程序坟冲。
-- autoDeploy:指定為"true"磨镶,在 Tomcat 服務(wù)處于運(yùn)行狀態(tài)時(shí),能夠自動(dòng)監(jiān)測(cè) appBase 下的 Web 應(yīng)用健提,如果發(fā)現(xiàn)新的 Web 應(yīng)用會(huì)自運(yùn)發(fā)布這個(gè) Web 應(yīng)用琳猫;指定為"false",則不自動(dòng)檢測(cè)私痹。Context(應(yīng)用程序)節(jié)點(diǎn):Context 定義單個(gè) Web 應(yīng)用程序脐嫂,每個(gè) Host 可以包含一個(gè)或多個(gè) Context 。
-- docBase:指定應(yīng)用程序(WAR 文件)的物理目錄紊遵。
-- path:指定應(yīng)用程序的虛擬目錄账千。 URL 請(qǐng)求的形式是"http://IP:PORT/虛擬目錄"。
-- debug:指定輸出的調(diào)試信息暗膜,允許設(shè)置"0-9"匀奏,"0"表示提供最少的信息,"9"表示提供最多的信息学搜。
-- reloadable:指定為"true"娃善,則 Tomcat 會(huì)自動(dòng)檢測(cè)應(yīng)用程序的"/WEB-INF/lib"和 "/WEB-INF/classes"目錄的更新,自動(dòng)裝載新的應(yīng)用程序瑞佩;指定為"false"聚磺,則不會(huì)。Value(日志)節(jié)點(diǎn):定義調(diào)試和錯(cuò)誤信息炬丸。
-- className:指定實(shí)現(xiàn)類瘫寝,默認(rèn)是"org.apache.catalina.valves.AccessLogValve",用于記錄應(yīng)用程序的訪問(wèn)信息御雕。
-- directory:指定日志文件存放的位置矢沿。
-- prefix:指定日志文件名的前綴。
-- suffix:指定日志文件名的后綴酸纲。
-- pattern:指定日志文件記錄的內(nèi)容和格式捣鲸,通過(guò)通配符腳本表示。Realm(認(rèn)證)節(jié)點(diǎn):Realm 定義存放用戶名闽坡,密碼及角色的數(shù)據(jù)庫(kù)栽惶。
-- className:指定實(shí)現(xiàn)類愁溜。
3.使用 Ecplise 發(fā)布 WAR 包
第一步,在需要發(fā)布的項(xiàng)目上右擊外厂,選擇"Export..."冕象。
第二步,選擇"Web"下的"WAR file"選項(xiàng)汁蝶,點(diǎn)擊"Next>"按鈕渐扮。
第三步,點(diǎn)擊"Browse"按鈕掖棉,設(shè)置 WAR 文件存放位置墓律。
第四步,設(shè)置 WAR 包文件部署的服務(wù)器運(yùn)行環(huán)境幔亥,如:Tomcat耻讽;設(shè)置是否將源文件一并導(dǎo)出到 WAR 文件中(不選擇則只導(dǎo)出編譯文件,不建議選擇)帕棉,點(diǎn)擊“Finish”按鈕等待導(dǎo)出進(jìn)度完成针肥。
4.在 Tomcat 中部署 WAR 包
方案一:在默認(rèn)站點(diǎn)中的應(yīng)用程序目錄中部署。(最簡(jiǎn)部署)
將已發(fā)布的 WAR 文件拷貝到"/程序安裝目錄/webapps"目錄中即可香伴,Tomcat 會(huì)自動(dòng)檢測(cè)部署慰枕,用戶通過(guò)"http://ip:port/WAR文件名"即可訪問(wèn),默認(rèn)的端口是8080瞒窒。
方案二:在默認(rèn)站點(diǎn)中建立虛擬目錄的方式部署捺僻。
① 修改主配置文件 "/程序安裝目錄/conf/server.xml",在默認(rèn) Host(站點(diǎn))中增加 Context(應(yīng)用程序)的定義崇裁。
使用文本編輯器打開(kāi)配置文件:
[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 會(huì)自動(dòng)檢測(cè)部署拔稳,用戶通過(guò)"http://ip:port/virtualdirectory/WAR文件名"即可訪問(wèn)葛峻,默認(rèn)的端口是8080。
方案三:建立新的站點(diǎn)部署(主機(jī)頭部署)巴比。
① 修改主配置文件 "/程序安裝目錄/conf/server.xml"术奖,在默認(rèn)的 Service (服務(wù))中增加自定義 Host 的定義。
使用文本編輯器打開(kāi)配置文件:
[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 "%r" %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 會(huì)自動(dòng)檢測(cè)部署,用戶通過(guò)"http://www.host.com:port/WAR文件名"即可訪問(wèn)政勃,默認(rèn)的端口是8080唧龄。
④ 在 DNS 服務(wù)器上建立域名"www.host.com"與服務(wù)器 IP 地址的解析記錄。**
方案四:建立新的監(jiān)聽(tīng)端口部署奸远。
① 修改主配置文件 "/程序安裝目錄/conf/server.xml"既棺,增加新的 Service(服務(wù))的定義讽挟。
使用文本編輯器打開(kāi)配置文件:
[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 "%r" %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
重啟啟動(dòng) Tomcat 后丸冕,會(huì)監(jiān)聽(tīng)8081端口耽梅。在新的 Service(服務(wù))中,繼續(xù)選擇方案一胖烛、方案二眼姐、方案三的方式部署站點(diǎn)和應(yīng)用程序,但是在訪問(wèn)時(shí)應(yīng)使用新的端口號(hào)洪己。