Tomcat的基本配置與使用

Tomcat是Apache 軟件基金會(huì)(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目鸭津,由Apache说铃、Sun 和其他一些公司及個(gè)人共同開發(fā)而成榕吼。因?yàn)門omcat 技術(shù)先進(jìn)璃搜、性能穩(wěn)定,而且免費(fèi)腕窥,因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可怒坯,成為目前比較流行的Web 應(yīng)用服務(wù)器炫狱。Tomcat開放源代碼,屬于輕量級(jí)應(yīng)用服務(wù)器敬肚,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場(chǎng)合下被普遍使用毕荐,是開發(fā)和調(diào)試JSP 程序的首選。

實(shí)驗(yàn)Linux平臺(tái):本次實(shí)驗(yàn)使用紅帽系的CentOS 7.3

安裝tomcat需要先安裝Java艳馒,下面安裝Java編譯環(huán)境JDK憎亚。

JDK有兩個(gè)版本,一個(gè)是Oracle的弄慰,另外一個(gè)是OpenJDK開源社區(qū)版的第美。這兩個(gè)版本安裝那個(gè)都行,在紅帽系列的Linux系統(tǒng)Base倉(cāng)庫(kù)中集成了OpenJDK的rpm包陆爽。我在下面的實(shí)驗(yàn)中就使用Base倉(cāng)庫(kù)自帶的OpenJDK進(jìn)行安裝什往。
OracleJDK官網(wǎng):http://www.oracle.com/technetwork/java/index.html
OpenJDK官網(wǎng) :http://openjdk.java.net/

OpenJDK:

java-VERSION-openjdk :主程序包
java-VERSION-openjdk-headless:運(yùn)行環(huán)境。
java-VERSION-openjdk-devel:開發(fā)包

安裝相應(yīng)版本的rpm包,在CentOS 7.3的Base庫(kù)中有三個(gè)版本慌闭,1.8别威、1.7、1.6驴剔。

[root@centos7.3 ~]#yum list all java*    #這條命令可以查看所有的yum倉(cāng)庫(kù)中的Java包
[root@CentOS7.3 ~]#yum -y install java-1.8.0-openjdk-devel   #安裝這個(gè)開發(fā)包會(huì)把主程序包作為依賴包一并安裝

注意:如果是去官網(wǎng)下載的包在安裝完成后省古,要配置JAVA_HOME環(huán)境變量,指向java的安裝路徑丧失;

OpenJDK:
        JAVA_HOME=/usr
Oracle JDK:
        JAVA_HOME=/usr/java/jdk_VERSION

注意:多版本并存時(shí)豺妓,可使用 alternatives命令設(shè)定默認(rèn)使用的版本;
查看當(dāng)前的java版本:

java  -version

安裝Tomcat

tomcat官網(wǎng)提供rpm包和二進(jìn)制格式的,二進(jìn)制格式的直接解壓到指定路徑就可以是使用琳拭。
官網(wǎng):http://tomcat.apache.org/index.html

使用Base倉(cāng)庫(kù)

[root@CentOS7.3 ~]# yum -y install tomcat tomcat-lib tomcat-admin-webapps tomcat-webapps tomcat-docs-webapp

二進(jìn)制

[root@CentOS7.3 ~]# tar xf apache-tomcat-VERSION.tar.gz  -C /usr/local/
[root@CentOS7.3 ~]# cd /usr/local
[root@CentOS7.3 ~]# ln -sv apache-tomcat-VERSION  tomcat

二進(jìn)制安裝后需要指定一下程序路徑

vim  /etc/profile.d/tomcat.sh 
export PATH=$PATH:/usr/local/tomcat/bin

tomcat程序環(huán)境:

tomcat的目錄結(jié)構(gòu)
        bin :腳本训堆,及啟動(dòng)時(shí)用到的類;
        conf:配置文件目錄白嘁;
        lib :庫(kù)文件坑鱼,Java類庫(kù),jar权薯;
        logs:日志文件目錄姑躲;
        temp:臨時(shí)文件目錄睡扬;
        webapps:webapp的默認(rèn)目錄盟蚣;
        work:工作目錄,主要存放編譯后的字節(jié)碼文件卖怜;

使用二進(jìn)制方式安裝屎开,使用catalina.sh 腳本對(duì)tomcat服務(wù)進(jìn)行管理

catalina.sh 
        debug             Start Catalina in a debugger
        debug -security   Debug Catalina with a security manager
        jpda start        Start Catalina under JPDA debugger
        run               Start Catalina in the current window
        run -security     Start in the current window with security manager  前臺(tái)啟動(dòng)
        start             Start Catalina in a separate window
        start  -security  Start in a separate window with security manager
        stop              Stop Catalina, waiting up to 5 seconds for the process to end
        stop n            Stop Catalina, waiting up to n seconds for the process to end
        stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running
        stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still running
        configtest        Run a basic syntax check on server.xml - check exit code for result
        version           What version of tomcat are you running

注:使用 -security 表示調(diào)用conf路徑下的catalina.policy安全策略文件。
rpm包安裝的程序環(huán)境:

### 配置文件目錄:/etc/tomcat
主配置文件:server.xml 
webapps存放位置:/var/lib/tomcat/webapps/
Unit File:tomcat.service
環(huán)境配置文件:/etc/sysconfig/tomcat

tomcat的配置目錄下的文件

server.xml          :主配置文件马靠;
web.xml             :每個(gè)webapp只有“部署”后才能被訪問奄抽,它的部署方式通常由web.xml進(jìn)行定義,其存放位置為WEB-INF/目錄中甩鳄;此文件為所有的webapps提供默認(rèn)部署相關(guān)的配置逞度;如果程序的WEB_INF目錄中沒有定義wem.xml就會(huì)繼承這個(gè)文件的配置。
context.xml         :每個(gè)webapp都可以使用的配置文件妙啃,它通常由專用的配置文件context.xml來定義档泽,其存放位置為WEB-INF/目錄中 ;此文件為所有的webapps提供默認(rèn)配置揖赴;主要用來定義部署webapp時(shí)的背景信息馆匿。如果程序的WEB_INF目錄中沒有定義wem.xml就會(huì)繼承這個(gè)文件的配置。
tomcat-users.xml    :用戶認(rèn)證的賬號(hào)和密碼文件燥滑;權(quán)限配置通過角色(role)實(shí)現(xiàn)渐北,將用戶添加在角色上就會(huì)獲取這個(gè)角色的權(quán)限,此文件在tomcat啟動(dòng)時(shí)被裝入內(nèi)存铭拧,如果修改必須重啟才能生效赃蛛。
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)的配置诵闭;
log4j               :java自帶的日志管理系統(tǒng) 

server.xml(主配置文件)

<Server> 服務(wù)
      <Listener >   偵聽器
      <GlobalNameingResouces> 全局配置
    <Service>容器
        <connector/>  連接器
        <connector/>
            ...
        <Engine>  引擎
            <Host>  主機(jī)
                        <Context/> 
                        <Context/>
                    ...
                <Valve> 過濾器
            </Host>
            <Host>
                ...
            </Host>
            ...
        </Engine>
    </Service>
</Server>
頂級(jí)組件  :Server
服務(wù)類組件:Service
連接器組件:http, https, ajp(apache jserv protocol)
容器類    :Engine, Host, Context,可以在里面部署應(yīng)用程序
被嵌套類  :valve, logger, realm, loader, manager, ...
集群類組件:listener, cluster, ...

一個(gè)server中可以有多個(gè)連接器(HTTP、HTTPS疏尿、AJP)瘟芝,在server有多個(gè)引擎,一個(gè)連接器只能連接到一個(gè)引擎褥琐,但是一個(gè)引擎卻可以接受多個(gè)連接器的請(qǐng)求锌俱,在server和引擎中間有一層service(服務(wù)),作用是把連接器和引擎連接對(duì)應(yīng)敌呈。

在引擎中有多個(gè)host的贸宏,host是處理請(qǐng)求提供服務(wù),在一個(gè)host中可以部署多個(gè)程序磕洪,通過context實(shí)現(xiàn)吭练。

部署(deploy)webapp的相關(guān)操作:

deploy:將webapp的源文件放置于目標(biāo)目錄(網(wǎng)頁程序文件存放目錄),配置tomcat服務(wù)器能夠基于web.xml和context.xml文件中定義的路徑來訪問此webapp析显;將其特有的類和依賴的類通過class loader裝載至JVM鲫咽;

部署有兩種方式:在server.xml中定義

  1. 自動(dòng)部署:auto deploy

  2. 手動(dòng)部署:手動(dòng)部署分為冷部署和熱部署
    a. 冷部署:把webapp復(fù)制到指定的位置,而后才啟動(dòng)tomcat谷异;
    b. 熱部署:在不停止tomcat的前提下進(jìn)行部署分尸;

      熱部署工具:manager、ant腳本歹嘹、tcd(tomcat client deployer)等
    

部署一臺(tái)host主機(jī)

vim /etc/tomcat/server.xml

Engine

host在engine中定義


Host

<Host></Host>:主機(jī)配置需要寫在Host標(biāo)簽內(nèi)
name:主機(jī)名
appBase:此Host的webapps的默認(rèn)存放目錄箩绍,指存放非歸檔的web應(yīng)用程序的目錄或歸檔的WAR文件目錄路徑;可以使用基于$CATALINA_BASE變量所定義的路徑的相對(duì)路徑尺上;
unpackWARs:是否自動(dòng)展開host根目錄下的war格式的歸檔文件材蛛。
autoDeploy:在Tomcat處于運(yùn)行狀態(tài)時(shí),將某webapp放置于appBase所定義的目錄中時(shí)尖昏,是否自動(dòng)將其部署至tomcat仰税;
webapp歸檔格式:Java打包格式

war:webapp的歸檔文件系任;這個(gè)文件放在站點(diǎn)目錄下自動(dòng)展開乾闰。
.jar:EJB的類打包文件(類庫(kù));
.rar:資源適配器類打包文件彼哼;
.ear:企業(yè)級(jí)webapp迹淌; 

JSP WebAPP的組織結(jié)構(gòu):

/: webapps的根目錄
index.jsp:主頁文件河绽; ...還有很多的其他.jsp文件。
WEB-INF/ :當(dāng)前webapp的私有資源路徑唉窃,通常用于存儲(chǔ)當(dāng)前webapp的web.xml和context.xml配置文件耙饰;不能被用戶訪問,被tomcat禁止通過web訪問纹份。
META-INF/:類似于WEB-INF/苟跪;
classes/ :類文件廷痘,當(dāng)前webapp所提供的類;
lib/     :類文件件已,當(dāng)前webapp所提供的類笋额,被打包為jar格式;

手動(dòng)提供一測(cè)試類應(yīng)用篷扩,并冷部署:

[root@CentOS7.3 ~]#mkdir  -p  /app/web/ROOT/{classes,lib,WEB-INF}
[root@CentOS7.3 ~]#cd /app/web/ROOT/        #主機(jī)的默認(rèn)應(yīng)用的配置文件需要放在ROOT目錄下
[root@CentOS7.3 ROOT]#vim index.jsp      #編輯一個(gè)測(cè)試頁  
<%@ page language="java" %>
<%@ page import="java.util.*" %>    #導(dǎo)入類庫(kù)
<html>
    <head>
        <title>Test Page</title>
    </head>
    <body>
        <% out.println("hello world");
        %>
    </body>
</html> 

tomcat的網(wǎng)頁文件格式是.jsp結(jié)尾的

JSP: Java Server Page  
            類庫(kù):
            <html>
                <title>TITLE</title>
                <body>
                    <h1>...</h1>
                    <%
                        ... java code...
                    %>
                </body>
            </html>

執(zhí)行過程:.jsp -->jasper--> .java --> javac --> .class --> jvm
注:編譯過程中產(chǎn)生的java文件和class文件保存在toncat/work/Catalina/主機(jī)名/應(yīng)用名/org/apache/jsp目錄下
注意:基于jasper將靜態(tài)輸出的數(shù)據(jù)轉(zhuǎn)為java代碼進(jìn)行輸出兄猩,結(jié)果為servlet規(guī)范的代碼;


將默認(rèn)的主機(jī)改為test.com

測(cè)試

[root@CentOS7.3 ROOT]#systemctl start tomcat        #啟動(dòng)tomcat
[root@CentOS7.3 ROOT]#ss -ntl        #查看監(jiān)聽端口
State       Recv-Q Send-Q      Local Address:Port                     Peer Address:Port                 
LISTEN      0      128                     *:22                                  *:*                          
LISTEN      0      100                    :::8080                               :::*       #tomcat的http連接器默認(rèn)使用8080端口
LISTEN      0      128                    :::22                                 :::*                  
LISTEN      0      1        ::ffff:127.0.0.1:8005                               :::*   #tomcat的管理端口鉴未,默認(rèn)使用127.0.0.1的8005端口
LISTEN      0      100                    :::8009                               :::*     #tomcat的jap連接器枢冤,默認(rèn)使用的8009端口
訪問測(cè)試頁面

熱部署主機(jī)和應(yīng)用

將默認(rèn)主機(jī)修改回localhost

host manager


點(diǎn)擊取消會(huì)進(jìn)入如下頁面

編輯用戶配置文件/etc/tomcat/tomcat-users.xml
添加如下內(nèi)容。需要定義在<tomcat-users></tomcat-users>標(biāo)簽內(nèi)铜秆,

<role rolename="admin-gui"/>   #定義用戶角色
<user username="tomcat" password="s3cret" roles="admin-gui"/>    配置用戶和密碼

默認(rèn)定義的用戶角色
admin-gui 允許通過web訪問host manager
admin-script 允許訪問文本(命令行)接口
重啟tomcat淹真,刷新頁面,輸入用戶名密碼

image.png

配置manager

添加manager用戶羽峰,在tomcat-users.xml文件中

<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
manager用戶角色:
    manager-gui    允許用戶訪問基于圖形界面的manager和status
    manager-script 允許用戶通過命令行接口訪問manager和status
    manager-jmx    允許用戶通過jmx(java管理擴(kuò)展)代理訪問status頁面趟咆,jmx可以用來接口tomcat的信息
    manager-status 允許用戶查看圖形和命令行接口下status信息

也可以再給原來的用戶添加一個(gè)角色添瓷,如下圖梅屉。

重啟tomcat進(jìn)入manager管理頁面


在這個(gè)頁面中,可以對(duì)默認(rèn)主機(jī)的應(yīng)用進(jìn)行管理

undeploy:反部署鳞贷、拆除坯汤,停止webapp,并從tomcat實(shí)例上卸載webapp搀愧;通過manager管理 
start   :?jiǎn)?dòng)處于停止?fàn)顟B(tài)的webapp惰聂;
stop    :停止webapp,不再向用戶提供服務(wù)咱筛;其類依然在jvm上搓幌;
redeploy:重新部署;
expire sessions:設(shè)置會(huì)話的過期時(shí)間

添加應(yīng)用


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末迅箩,一起剝皮案震驚了整個(gè)濱河市溉愁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饲趋,老刑警劉巖拐揭,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異奕塑,居然都是意外死亡堂污,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門龄砰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盟猖,“玉大人讨衣,你說我怎么就攤上這事∈礁洌” “怎么了值依?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)碟案。 經(jīng)常有香客問我愿险,道長(zhǎng),這世上最難降的妖魔是什么价说? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任辆亏,我火速辦了婚禮,結(jié)果婚禮上鳖目,老公的妹妹穿的比我還像新娘扮叨。我一直安慰自己,他們只是感情好领迈,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布彻磁。 她就那樣靜靜地躺著,像睡著了一般狸捅。 火紅的嫁衣襯著肌膚如雪衷蜓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天尘喝,我揣著相機(jī)與錄音磁浇,去河邊找鬼。 笑死朽褪,一個(gè)胖子當(dāng)著我的面吹牛置吓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缔赠,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼衍锚,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了嗤堰?” 一聲冷哼從身側(cè)響起戴质,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梁棠,沒想到半個(gè)月后置森,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡符糊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年凫海,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片男娄。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡行贪,死狀恐怖漾稀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情建瘫,我是刑警寧澤崭捍,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站啰脚,受9級(jí)特大地震影響殷蛇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜橄浓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一粒梦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荸实,春花似錦匀们、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至露氮,卻和暖如春祖灰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沦辙。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工夫植, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人油讯。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像延欠,于是被迫代替她去往敵國(guó)和親陌兑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容