目錄
1、概念介紹
Tomcat 組件
HTTP 請(qǐng)求過程
Tomcat 目錄結(jié)構(gòu)
Tomcat 命令
配置文件說明
2、安裝環(huán)境
安裝JDK
安裝Tomcat
創(chuàng)建管理用戶
3、搭建虛擬主機(jī)
1、概念介紹
端口:8080
Tomcat 服務(wù)器是一個(gè)免費(fèi)的開放源代碼的 Web 應(yīng)用服務(wù)器, 按照 Sun 提供的技術(shù)規(guī)范,實(shí)現(xiàn)了對(duì) Servlet 和 Java Server Page(JSP)的支持。使用 HTTP 協(xié)議與客戶端(通常是瀏覽器)進(jìn)行通信。Tomcat 是一個(gè)小型的輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場(chǎng)合下被普遍使用,是開發(fā)和調(diào)試 JSP 程序的首選,因?yàn)?Tomcat 技術(shù)先進(jìn)、性能穩(wěn)定,成為目前比較流行的 Web 應(yīng)用服務(wù)器。Tomcat 是應(yīng)用(java)服務(wù)器,它只是一個(gè) servlet 容器,是 Apache 的擴(kuò)展,但它是獨(dú)立運(yùn)行的。由于 Tomcat 本身也內(nèi)含了一個(gè) HTTP 服務(wù)器,它也可以被視作一個(gè)單獨(dú)的 Web 服務(wù)器。
Tomcat 和 apache、nginx 等 Web 服務(wù)器一樣,具有處理 HTML 頁面的功能。不過,Tomcat 處理靜態(tài) HTML 的能力不如 Apache 和 nginx 服務(wù)器。
Web serever 只能完成靜態(tài)資源的請(qǐng)求;Servlet 容器能夠進(jìn)行動(dòng)態(tài)資源的請(qǐng)求;
Servlet
Servlet(Server Applet)是 Java Servlet 的簡稱,稱為小服務(wù)程序或服務(wù)連接器,用 Java 編寫的服務(wù)器端程序,主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)Web 內(nèi)容。
Servlet 架構(gòu),在軟件里面位置如下:
1、客戶端發(fā)送請(qǐng)求至服務(wù)器端;
2、服務(wù)器將請(qǐng)求信息發(fā)送至 Servlet;
3、Servlet 生成響應(yīng)內(nèi)容并將其傳給服務(wù)器。響應(yīng)內(nèi)容動(dòng)態(tài)生成,通常取決于客戶端的請(qǐng)求;
4、服務(wù)器將響應(yīng)返回給客戶端。
Tomcat 組件
Tomcat 主要組件:服務(wù)器 Server,服務(wù) Service,連接器 Connector、容器 Container。連接器 Connector 和容器 Container 是 Tomcat 的核心。
Tomcat 組件 |
說明 |
Server |
Tomcat 中最頂層的容器是 ,代表著整個(gè)服務(wù)器,一個(gè)Server 可以包含至少一個(gè) Service,用于具體提供服務(wù)。 |
Connector |
用于處理連接相關(guān)的事情,并提供 Socket 與 Request 和 Response 相關(guān)的轉(zhuǎn)化; |
Container |
用于封裝和管理 Servlet,以及具體處理 Request 請(qǐng)求。 |
Tomcat 還有其它重要的組件,如安全組件 security、logger 日志組件、session、 mbeans、naming 等其它組件。這些組件共同為 Connector 和 Container 提供必要的服務(wù)。
Connector
一個(gè) Connecter 將在某個(gè)指定的端口上偵聽客戶請(qǐng)求,接收瀏覽器發(fā)過來的tcp 連接請(qǐng)求,創(chuàng)建一個(gè) Request 和 Response 對(duì)象分別用于和請(qǐng)求端交換數(shù)據(jù), 然后會(huì)產(chǎn)生一個(gè)線程來處理這個(gè)請(qǐng)求并把產(chǎn)生的 Request 和 Response 對(duì)象傳給處理 Engine(Container 中的一部分),從 Engine 出獲得響應(yīng)并返回客戶。 一個(gè)服務(wù)可以有多個(gè)連接,如同時(shí)提供 Http 和 Https 鏈接,也可以提供向相同協(xié)議不同端口的連接
Tomcat 中有兩個(gè)經(jīng)典的 Connector,一個(gè)直接偵聽來自 Browser 的 HTTP 請(qǐng)求,另外一個(gè)來自其他的 WebServer 請(qǐng)求。HTTP/1.1 Connector 在端口 8080 處偵聽來自客戶 Browser 的 HTTP 請(qǐng)求,AJP/1.3 Connector 在端口 8009 處偵聽其他 Web Server 的 Servlet/JSP 請(qǐng)求。
http 協(xié)議訪問端(默認(rèn)為 8080),負(fù)責(zé)建立 HTTP 連接。在通過瀏覽器訪問 Tomcat服務(wù)器的 Web 應(yīng)用時(shí),使用的就是這個(gè)連接器。
AJP 協(xié)議訪問端口(默認(rèn)為 8009 端口),負(fù)責(zé)和其他的 HTTP 服務(wù)器建立連接。在把 Tomcat 與其他 HTTP 服務(wù)器集成時(shí),就需要用到這個(gè)連接器。
Container
Container 用于封裝和管理 Servlet,以及具體處理 Request 請(qǐng)求,在 Container 內(nèi)部包含了 4 個(gè)子容器
① Engine:引擎,用來管理多個(gè)站點(diǎn),一個(gè) Service 最多只能有一個(gè) Engine;
Engine 用來接收并處理從 Connector 發(fā)來的請(qǐng)求,并將處理結(jié)果返回 Connector。 一個(gè) Engine 可以包含一個(gè)或多個(gè) Host。
Engine 下可以配置多個(gè)虛擬主機(jī) Virtual Host,每個(gè)虛擬主機(jī)都有一個(gè)域名,當(dāng)Engine 獲得一個(gè)請(qǐng)求時(shí),它把該請(qǐng)求匹配到某個(gè) Host 上,然后把該請(qǐng)求交給該 Host 來處理。Engine 有一個(gè)默認(rèn)虛擬主機(jī),當(dāng)請(qǐng)求無法匹配到任何一個(gè) Host 上的時(shí)候,將交給該默認(rèn) Host 來處理。
② Host:代表一個(gè) Virtual Host,虛擬主機(jī)。
每個(gè)虛擬主機(jī)和某個(gè)網(wǎng)絡(luò)域名 Domain Name 相匹配,每個(gè)虛擬主機(jī)下都可以部署一個(gè)或者多個(gè) Web App,每個(gè) Web App 對(duì)應(yīng)于一個(gè) Context,有一個(gè) Context path。
當(dāng) Host 獲得一個(gè)請(qǐng)求時(shí),將把該請(qǐng)求匹配到某個(gè) Context 上,然后把該請(qǐng)求交給該 Context 來處理。匹配的方法是“最長匹配”,所以一個(gè) path=""的 Context 將成為該 Host 的默認(rèn) Context,所有無法和其它 Context 的路徑名匹配的請(qǐng)求都將最終和該默認(rèn) Context 匹配。
③ Context:一個(gè) Context 對(duì)應(yīng)于一個(gè) Web Application。
一個(gè) Web Application 由 一 個(gè) 或 者 多 個(gè) Servlet 組 成 。 Context 在 創(chuàng) 建 的 時(shí) 候 將 根 據(jù) 配 置 文 件 $CATALINA_HOME/conf/web.xml
和 $WEBAPP_HOME/WEB-INF/web.xml
載入 Servlet 類,當(dāng) Context 獲得請(qǐng)求時(shí),將在自己的映射表(mapping table)中尋找相匹配的 Servlet 類,如果找到,則執(zhí)行該類,獲得請(qǐng)求的回應(yīng),并返回。
④ Wrapper:每一 Wrapper 封裝著一個(gè) Servlet。
Wrapper 代表一個(gè) Servlet,它負(fù)責(zé)管理一個(gè) Servlet,包括的 Servlet 的裝載、初始化、執(zhí)行以及資源回收。Wrapper 是最底層的容器,它沒有子容器了。
HTTP 請(qǐng)求過程
Tomcat Server 處理一個(gè) HTTP 請(qǐng)求的過程
① 用戶點(diǎn)擊網(wǎng)頁內(nèi)容,請(qǐng)求被發(fā)送到本機(jī)端口 8080,被在那里監(jiān)聽的 Coyote HTTP/1.1 Connector 獲得。
② Connector 把該請(qǐng)求交給它所在的 Service 的 Engine 來處理,并等待 Engine 的回應(yīng)。
③ Engine 獲得請(qǐng)求 localhost/test/index.jsp,匹配所有的虛擬主機(jī) Host。
④ Engine 匹配到名為 localhost 的 Host(即使匹配不到也把請(qǐng)求交給該 Host 處理,因?yàn)樵?Host 被定義為該 Engine 的默認(rèn)主機(jī)),名為 localhost 的 Host 獲得請(qǐng)求/test/index.jsp,匹配它所擁有的所有的 Context。Host 匹配到路徑為/test 的 Context (如果匹配不到就把該請(qǐng)求交給路徑名為 path=””的 Context 去處理)
⑤ path=“/test”的 Context 獲得請(qǐng)求/index.jsp,在它的 mapping table 中尋找出對(duì)應(yīng)的 Servlet。Context 匹配到 URL PATTERN 為*.jsp 的 Servlet,對(duì)應(yīng)于 JspServlet 類。
⑥ 構(gòu)造 HttpServletRequest 對(duì)象和 HttpServletResponse 對(duì)象,作為參數(shù)調(diào)用JspServlet 的 doGet()或 doPost().執(zhí)行業(yè)務(wù)邏輯、數(shù)據(jù)存儲(chǔ)等程序。
⑦ Context 把執(zhí)行完之后的 HttpServletResponse 對(duì)象返回給 Host。
⑧ Host 把 HttpServletResponse 對(duì)象返回給 Engine。
⑨ Engine 把 HttpServletResponse 對(duì)象返回 Connector。
⑩ Connector 把 HttpServletResponse 對(duì)象返回給客戶 Browser。
Tomcat 目錄結(jié)構(gòu)
|---bin:存放啟動(dòng)和關(guān)閉 tomcat 執(zhí)行腳本;
|---conf :存放 Tomcat 服務(wù)器的各種全局配置文件,其中最重要的是server.xml 和 web.xml;
|---lib: 存放 Tomcat 運(yùn)行需要的庫文件(jar),包含 Tomcat 使用的 jar 文件。unix 平臺(tái)此目錄下的任何文件都被加到 Tomcat 的 classpath 中;
|---logs:存放 Tomcat 執(zhí)行時(shí)的 LOG 文件;
|---webapps:Tomcat 的主要 Web 發(fā)布目錄,默認(rèn)情況下把 Web 應(yīng)用文件放于此目錄,即供外界訪問的 web 資源的存放目錄;
|--- webapps/ROOT:tomcat 的家目錄
|--- webapps/ROOT/ index.jsp:Tomcat 的默認(rèn)首頁文件
|---work:存放 jsp 編譯后產(chǎn)生的 class 文件或 servlet 文件存放
|---temp:存放 Tomcat 運(yùn)行時(shí)所產(chǎn)生的臨時(shí)文件
Tomcat 命令
bat 為 windows 下的腳本(批處理) ;sh 為 Linux 下的腳本,Shell
catalina.sh一個(gè)最關(guān)鍵的腳本,其他的啟動(dòng)腳本如 startup,shutdown.sh,都是使用了不同的參數(shù)調(diào)用了該腳本,startup 以 start 參數(shù)調(diào)用了 catalina 腳本, shutdown 使用 stop 調(diào)用了 catalina 腳本!
配置文件說明
server.xml文件:該文件用于配置和server相關(guān)的信息,比如tomcat啟動(dòng)的端口號(hào)、
配置 host 主機(jī)、配置 Context
web.xml 文件:部署描述文件,web.xml 文件有兩部分:Servlet 類定義和 Servlet 映射定義。
這個(gè) web.xml 中描述了一些默認(rèn)的 servlet,部署每個(gè) webapp 時(shí),都會(huì)調(diào)用這個(gè)文件。
這個(gè)文件中也注冊(cè)了很多 MIME 類型,即文檔類型。這些 MIME 類型是客戶端與
服務(wù)器之間說明文檔類型的,如用戶請(qǐng)求一個(gè) html 網(wǎng)頁,那么服務(wù)器會(huì)告訴客戶
端瀏覽器響應(yīng)的文檔是 text/html 類型的,這就是一個(gè) MIME 類型??蛻舳藶g覽器
通過這個(gè) MIME 類型就知道如何處理它了。當(dāng)然是在瀏覽器中顯示這個(gè) html 文件
了。但如果服務(wù)器響應(yīng)的是一個(gè) exe 文件,那么瀏覽器就不可能顯示它,而是應(yīng)該
彈出下載窗口才對(duì)。MIME 就是用來說明文檔的內(nèi)容是什么類型的!
tomcat-users.xml 文件:配置 tomcat 的用戶密碼與權(quán)限。
context.xml:每個(gè) webapp 都可以使用的配置文件,它通常由專用的配置文件
context.xml 來定義,其存放位置為 WEB-INF/目錄中;此文件為所有的 webapps 提
供默認(rèn)配置;例如 context.xml 里設(shè)置 tomcat 數(shù)據(jù)源,用來連接數(shù)據(jù)庫。
catalina.policy:當(dāng)使用-security 選項(xiàng)啟動(dòng) tomcat 時(shí),用于為 tomcat 設(shè)置安全策略;
catalina.properties:Java 屬性的定義文件,用于設(shè)定類加載器路徑,以及一些與JVM 調(diào)優(yōu)相關(guān)參數(shù);
logging.properties:日志系統(tǒng)相關(guān)的配置;
2、安裝環(huán)境
① 下載Tomcat:Apache Tomcat? - Apache Tomcat 8 Software Downloads
② 下載mysql-connector-java:https://dev.mysql.com/downloads/
③ 下載JDK:技術(shù)資源 | Oracle 中國
安裝JDK
# 解壓 jdk
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/
# 配置 JDK 環(huán)境變量
vim /etc/profile # 在文件最后加入一下行
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
# 使環(huán)境變量生效
source /etc/profile
安裝Tomcat
# 解壓軟件包
tar -zxvf apache-tomcat-8.5.42.tar.gz -C /usr/local/
# 更改目錄名稱
mv /usr/local/apache-tomcat-8.5.98/ /usr/local/tomcat
注意:Tomcat 有兩種安裝方式,一種是直接解壓就可以使用的二進(jìn)制文件,第二種是編譯安裝,我們這里采用了第一種方法,下載的 tomcat 軟件直接解壓就可以執(zhí)行的二進(jìn)制文件,因?yàn)樵诠俜侥J(rèn)下載的便是使用第一種方法安裝。
Tomcat 服務(wù)啟動(dòng)腳本
#!/bin/bash
# description:The Apache Tomcat Server/JSP container
JAVA_HOME=/usr/local/jdk1.8.0_171
CATALINA_HOME=/usr/local/tomcat
# tomcat start file
start_tomcat=$CATALINA_HOME/bin/startup.sh
# tomcat stop file
stop_tomcat=$CATALINA_HOME/bin/shutdown.sh
start(){
echo -n "Starting tomcat..."
${start_tomcat}
}
stop(){
echo -n "Shutting down tomcat..."
${stop_tomcat}
echo "Tomcat stop ok."
}
# See how we were called
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 5
start
;;
*)
echo "Usage:$0{start|stop|restart}"
esac
# 啟動(dòng)腳本添加執(zhí)行權(quán)限
chmod +x /etc/init.d/tomcat
Tomcat 系統(tǒng)服務(wù)文件
vim /lib/systemd/system/tomcat.service
[Unit]
Description=tomcat
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/jdk1.8.0_171
Environment=CATALINA_HOME=/usr/local/tomcat
ExecStart=/usr/local/tomcat/bin/startup.sh start
ExecStop=/usr/local/tomcat/bin/shutdown.sh stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 重載 service 文件
systemctl daemon-reload
# 啟動(dòng) tomcat
systemctl start tomcat
# 添加開機(jī)自啟動(dòng)
systemctl enable tomcat
ps -ef | grep tomcat
創(chuàng)建管理用戶
# 修改 tomcat-users.xml 配置文件
vim /usr/local/tomcat/conf/tomcat-users.xml
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="123456"
roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
</tomcat-users>
角色 |
說明 |
manager-gui |
Allows access to the html interface |
manager-script |
Allows access to the plain text interface |
manager-jmx |
Allows access to the JMX proxy interface |
manager-status |
Allows access to the read-only status pages |
admin-gui |
允許訪問 HTML GUI |
admin-script |
允許訪問文本接口 |
tomcat8 以上還要增加以下配置
vim /usr/local/tomcat/conf/Catalina/localhost/manager.xml
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="^.*$" />
重啟服務(wù)重新點(diǎn)擊Manager App -> 輸入admin 123456
3、搭建虛擬主機(jī)
搭建基于域名的虛擬主機(jī):server.xml 是 Tomcat 的主配置文件(全局),服務(wù)器設(shè)置的,例如端口設(shè)置,路徑設(shè)置。
# 修改 server.xml 配置文件
vim /usr/local/tomcat/conf/server.xml
# 在engine標(biāo)簽里添加
<Host name="www.test.com" appBase="/www/html">
<Context path="" docBase="/www/html/web1" />
</Host>
<Host name="www.test.cn" appBase="/www/html">
<Context path="" docBase="/www/html/web2" />
</Host>
Host 元素|子標(biāo)簽 |
說明 |
name |
指定虛擬主機(jī)的名稱,那么使用對(duì)應(yīng)的 ip 將無法訪問,如果需要使用 ip 來訪問,需要把 host 的 name 屬性改成 ip 即可。 |
appBase |
指定應(yīng)用程序(網(wǎng)站)的根目錄,這里可以存放多個(gè)程序(網(wǎng)站),一般是相對(duì)路徑,相對(duì)于 tomcat 的安裝目錄。 |
<Context path=""> |
為虛擬目錄,如果是空,表示直接就是/,如果是如 path="aa",那么訪問的時(shí)候就是 site:8080/aa |
<Context docBase=""> |
為實(shí)際目錄,可以是絕對(duì)路徑,如果是相對(duì)路徑就是基于appBase |
# 創(chuàng)建測(cè)試網(wǎng)頁
mkdir -p /www/html/{web1,web2}
echo "test.com web1" > /www/html/web1/index.html
echo "test.cn web2" > /www/html/web2/index.html
# 修改 hosts
vim /etc/hosts
192.168.1.11 www.test.com
192.168.1.11 www.test.cn
# windows 客戶端修改 hosts
C:\Windows\System32\drivers\etc
192.168.1.11 www.test.com
192.168.1.11 www.test.cn
# 重啟 tomcat
systemctl restart tomcat
文章來源:http://www.zghlxwxcb.cn/news/detail-820079.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-820079.html
到了這里,關(guān)于Tomcat 簡介安裝的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!