前言:
Tomcat服務器是一個免費的開源web應用服務器,屬於輕量級應用服務器,在中小型系統和併發用戶不是很多的場合中被普遍使用,是開發和測試JSP程序的首選。一般來說,Tomcat雖然和apache或者Nginx這些web服務器一樣,具有處理HTML頁面的功能,然而由於其處理靜態頁面的能力遠不如apache或者Nginx,所以Tomcat一般是作爲一個servlet和JSP容器,單獨運行在後端。
關於Tomcat服務的各個目錄的說明及配置文件的解釋,可以參考博文:Tomcat服務器配置文件詳解,或者訪問其Tomcat官網,以閱讀官方文檔。
博文大綱:
一、部署Tomcat
二、定義Tomcat多實例
三、配置Tomcat自定義目錄
四、開啓Tomcat目錄遍歷
五、使用Tomcat實時監控JVM虛擬機資源使用情況
六、開啓JMX遠程調試功能
七、開啓mangent管理頁面
一、部署Tomcat
環境準備:
- centos 7一臺,IP爲:192.168.20.5
- 下載我提供的所需源碼包,並上傳至centos 7服務器。
1、開始部署
[root@tomcat ~]# rpm -qa | grep jdk #查詢系統默認的JAVA包
java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
copy-jdk-configs-1.2-1.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
[root@tomcat ~]# rpm -e java-1.8.0-openjdk-headless --nodeps #卸載Java1.8
[root@tomcat ~]# rpm -e java-1.7.0-openjdk-headless --nodeps #卸載Java1.7
[root@tomcat ~]# cd /usr/src
[root@tomcat src]# rz #上傳我提供的兩個源碼包
[root@tomcat src]# ls #源碼包如下
apache-tomcat-8.5.35.tar.gz jdk-8u211-linux-x64.tar.gz
[root@tomcat ~]# tar zxf jdk-8u211-linux-x64.tar.gz -C /usr/local/ #解壓JDK到指定路徑
[root@tomcat src]# tar zxf apache-tomcat-8.5.35.tar.gz #解壓Tomcat源碼包
[root@tomcat src]# mv apache-tomcat-8.5.35 /usr/local/tomcat #將解壓後的目錄移動到指定目錄並命名爲tomcat
[root@tomcat ~]# vim /etc/profile #編輯環境變量,在配置文件末尾添加以下內容
export JAVA_HOME=/usr/local/jdk1.8.0_211
export JRE_HOME=/usr/local/jdk1.8.0_211/jre
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
[root@tomcat ~]# . /etc/profile #重新加載環境變量
[root@tomcat ~]# java -version #查看java版本
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh #啓動Tomcat服務
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8.0_211/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@tomcat src]# netstat -anput | grep 8080 #確定8080端口在監聽
至此,Tomcat服務就運行正常了,可以使用客戶端訪問Tomcat服務器IP+8080端口,可以看到以下頁面:
二、定義Tomcat多實例
所謂多實例,就是在一臺服務器上運行多個Tomcat服務,所以,需要注意,在定義Tomcat的多實例時,千萬不要出現端口衝突的情況。
[root@tomcat src]# cd /usr/local/ #切換至Tomcat服務的安裝目錄
[root@tomcat local]# cp -r tomcat tomcat2 #將第一個Tomcat目錄複製一份並重命名爲tomcat2。
[root@tomcat local]# vim tomcat2/conf/server.xml #修改主配置文件中的所有端口號,防止端口衝突
#配置文件的所有端口號,除了帶註釋的外,都需要修改,
#只要配置項中帶有“port”的,並且後面是數字的,都是端口號
#由於其分散在各個行,所以這裏就不寫了,自行修改即可,我這裏都將其+1
[root@tomcat local]# cd
[root@tomcat ~]# /usr/local/tomcat2/bin/startup.sh #使用Tomcat2啓動腳本運行Tomcat2
[root@tomcat ~]# netstat -natp | grep 8081 #確定修改後的端口在監聽
至此,第二個Tomcat實例就運行正常了,可以使用客戶端訪問Tomcat服務器IP+8081端口,可以看到以下頁面(由於是完全複製之前的Tomcat目錄,所以看到的頁面一樣):
三、配置Tomcat自定義目錄
[root@tomcat ~]# mkdir -p /data/project #創建目錄
[root@tomcat ~]# cat /data/project/index1.jsp #第一個網頁文件
aaaaaaaaaaaaaaaaaaaaaaa
[root@tomcat ~]# cat /data/project/index2.jsp #第二個網頁文件
bbbbbbbbbbbbbbbbbbbbbbbbbbb
[root@tomcat ~]# vim /usr/local/tomcat/conf/server.xml #編輯Tomcat主配置文件
<Host name="localhost" appBase="webapps" #定位到148行左右
unpackWARs="true" autoDeploy="true">
..........................#添加以下內容
<Context path = "/shop" docBase="/data/project" debug="0" reloadable="false" crossContext="true">
</Context>
#添加上述 <Context....> </Context>的配置後即可保存退出
#上述的 <Context....> </Context>標籤的另一種寫法就是<Context......./>
#在上述添加的配置解釋如下:
#Path:指出客戶端訪問的路徑;
#docBase:指定網頁的存放路徑;
#Debug:指定debug的等級爲0,輸出信息最少,9提供最多的信息;
#reloadable:爲true時表示當web.xml文件有改動的時候自動加載,不必重啓服務;
#CorssContext:爲true時,表示不同的context共享一個session(會話池)。
#重啓訪問http://192.168.20.5:8080/shop/index1/2.jsp進行驗證即可
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh #停止Tomcat
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh #啓動Tomcat
訪問192.168.20.5:8080/shop/index1.jsp 進行驗證:
訪問192.168.20.5:8080/shop/index2.jsp 進行驗證:
四、開啓Tomcat目錄遍歷
在apache或Nginx中,它們的目錄遍歷是默認開啓的,而Tomcat服務,它的目錄遍歷默認是關閉的,有些情況下,我們需要開啓它的目錄遍歷功能。
1、直接訪問192.168.20.5:8080/shop/進行測試,會報錯404:
2、那麼,接下來開啓它的目錄遍歷功能:
[root@tomcat ~]# vim /usr/local/tomcat/conf/web.xml #編輯這個文件
<init-param> #定位到該標籤,110行左右
<param-name>listings</param-name>
<param-value>true</param-value> #將原本的false修改爲true
#修改後,保存退出即可
#重啓Tomcat服務
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh
3、重啓後,刷新剛纔的訪問頁面,會發現網頁將其shop/指定的目錄下的所有文件都顯示出來了,如下:
五、使用Tomcat實時監控JVM虛擬機資源使用情況
[root@tomcat ~]# vim /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path = "/shop" docBase="/data/project" debug="0" reloadable="false" crossContext="true">
</Context> #在下面添加一行
<Context path = "monit" docBase="/data/monit" debug="0" reloadable="flase" crossContext="true"/>
#添加後,保存退出即可
[root@tomcat ~]# mkdir /data/monit
[root@tomcat ~]# vim /data/monit/index.jsp #編寫監控腳本,寫入以下內容
<%
Runtime rtm = Runtime.getRuntime();
long mm = rtm.maxMemory()/1024/1024;
long tm = rtm.totalMemory()/1024/1024;
long fm = rtm.freeMemory()/1024/1024;
out.println("JVM memory detail info :<br>");
out.println("Max memory:"+mm+"MB"+"<br>");
out.println("Total memory: "+tm+"MB"+"<br>");
out.println("Free memory: "+fm+"MB"+"<br>");
out.println("Available memmory can be used is :"+(mm+fm-tm)+"MB"+"<br>");
%>
#保存後,保存退出即可
#重啓
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh
訪問192.168.20.5:8080/monit/會看到以下頁面:
六、開啓JMX遠程調試功能
[root@tomcat ~]# vim /usr/local/tomcat/bin/catalina.sh #編輯其文件,跳轉文件的306行
export JDK_JAVA_OPTIONS #在該行下面添加以下內容,定義其監聽端口爲“8888”
CATALINA_OPTS=" $CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
#添加完成後,保存退出即可
[root@tomcat ~]# cd /usr/local/jdk1.8.0_211/jre/lib/management/
[root@tomcat management]# cp jmxremote.password.template jmxremote.password
[root@tomcat management]# vim jmxremote.password #在文件末尾寫入需要創建的用戶,如下:
ljz 123.com
#由於其是一個只讀文件,所以在寫入後,需要使用命令“wq!”以便強制保存
[root@tomcat management]# vim jmxremote.access #編輯此文件,給用戶定義權限
#跳轉至文件末尾,添加以下配置項,也可以直接修改末尾的模板
ljz readwrite \ #此行開頭指定的是用戶名
create javax.management.monitor.*,javax.management.timer.* \
unregister
#寫入以上內容後,保存退出即可
[root@tomcat management]# chmod 600 jmxremote.access jmxremote.password #必須修改其權限爲600,否則會失敗
#重啓Tomcat服務
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh
驗證其遠程調試功能,由於其需要圖形化的支持,所以需要進入其圖形化桌面環境,下面的操作不可以在xshell上進行了:
[root@tomcat ~]# jconsole #執行此命令
#若上述命令無法執行,則需要執行“. /etc/profile”命令,以便重新加載環境變量
執行jconsole命令後,會彈出以下界面:
然後點擊如下:
就可以看到以下界面,其中顯示的是JVM虛擬機的資源使用情況:
七、開啓mangent管理頁面
1、在訪問Tomcat的默認界面時,有一個“Manager App”的框,如下:
2、點擊進入後,會看到以下403報錯頁面(翻譯過後如下),我們需要複製它提示的代碼:
此錯誤頁面,已經將原因及該如何配置寫的明明白白的。
3、現在配置開啓它的manager管理頁面:
[root@tomcat ~]# vim /usr/local/tomcat/conf/tomcat-users.xml #編輯這個文件,跳轉至文件末尾
<role rolename="manager-gui"/>
<user username="lisi" password="123.com" roles="manager-gui"/>
</tomcat-users> #在這個閉合的標籤上面添加兩行,以便添加用戶
#添加的配置項中,“username”爲用戶名,“password”爲用戶密碼。
[root@tomcat ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml #編輯此文件,添加允許訪問的IP
allow="192.168.20.254|192.168.20.5|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
#在上面“allow=”後添加允許訪問的IP,以管道符“ | ”爲分割
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
#重啓服務驗證
[root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh
4、使用客戶端訪問它的默認首頁,然後點擊“Manager App”,會看到以下界面,輸入用戶名及密碼:
5、登錄後,即可看到我們的Tomcat根目錄下的自定義目錄:
6、下拉頁面,可以通過war包添加自定義的目錄:
1)準備war包:
[root@tomcat ~]# vim index.jsp #編寫jsp網頁文件
test
test
[root@tomcat ~]# jar -cvf test.war index.jsp #做成war包,名爲“test.war”
2)在web圖形界面,添加war包:
3)部署後,即可看到以下內容:
4)客戶端可以訪問TomcatIP+8080端口+/aaa進行訪問測試,其內容就是我們做的war包中的內容,如下:
———————— 本文至此結束,感謝閱讀 ————————