本節索引:
一、tomcat介紹
二、tomcat服務配置
三、實驗:實現tomcat應用部署及版本控制
四、實驗:tomcat創建虛擬主機Host及Context
五、實驗:開啟tomcat管理頁面
一、tomcat介紹
Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由
Apache、Sun 和其他一些公司及個人共同開發而成。因為Tomcat 技術先進、性能穩定,而且免費,因而
深受Java 愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并
發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對于一個初學者來說,可以這
樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應HTML(標準通用標記語言下的一個應用)
頁面的訪問請求。實際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當你運行
tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。Apache 為HTML頁面服務,而
Tomcat 實際上運行JSP 頁面和Servlet。
官方網站:http://tomcat.apache.org/
如何安裝tomcat?
方法一:本地yum安裝(base源)
systemctl start tomcat
默認監聽:8080,8005(管理端口),8009
方法二:ASF官網站點下載安裝
官方網站下載地址:https://tomcat.apache.org/download-90.cgi
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz
tar -zxf apache-tomcat-8.5.24.tar.gz
啟動tomcat
./apache-tomcat-8.5.24/bin/startup.sh
添加環境變量CATELINA_HOME
vim /etc/profile.d/
export CATALINA_BASE=/usr/local/tomcat
export PATH=$CATALINA:$PATH
服務控制由catalina腳本執行
catalina.sh start
此時,瀏覽器訪問localhostIp:8080就可以看到tomcat默認界面了
二、tomcat服務配置
Tomcat的主要目錄結構:
bin:腳本,及啟動時用到的類;
conf:配置文件目錄;
lib:庫文件,Java類庫,jar;
logs:日志文件目錄;
temp:臨時文件目錄;
webapps:webapp的默認目錄;
work:工作目錄,存放編譯后的字節碼文件;
Tomcat的配置文件構成:
server.xml:主配置文件;
web.xml:每個webapp只有“部署”后才能被訪問,它的部署方式通常由web.xml進行定義,其存放位置為
WEB-INF/目錄中;此文件為所有的webapps提供默認部署相關的配置;
context.xml:每個webapp都可以使用的配置文件,它通常由專用的配置文件context.xml來定義,其存
放位置為WEB-INF/目錄中;此文件為所有的webapps提供默認配置;
tomcat-users.xml:用戶認證的賬號和密碼文件;角色(role),用戶(User);此文件在tomcat啟動
時被裝入內存;
catalina.policy:當使用-security選項啟動tomcat時,用于為tomcat設置安全策略;
catalina.properties:Java屬性的定義文件,用于設定類加載器路徑,以及一些與JVM調優相關參數;
logging.properties:日志系統相關的配置;
Tomcat的核心組件:server.xml
<Server>
<Service>
<connector/>
<connector/>
…
<Engine>
<Host>
<Context/>
<Context/>
…
</Host>
<Host>
…
</Host>
…
</Engine>
</Service>
</Server>
每一個組件都由一個Java“類”實現,這些組件大體可分為以下幾個類型:
頂級組件:Server
服務類組件:Service
連接器組件:http, https, ajp(apache jserv protocol)
容器類:Engine, Host, Context
被嵌套類:valve, logger, realm, loader, manager, …
集群類組件:listener, cluster, …
一般 web 項目路徑結構
webapp歸檔格式:
.war:webapp;
.jar:EJB的類打包文件(類庫);
.rar:資源適配器類打包文件;
.ear:企業級webapp;
…
部署(deploy)webapp的相關操作:
deploy:將webapp的源文件放置于目標目錄(網頁程序文件存放目錄),配置tomcat服務器能夠基于
web.xml和context.xml文件中定義的路徑來訪問此webapp;將其特有的類和依賴的類通過class loader裝載
至JVM;
部署有兩種方式:
自動部署:auto deploy
手動部署:
冷部署:把webapp復制到指定的位置,而后才啟動tomcat;
熱部署:在不停止tomcat的前提下進行部署;
部署工具:manager、ant腳本、tcd(tomcat client deployer)等;
undeploy:拆除(反部署),停止webapp,并從tomcat實例上卸載webapp;
start:啟動處于停止狀態的webapp;
stop:停止webapp,不再向用戶提供服務;其類依然在jvm上;
redeploy:重新部署;
Tomcat基礎架構
連接器(connector)負責接收請求并傳給引擎,由引擎運行jsp代碼并返回給連接器
Server:代表整個服務器,一個server可以包含多個service
一個Service可包含一個Engine,多個Connecter
Connector:連接器類元素,代表通信接
Engine:為特定的Service組件處理客戶請求,要包含多個Host
Host:為特定的虛擬主機組件處理客戶請求,可包含多個Context
Context:為特定的Web應用處理所有的客戶請求
Tomcat的常用組件配置:
Server
功能:代表tomcat instance,即表現出的一個java進程;監聽在8005端口,只接收“SHUTDOWN”。各
server監聽的端口不能相同,因此,在同一物理主機啟動多個實例時,需要修改其監聽端口為不同的端
口;
port=”-1″,
shutdown=”RANDOM_CHARCTER”
Service
功能:用于實現將一個或多個connector組件關聯至一個engine組件;
一個Server中可以有多個Service
Connector
功能:負責接收請求,常見的有三類http/https/ajp;
進入tomcat的請求可分為兩類:
(1) standalone : 請求來自于客戶端瀏覽器;
(2) 由其它的web server反代:來自前端的反代服務器;
nginx –> http connector –> tomcat
httpd(proxy_http_module) –> http connector –> tomcat
httpd(proxy_ajp_module) –> ajp connector –> tomcat
httpd(mod_jk) –> ajp connector –> tomcat
屬性:
port=”8080″
protocol=”HTTP/1.1″
connectionTimeout=”20000″
address:監聽的IP地址;默認為本機所有可用地址;
maxThreads:最大并發連接數,默認為200;
enableLookups:是否啟用DNS查詢功能;
acceptCount:等待隊列的最大長度;
secure:
sslProtocol:
Engine
功能:Servlet實例,即servlet引擎,其內部可以一個或多個host組件來定義站點; 通常需要通過
defaultHost來定義默認的虛擬主機;
屬性:
name=?????????? #此引擎的邏輯名稱,用于日志和錯誤消息。
defaultHost=”localhost”?? #默認主機名,用于標識將處理指向此服務器上主機名稱但未在此配置文件中配
置的請求的主機。
jvmRoute=
Host
功能:位于engine內部用于接收請求并進行相應處理的主機或虛擬主機
Host元素表示一個虛擬主機
<Host name=”localhost”? appBase=”webapps”
unpackWARs=”true” autoDeploy=”true”>
</Host>
常用屬性說明:
name:名稱;用于日志輸出
appBase:虛擬主機對應的應用基礎路徑,可以是個絕對路徑, 或${CATALINA_BASE}相對路徑
xmlBase:虛擬主機XML基礎路徑,里面應該有Context xml配置文件;可以是個絕對路徑, 或${CATALINA_BASE}相對路徑
createDirs:當appBase和xmlBase不存在時,是否創建目錄;默認為true
autoDeploy:是否周期性的檢查appBase和xmlBase并deploy web應用和context描述符;默認為true
deployIgnore:忽略deploy的正則
deployOnStartup:Tomcat啟動時是否自動deploy;默認為true
Context
功能:Context元素表示一個Web應用程序,它在特定的虛擬主機中運行。每個Web應用程序都基于Web
應用程序存檔(WAR)文件,或者包含相應的解包內容的相應目錄
常用屬性說明:
altDDName:web.xml部署描述符路徑;默認 /WEB-INF/web.xml
docBase:Context的Root路徑,和Host的appBase相結合, 可確定web應用的實際目錄
path :web應用的context path;如果為根路徑,則配置為空字符串(“”), 不能不配置
privileged:是否使用Tomcat提供的manager servlet
reloadable:/WEB-INF/classes/ 和/WEB-INF/lib/ 目錄中class文件發生變化是否自動重新加載;默認為false
swallowOutput:true情況下, System.out和System.err輸出將被定向到web應用日志中;默認為false
Valve
<Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs”
prefix=”localhost_access_log” suffix=”.txt”
pattern=”%h %l %u %t "%r" %s %b” />
Valve存在多種類型:
定義訪問日志:org.apache.catalina.valves.AccessLogValve
定義訪問控制:org.apache.catalina.valves.RemoteAddrValve
<Valve className=”org.apache.catalina.valves.RemoteAddrValve” deny=”172\.16\.100\.67″/>
三、實驗:實現tomcat應用部署及版本控制
前期準備:
本節實驗全部以yum安裝為準,tomcat版本:tomcat-7.0.76-6.el7.noarch
創建一個測試類應用
mkdir? -pv? /usr/share/tomcat/webapps/test/{classes,lib,WEB-INF}
tomcat端測試:
瀏覽器打開:tomcat.wxlinux.com/test/
當應用被部署上線后,就會在/usr/share/tomcat/work/Catalina/localhost/test目錄生成源碼和類
庫文件
版本部署
軟連接實現部署部署
軟連接方式不支持熱部署,需重啟tomcat服務后才能連接成功
systemctl restart tomcat
生產環境中一般使用git來實現版本控制,可以使用一個目錄名包含多個版本程序
四、實驗:tomcat創建虛擬主機Host及Context
定義虛擬主機
修改server配置文件添加一個host配置:
vim /etc/tomcat/server.xml
寫入一個測試類應用,內容如下:
mkdir /data/webapps/ROOT/{classes,lib,META-INF,WEB-INF} -pv
為了方便訪問,這里添加主機名解析到hosts文件中
vim /etc/hosts
192.168.30.18?? node1.wxlinux.com
瀏覽器訪問node1.wxlinux.com:8080
自定義host日志:
vim /etc/tomcat/server.xml
當host被訪問時,后生成日志:
創建一個context:
vim /etc/tomcat/server.xml
在context定義的目錄中創建另外一個應用,為了方便對比,僅僅改變字體顏色:
測試訪問:
五、實驗:開啟tomcat管理頁面
前期準備:
虛擬機一臺
系統版本:CentOS 7.4 ? ? ?IP:192.168.30.27
manager管理頁面:
vim /etc/tomcat/tomcat-users.xml
瀏覽器打開192.168.30.27:8080點擊紅色區域
管理界面可進行對web的管理,如停止,開始,卸載部署等操作
圖形界面熱部署WAR文件:
HostManager管理頁面:
vim /etc/tomcat/tomcat-users.xml
測試訪問:
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/103953