1. Tomcat安裝
1.1 軟件準備
JDK下載:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Tomcat下載:http://tomcat.apache.org/
1.2 部署java環境
cd /usr/local/src
tar zxf jdk-8u40-linux-x64.tar.gz
mv jdk1.8.0_40 /usr/local/jdk
chown -R root:root /usr/local/jdk
sed -i.ori '$a export JAVA_HOME=/usr/local/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
source /etc/profile
#→出現下面結果證明部署成功
[root@tomcat ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
1.3 安裝Tomcat
cd /usr/local/src
tar zxf apache-tomcat-8.0.41.tar.gz
mv apache-tomcat-8.0.41 /usr/local/tomcat
echo 'export TOMCAT_HOME=/usr/local/tomcat'>>/etc/profile
source /etc/profile
chown -R root.root /usr/local/dk/ /usr/local/tomcat/
[root@linux-node1 ~]# tail -4 /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/usr/local/tomcat
1.4 Tomcat目錄介紹
[root@linux-node1 ~]# cd /usr/local/tomcat/
[root@linux-node1 tomcat]# tree -L 1
.├── bin #→用以啓動、關閉Tomcat或者其它功能的腳本(.bat文件和.sh文件)
├── conf #→用以配置Tomcat的XML及DTD文件
├── lib #→存放web應用能訪問的JAR包
├── LICENSE
├── logs #→Catalina和其它Web應用程序的日誌文件
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp #→臨時文件
├── webapps #→Web應用程序根目錄
└── work #→用以產生有JSP編譯出的Servlet的.java和.class文件
7 directories, 4 files
[root@linux-node1 tomcat]# cd webapps/
[root@linux-node1 webapps]# ll
總用量 20
drwxr-xr-x 14 root root 4096 Oct 5 12:09 docs #→tomcat幫助文檔
drwxr-xr-x 6 root root 4096 Oct 5 12:09 examples #→web應用實例
drwxr-xr-x 5 root root 4096 Oct 5 12:09 host-manager #→管理
drwxr-xr-x 5 root root 4096 Oct 5 12:09 manager #→管理
drwxr-xr-x 3 root root 4096 Oct 5 12:09 ROOT #→默認網站根目錄
1.5 啓動Tomcat
[root@linux-node1 ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@linux-node1 ~]# ps aux | grep java
root 33752 89.7 13.9 2273300 139996 pts/0 Sl 02:57 0:08 /usr/local/jdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.20.23.249 -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 33772 0.0 0.0 103260 840 pts/0 S+ 02:57 0:00 grep java
1.6 訪問網站
1.7 Tomcat日誌
[root@linux-node2 tomcat]# cd logs/
[root@linux-node2 logs]# ll
總用量 24
-rw-r--r-- 1 root root 6292 3月 15 22:13 catalina.2017-03-15.log
-rw-r--r-- 1 root root 6292 3月 15 22:13 catalina.out
-rw-r--r-- 1 root root 0 3月 15 22:13 host-manager.2017-03-15.log
-rw-r--r-- 1 root root 284 3月 15 22:13 localhost.2017-03-15.log
-rw-r--r-- 1 root root 728 3月 15 22:13 localhost_access_log.2017-03-15.txt
-rw-r--r-- 1 root root 0 3月 15 22:13 manager.2017-03-15.log
[root@linux-node2 logs]# tailf catalina.out
15-Mar-2017 22:13:27.923 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/examples has finished in 548 ms
15-Mar-2017 22:13:27.923 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/host-manager
15-Mar-2017 22:13:27.972 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/host-manager has finished in 49 ms
15-Mar-2017 22:13:27.973 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/docs
15-Mar-2017 22:13:28.015 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/docs has finished in 41 ms
15-Mar-2017 22:13:28.015 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat/webapps/ROOT
15-Mar-2017 22:13:28.050 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat/webapps/ROOT has finished in 35 ms
15-Mar-2017 22:13:28.056 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
15-Mar-2017 22:13:28.066 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
15-Mar-2017 22:13:28.072 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 1544 ms
^C
[root@linux-node2 logs]# ll
總用量 24
-rw-r--r-- 1 root root 6292 3月 15 22:13 catalina.2017-03-15.log
-rw-r--r-- 1 root root 6292 3月 15 22:13 catalina.out
-rw-r--r-- 1 root root 0 3月 15 22:13 host-manager.2017-03-15.log
-rw-r--r-- 1 root root 284 3月 15 22:13 localhost.2017-03-15.log
-rw-r--r-- 1 root root 728 3月 15 22:13 localhost_access_log.2017-03-15.txt
-rw-r--r-- 1 root root 0 3月 15 22:13 manager.2017-03-15.log
[root@linux-node2 logs]# cat localhost.2017-03-15.log
15-Mar-2017 22:13:27.910 信息 [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
15-Mar-2017 22:13:27.910 信息 [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
[root@linux-node2 logs]# cat localhost_access_log.2017-03-15.txt
10.20.23.1 - - [15/Mar/2017:22:13:55 +0800] "GET / HTTP/1.1" 200 11250
10.20.23.1 - - [15/Mar/2017:22:13:55 +0800] "GET /tomcat.css HTTP/1.1" 200 5581
10.20.23.1 - - [15/Mar/2017:22:13:55 +0800] "GET /tomcat.png HTTP/1.1" 200 5103
10.20.23.1 - - [15/Mar/2017:22:13:55 +0800] "GET /bg-upper.png HTTP/1.1" 200 3103
10.20.23.1 - - [15/Mar/2017:22:13:55 +0800] "GET /bg-middle.png HTTP/1.1" 200 1918
10.20.23.1 - - [15/Mar/2017:22:13:55 +0800] "GET /bg-button.png HTTP/1.1" 200 713
10.20.23.1 - - [15/Mar/2017:22:13:55 +0800] "GET /asf-logo-wide.svg HTTP/1.1" 200 26447
10.20.23.1 - - [15/Mar/2017:22:13:55 +0800] "GET /bg-nav.png HTTP/1.1" 200 1401
10.20.23.1 - - [15/Mar/2017:22:13:55 +0800] "GET /favicon.ico HTTP/1.1" 200 21630
2. Tomcat配置文件
2.1 Tomcat配置文件
[root@linux-node2 conf]# pwd
/usr/local/tomcat/conf
[root@linux-node2 conf]# ll
總用量 220
drwxr-xr-x 3 root root 4096 3月 15 22:13 Catalina
-rw------- 1 root root 12767 1月 19 06:25 catalina.p olicy
-rw------- 1 root root 7125 1月 19 06:25 catalina.properties
-rw------- 1 root root 1577 1月 19 06:25 context.xml
-rw------- 1 root root 3387 1月 19 06:25 logging.properties
-rw------- 1 root root 6458 1月 19 06:25 server.xml #主配置文件
-rw------- 1 root root 2164 1月 19 06:25 tomcat-users.xml ##tomcat管理用戶配置文件
-rw------- 1 root root 2634 1月 19 06:25 tomcat-users.xsd
-rw------- 1 root root 168378 1月 19 06:25 web.xml
2.2 Tomcat管理
測試功能,生產環境不要用。
Tomcat管理功能用於對Tomcat自身以及部署在Tomcat上的應用進行管理的web應用。在默認情況下是處於禁用狀態的。如果需要開啓這個功能,就需要配置管理用戶,即配置前面說過的tomcat-users.xml。
[root@linux-node2 conf]# vim /usr/local/tomcat/conf/tomcat-users.xml
.........
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
</tomcat-users> #→在此行前加入上面三行
[root@linux-node2 conf]# /usr/local/tomcat/bin/shutdown.sh
[root@linux-node2 conf]# /usr/local/tomcat/bin/startup.sh
2.3 Tomcat主配置文件Server.xml詳解
2.3.1 server.xml組件類別
頂級組件:位於整個配置的頂層,如server。
容器類組件:可以包含其它組件的組件,如service、engine、host、context。
連接器組件:連接用戶請求至tomcat,如connector。
被嵌套類組件:位於一個容器當中,不能包含其他組件,如Valve、logger。
2.3.2 組件詳解
engine:核心容器組件,catalina引擎,負責通過connector接收用戶請求,並處理請求,將請求轉至對應的虛擬主機host。
host:類似於httpd中的虛擬主機,一般而言支持基於FQDN的虛擬主機。
context:定義一個應用程序,是一個最內層的容器類組件(不能再嵌套)。配置context的主要目的指定對應對的webapp的根目錄,類似於httpd的alias,其還能爲webapp指定額外的屬性,如部署方式等。
connector:接收用戶請求,類似於httpd的listen配置監聽端口的。
service(服務):將connector關聯至engine,因此一個service內部可以有多個connector,但只能有一個引擎engine。service內部有兩個connector,一個engine。因此,一般情況下一個server內部只有一個service,一個service內部只有一個engine,但一個service內部可以有多個connector。
server:表示一個運行於JVM中的tomcat實例。
Valve:閥門,攔截請求並在將其轉至對應的webapp前進行某種處理操作,可以用於任何容器中,比如記錄日誌(access log valve)、基於IP做訪問控制(remote address filter valve)。
logger:日誌記錄器,用於記錄組件內部的狀態信息,可以用於除context外的任何容器中。
realm:可以用於任意容器類的組件中,關聯一個用戶認證庫,實現認證和授權。可以關聯的認證庫有兩種:UserDatabaseRealm、MemoryRealm和JDBCRealm。
UserDatabaseRealm:使用JNDI自定義的用戶認證庫。
MemoryRealm:認證信息定義在tomcat-users.xml中。
JDBCRealm:認證信息定義在數據庫中,並通過JDBC連接至數據庫中查找認證用戶。
3. Tomcat安全優化和性能優化
3.1 安全優化
降權啓動
telnet管理端口保護
ajp連接端口保護
禁用管理端
類別 | 配置內容及說明 | 標準配置 | 備註 |
telnet管理端口保護 | 1、修改默認的8005管理端口爲不易猜測的端口(大於1024); 2、修改Shutdown指令爲其他字符串 | <server port="8527" shutdown="dangerous"> | 1、以上配置項的配置內容只是建議配置,可以按照服務實際情況進行合理配置,但要求端口配置在8000-8999之間; |
Ajp連接端口保護 | 1、修改默認的ajp 8009端口爲不易衝突的大於1024的端口; 2、通過iptables規則限制ajp端口訪問的權限僅爲線上機器; | <Connector port="8528" protocol="AJP/1.3"/> | 以上配置項的配置內容僅爲建議配置,請按照訪問實際情況進行合理配置,但要求端口配置在8000-8999之間;保護此端口的目的在於防止線下的測試流量被mod_jk轉發至線上tomcat服務器; |
禁用管理端 | 1、刪除默認的{Tomcat 安裝目錄}/conf/tomcat-users.xml文件後將會自動生成新的文件; 2、刪除{tomcat安裝目錄}/webapps下默認的所有目錄和文件; 3、將tomcat應用根目錄配置爲tomcat安裝目錄以外的目錄; | <Context path="" docBase="/home/work/local/tomcat_webapps" debug="0" reloadable="false" crossContext="true"/> | 對於前端web模塊,tomcat管理端屬於tomcat的高危安全隱患,一旦被攻破,***通過上傳web shell的方式將會直接服務器的控制權,後果極其嚴重; |
降權啓動 | 1、tomcat啓動用戶權限必須爲非root權限,儘量降低tomcat啓動用戶的目錄訪問權限; 2、如需直接對外使用80端口,可通過普通賬號啓動後,配置iptables規則進行轉發; | - | 避免一旦tomcat訪問被***,***直接獲取高級用戶權限危害整個server的安全; |
文件列表訪問控制 | 1、conf/web.xml文件中default部分listings的配置必須爲false; | <init-param> <param-name>listings</param-name> <param-value>false</init-param> | false爲不列出目錄文件,ture爲允許列出,默認爲false; |
版本信息隱藏 | 1、修改conf/web.xml,重定向403、404以及500等錯誤到指定的錯誤頁面; 2、也可以通過修改應用程序目錄下的WEB-INF/web.xml下的配置進行錯誤頁面的重定向; | <error-page> <error-code>403</error-code> <location>/forbidden.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/notfound.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/systembusy.jsp</location> </error-page> | 在配置中對一些常見錯誤進行重定向,避免當出現錯誤時tomcat默認顯示的錯誤頁面暴露服務器和版本信息; 必須確保程序根目錄下的錯誤頁面已經存在; |
Server header 重寫 | 在HTTP Connector配置中加入server的配置; | server="webserver" | 當tomcat HTTP端口直接提供web服務時此配置生效,加入此配置,將會替換http響應server header部分的默認配置,默認是Apache-Coyote/1.1 |
訪問限制 | 通過配置,限定訪問的ip來源 | <Context path="" docBase="/home/work/tomcat" debug="0" reloadable="false" crossContext="true"> <Valve className="org.apache.cataline.valves.RemoteAddrValve" allow="61.148.18.138,61.135.*" deny="*.*.*.*"/> </Context> | 通過配置信任ip的白名單,拒絕非白名單ip的訪問,此配置主要是針對高保密級別的系統,一般產品級不需要; |
啓停腳本權限回收 | 去除其他用戶對Tomcat的bin目錄下shutdown.sh、startup.sh、catalina.sh的可執行權限; | chmod -R 744 tomcat/bin/* | 防止其他用戶有起停線上tomcat的權限; |
訪問日誌格式規範 | 開啓Tomcat默認訪問日誌中的Referer和User-Agent記錄 | <Valve className="org.apache.cataline.valves.RemoteAddrValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i %D" resolveHosts="false"/> | 開啓Referer和User-Agent是爲了一旦出現安全問題能夠更好的根據日誌進行問題排查; |
4. WEB站點部署
上線的代碼有兩種方式,第一種方式是直接將程序目錄放在webapps目錄下面,這種方式大家已經明白了,就不多說了。第二種方式是使用開發工具將程序打包成war包,然後上傳到webapps目錄下面。下面讓我們見識一下這種方式。
4.1 使用war包部署web站點
[root@linux-node1 webapps]# pwd
/application/tomcat/webapps
[root@linux-node1 webapps]# rz
#→上傳memtest.war
[root@linux-node1 webapps]# ls
docs examples host-manager manager memtest memtest.war ROOT
瀏覽器訪問:http://10.20.23.249:8080/memtest/meminfo.jsp
4.2 自定義默認網站目錄
上面訪問的網址爲http://10.20.23.249:8080/memtest/meminfo.jsp
現在我想訪問格式爲http://10.20.23.249:8080/meminfo.jsp
怎麼破?
方法一
將meminfo.jsp或其他程序放在tomcat/webapps/ROOT
目錄下即可。因爲默認網站根目錄爲tomcat/webapps/ROOT
方法二
[root@linux-node1 ~]# vim /application/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>
[root@linux-node1 ~]# /application/tomcat/bin/shutdown.sh
[root@linux-node1 ~]# /application/tomcat/bin/startup.sh
5. Tomcat監控
首先學習下jvm的幾個比較有用的命令:
5.1.1 jsp
作用:快速獲取java進程的PID
[root@linux-node1 ~]# jps ##只顯示java進程
13937 Bootstrap
24004 Jps
[root@linux-node1 ~]# jps -lvm
13937 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp
24027 sun.tools.jps.Jps -lvm -Denv.class.path=.:/usr/local/jdk/lib/:/usr/local/jdk/jre/lib:/usr/local/jdk/lib/tools.jar -Dapplication.home=/usr/local/jdk -Xms8m
5.1.2jstack
作用:打印所有的java進程的運行狀態信息
[root@linux-node1 ~]# jstack 13937 > 13937.txt
[root@linux-node1 ~]# ll
總用量 92
-rw-r--r-- 1 root root 49464 1月 18 15:54 13937.txt
-rw-------. 1 root root 1098 1月 3 16:58 anaconda-ks.cfg
-rw-r--r--. 1 root root 23040 1月 3 16:58 install.log
-rw-r--r--. 1 root root 6240 1月 3 16:57 install.log.syslog
[root@linux-node1 ~]# ll -lh 13937.txt
-rw-r--r-- 1 root root 49K 1月 18 15:54 13937.txt
[root@linux-node1 ~]# top -H -p 13937
top - 15:56:02 up 1 day, 28 min, 2 users, load average: 0.02, 0.02, 0.00
Tasks: 65 total, 0 running, 65 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004412k total, 923476k used, 80936k free, 42528k buffers
Swap: 1023992k total, 23424k used, 1000568k free, 156160k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
13937 root 20 0 2401m 429m 18m S 0.0 43.8 0:00.01 java
13938 root 20 0 2401m 429m 18m S 0.0 43.8 0:00.82 java
13939 root 20 0 2401m 429m 18m S 0.0 43.8 0:06.48 java
13940 root 20 0 2401m 429m 18m S 0.0 43.8 0:00.07 java
13941 root 20 0 2401m 429m 18m S 0.0 43.8 0:00.03 java
13942 root 20 0 2401m 429m 18m S 0.0 43.8 0:00.06 java
13943 root 20 0 2401m 429m 18m S 0.0 43.8 0:32.91 java
13944 root 20 0 2401m 429m 18m S 0.0 43.8 0:08.24 java
13945 root 20 0 2401m 429m 18m S 0.0 43.8 0:00.00 java
13946 root 20 0 2401m 429m 18m S 0.0 43.8 0:35.81 java
13947 root 20 0 2401m 429m 18m S 0.0 43.8 0:02.27 java
13948 root 20 0 2401m 429m 18m S 0.0 43.8 0:00.00 java
[root@linux-node1 ~]# echo "obase=16; 13945" | bc
3679
[root@linux-node1 ~]# ll
總用量 92
-rw-r--r-- 1 root root 49464 1月 18 15:54 13937.txt
-rw-------. 1 root root 1098 1月 3 16:58 anaconda-ks.cfg
-rw-r--r--. 1 root root 23040 1月 3 16:58 install.log
-rw-r--r--. 1 root root 6240 1月 3 16:57 install.log.syslog
[root@linux-node1 ~]# less 13937.txt
...skipping...
"Service Thread" #7 daemon prio=9 os_prio=0 tid=0x00007fd5f80b5000 nid=0x3679 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
5.1.3 jmap
打印出整個java堆內存的所有東西
5.2 監控
5.2.1 修改配置文件
[root@linux-node1 ~]# vim /usr/local/tomcat/bin/catalina.sh ##加入以下內容
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=10.20.23.249"
5.2.2 重啓tomcat
[root@linux-node1 ~]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@linux-node1 ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
5.2.3 監控
在win7上安裝jdk,打開jdk的安裝目錄(D:\Program Files\Java\jdk1.8.0_121\bin)
雙擊打開jconsole和jvisualvm兩個監控插件: