Linux Tomcat JSP動态網頁解析 v7.0 ★★★
1 Tomcat 概述
Tomcat是由Apache軟體基金會下屬的Jakarta項目開發的一個Servlet容器,按照Sun Microsystems提供的技術規範,實作了對Servlet和JavaServer Page(JSP)的支援,Tomcat本身也是一個HTTP伺服器,可以單獨使用,apache是一個以C語言編寫的HTTP伺服器。Tomcat主要用來解析JSP語言。目前最新版本為8.0。
常見版本:5.5x 6.0x 7.0x
官網: Apache.tomcat.org
2 Tomcat JDK
JDK: java開發工具包,包含 JRE、javac 、javaw工具
JRE:java運作環境,在JDK包中
SDK:輔助開發工具, java開發的套件
針對不同使用的類庫
J2EE: 企業應用
J2SE: 标準
J2ME: 手機
3 Tomcat 安裝
安裝tomcat之前需要安裝jdk (Java Development Kit) 是 Java 語言的軟體開發工具包(SDK)),這裡選擇jdk-6u18-linux-x64-rpm.bin,bin檔案安裝跟sh檔案方法一樣,sh ./ jdk-6u18-linux-x64-rpm.bin,回車即可,預設安裝到/usr/java/jdk1.6.0_18目錄下。
jdk下載下傳位址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.rpm
http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz?AuthParam=1480477540_8dd19bbd8e9b40171c9830eba9d480a6
配置JDK環境變量
配置java環境變量,vi /etc/profile 添加如下語句:
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
source /etc/profile //使環境變量立刻生效。
java -version //檢視java版本,顯示版本為1.6.0_18,證明安裝成功。
tomcat下載下傳位址:
http://tomcat.apache.org
wget –c http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.0.39/bin/apache-tomcat-8.0.39.tar.gz
在官網下載下傳tomcat相應版本,下載下傳完後解壓:
tar -xzf apache-tomcat-6.0.30.tar.gz
;mv apache-tomcat-8.0.39 /usr/local/tomcat即可。
啟動tomcat,指令為:/usr/local/tomcat/bin/startup.sh
檢視ps -ef |grep tomcat 程序及端口是否存在,
通過頁面通路可以看到tomcat預設測試頁面:
生成連結以便版本更新
ln -s apache-tomcat-7.0.54 server
ln -s jdk1.7.0_55 latest
ln -s latest default
4 Tomcat 配置檔案詳解
<Server>................................Server層
<Service>............................Service層
<Connector/>
<Engine>..........................Engine層
<Host>.........................Host層
<Context/>...............Context層
</Host>
</Engine>
</Service>
<Server>
Server層
對應Server元件,表示整個Tomcat(Catalina Servlet容器),它處于Tomcat頂層,可以包含一個或多個Service層。
對應Service元件,是Server層中的一個邏輯功能層,包含一個Engine層,以及一個或多個Connector,Service元件将一個或多個Connector元件綁定到Engine層上,Connector元件偵聽端口,獲得使用者請求,并将請求轉發到Engine層處理,同時把處理結果轉發給使用者,進而實作一個特定的功能。
Engine層
對應Engine元件,負責請求分發處理,可以連接配接多個Connector,它從Connector接收請求後,解析出可以完成使用者請求的URL,根據URL可以把請求比對到正确的Host上,當Host處理完使用者請求後,Engine層把結果傳回給适合連接配接器,再由連接配接器傳輸給使用者。
Host層
對應Host元件,表示一個虛拟主機,一個Engine層可以包含多個Host層,每個Host層可以包含一個或多個Context層,對應不同的web應用。
Context層
對應Context元件,代表某個虛拟主機上的實際目錄或一個WAR,即單個Web應用程式,它運作在特定的虛拟主機中,使用最為頻繁。一個Host層包含多個Context層,每一個Context都有唯一的路徑,Host層接到請求後,根據使用者請求的URL,将請求定位到Context層。
元素名 屬性 解釋
server port 指定一個端口,這個端口負責監聽關閉tomcat 的請求
shutdown 指定向端口發送的指令字元串
service name 指定service 的名字
Connector ( 表示用戶端和service之間的連接配接) port 指定伺服器端要建立的端口号,并在這個斷口監聽來自用戶端的請求
minProcessors 伺服器啟動時建立的處理請求的線程數
maxProcessors 最大可以建立的處理請求的線程數
enableLookups 如果為true ,則可以通過調用request.getRemoteHost() 進行DNS 查詢來得到遠端用戶端的實際主機名,若為false 則不進行DNS 查詢,而是傳回其ip 位址
redirectPort 指定伺服器正在處理http 請求時收到了一個SSL 傳輸請求後重定向的端口号
acceptCount 指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求将不予處理
connectionTimeout 指定逾時的時間數( 以毫秒為機關)
Engine ( 表示指定service 中的請求處理機,接收和處理來自Connector的請求) defaultHost 指定預設的處理請求的主機名,它至少與其中的一個host 元素的name 屬性值是一樣的
Context ( 表示一個web 應用程式,通常為WAR 檔案,關于WAR 的具體資訊見servlet 規範) docBase 應用程式的路徑或者是WAR 檔案存放的路徑
path 表示此web 應用程式的url 的字首,這樣請求的url為http://localhost:8080/path/ ****
host ( 表示一個虛拟主機 ) name 指定主機名
appBase 應用程式基本目錄,即存放應用程式的目錄
unpackWARs 如果為true ,則tomcat 會自動将WAR 檔案解壓,否則不解壓,直接從WAR 檔案中運作應用程式
Logger ( 表示日志,調試和錯誤資訊) className 指定logger 使用的類名,此類必須實作org.apache.catalina.Logger 接口
prefix 指定log 檔案的字首
suffix 指定log 檔案的字尾
timestamp 如果為true ,則log 檔案名中要加入時間,如下例:localhost_log.2001-10-04.txt
Realm ( 表示存放使用者名,密碼及role的資料庫) className 指定Realm 使用的類名,此類必須實作org.apache.catalina.Realm 接口
Valve ( 功能與Logger 差不多,其prefix 和suffix 屬性解釋和Logger 中的一樣) className 指定Valve 使用的類名,如用org.apache.catalina.valves.AccessLogValve 類可以記錄應用程式的通路資訊
directory 指定log 檔案存放的位置
pattern 有兩個值,common 方式記錄遠端主機名或ip 位址,使用者名,日期,第一行請求的字元串,HTTP 響應代碼,發送的位元組數。combined 方式比common 方式記錄的值更多
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" # HTTP連接配接方式
connectionTimeout="20000"
redirectPort="8443" /> # 重定向8443
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Server>
注意:tomcat的配置檔案中的注釋内容不能使用#号,而要使用<!-- xxxxxx -->
5 Tomcat 定義釋出目錄
預設釋出目錄: /usr/local/tomcat/webapps/ROOT
【注】:修改釋出目錄時,要把源webapps/目錄下所有檔案rm –rf *,否則tomcat預設去找原目錄
Vi /usr/local/tomcat/conf/server.xml
修改程式部署路徑:
方法1:
<Host name="localhost" appBase="E:\www\javapms" unpackWARs="true" autoDeploy="true">
appBase="E:\www\javapms" 設定程式部署路徑,
在server.xml尾部的</Host>前面插入下面一行參數。
方法2:<Context path="/" docBase="/data/webapps/www" reloadable="true"/>
</Host> #此處插入
path:浏覽器通路時的路徑名
docBase:web項目的WebRoot所在的路徑,注意是WebRoot的路徑,不是項目的路徑。其實也就是編譯後的項目
reloadble:設定項目有改動時,tomcat是否重新加載該項目
測試網頁index.jsp
<html>
<body>
tomcat jsp test page
<%=new java.util.Date()%>
</body>
</html>
6 Tomcat 服務與端口
【注意】:生産環境中,tomcat有二個工作目錄,
[root@tomcat01 tomcat8]# ll
rw-r--r--. 1 root root 16195 11月 9 2016 RUNNING.txt
drwxr-xr-x. 4 root root 4096 11月 30 08:51 temp
drwxr-xr-x. 7 root root 4096 11月 29 08:53 webapps
drwxr-xr-x. 3 root root 21 11月 14 23:22 work
此工作目錄發産生一些臨時檔案,建議在重新開機tomcat的時候,手動清空這二個檔案夾。
6.1 啟動和關閉
常用java解析器: tomcat resin jboss weblogic websphere
生産使用環境:tomcat6.0
生産管理環境:
chown -R tomcat.tomcat /usr/local/jdk/
chown -R tomcat.tomcat /usr/local/tomcat
su - tomcat 切換到tomcat使用者下執行啟動tomcat
停止
PID =$(ps -ef |grep java |grep -v "grep"|awk '{print $2}') # 通過shell取java的PID
Kill -9 PID
/usr/local/tomcat8/bin/shutdown.sh
啟動
/usr/local/tomcat8/bin/startup.sh
6.2 預設端口:8005 8080 8009
關管端口 shutdown.sh的控制端口
通路端口 http連接配接端口
代理端口
6.3 防火牆配置:
打開防火牆,使外部能通路
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
service iptables save
service iptables restart
或直接修改檔案/etc/sysconfig/iptables.
vi /etc/sysconfig/iptables
A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
在浏覽器輸入: http://192.168.16.133:8080
如在本機可以輸入: http://localhost:8080
出現tomcat的頁面表示安裝成功.
6.4 jsp測試頁:
vim /usr/local/tomcat8/webapps/ROOT/index.jsp
<center>Now time is: <%=new java.util.Date()%></center>
7 Tomcat 管理 程序腳本
/usr/local/tomcat/webapps/ROOT 釋出目錄 tomcat
如果啟動多個tomcat服務,需要修改 800
8080 8009端口, 複制一次tomcat目錄
Tomcat守護程序腳本
!/bin/bash
usage(){
echo "USAGE: start | stop | status"
}
define PID
tomcat_pid=<code>ps -ef |grep tomcat | grep -v "grep" |awk '{print $2}'</code>
TOMCAT_PATH=/usr/local/tomcat/
start(){
status(){
ps -ef |grep tomcat | grep -v "grep"
stop(){
kill -9 $tomcat_pid
sleep 5
rm temp/ -rf
rm work/ -rf
if [ -z $TOMCAT_STATUS ];then
echo "tomcat stop"
else
fi
MAIN(){
case $1 in
start)
start
;;
stop)
stop
status)
status
*)
usage
esac
MAIN $1
8 Tomcat 安全管理配置規範
8.1 管理端口保護8005
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 35830/java
[root@apache01 webapps]# telnet 127.0.0.1 8005
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SHUTDOWN
能過telnet指令連接配接到8005端口,可以執行SHUTDOWN指令關閉tomcat
優化方案:
修改預設的8005端口,修改shutdown指定字元串
将端口修改成随機端口,将關閉指令修改成任意字元
8.2 ajp連接配接端口8009
修改預設的8009端口,通過Iptables控制ajp端口通路
8.3 禁用管理端
删除tomcat/目錄的一些host-manager docs examples 或者将tomcat的目錄設定為
tomcat以外的目錄
對于前端web子產品,tomcat管理端屬于tomcat高危安全隐患,一旦被攻破,×××通過上
傳web shell的方式将會直接取得伺服器的控制
8.4 降級啟動
8.5 檔案清單通路控制
conf/web.xml檔案中default部分listings的配置必須為false;
false為不列出目錄檔案,true為允許,預設false
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
8.6 版本資訊隐藏
8.7 server header重寫
在HTTP Connector配置中加入server的配置
server="webserver"
當tomcat HTTP端口直接提供web服務時,此配置生效,加入此配置,将會替換http響
應server header部分的預設配置,預設是Apache-Coyote/1.1
示例:
[root@tomcat01 conf]# curl --head 127.0.0.1:8080
HTTP/1.1 403 Forbidden
Server: Apache-Coyote/1.1
Cache-Control: private
Expires: Thu, 01 Jan 1970 08:00:00 CST
Content-Type: text/html
Content-Length: 559
Date: Sun, 31 Dec 2017 14:28:10 GMT
redirectPort="8443" server="nginx1.1"/>
8.8 通路限制
8.9 起停腳本權限回收
去除其他使用者對tomcat的bin目錄下的shutdown.sh startup.sh catalina.sh的執行權限
chmod -R 744 tomcat/bin/*
8.10 通路日志格式規範
開啟tomcat預設通路日志中的referer和User-Agent記錄,是為了一旦出現安全問題能夠更好的根據
日志進行問題排查
prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t %r %b %{Referer}i %{User-Agent}i $D" resolveHosts="false" />
9 Tomcat的狀态管理和host管理
/usr/local/tomcat8/webapps/manager
vim /usr/local/tomcat8/conf/tomcat-users.xml
在最後</tomcat-users>段前添加的内容如下:
<role rolename="admin-gui"/>
<user username="tomcat" password="s3cret" roles="admin-gui"/>
http://10.204.3.6:8080/manager
10 Tomcat 多執行個體
11 Tomcat 性能優化
11.1 硬體資源優化
比如記憶體,硬碟
11.2 架構上的優化
利用緩存和壓縮 在nginx前端
做動靜分離 緩解tomcat壓力
搭建叢集 采用nginx請求分流
11.3 JVM參數調優
優化檔案: /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="
server
Xms6000M
Xmx6000M
Xss512k
XX:NewSize=2250M
XX:MaxNewSize=2250M
XX:PermSize=128M
XX:MaxPermSize=256M
XX:+AggressiveOpts
XX:+UseBiasedLocking
XX:+DisableExplicitGC
XX:+UseParNewGC
XX:+UseConcMarkSweepGC
XX:MaxTenuringThreshold=31
XX:+CMSParallelRemarkEnabled
XX:+UseCMSCompactAtFullCollection
XX:LargePageSizeInBytes=128m
XX:+UseFastAccessorMethods
XX:+UseCMSInitiatingOccupancyOnly
Duser.timezone=Asia/Shanghai
Djava.awt.headless=true"
參數的詳細配置,參考:http://blog.51cto.com/zhongliang/2101918
11.4 Tomcat 參數優化
這裡着重講解tomcat參數的優化:server.xml檔案,關閉DNS查詢、配置最大并發等參數。
maxThreads:tomcat起動的最大線程數,即同時處理的任務個數,預設值為200
acceptCount:當tomcat起動的線程數達到最大時,接受排隊的請求個數,預設值為100
當然這些值都不是越大越好,需要根據實際情況來設定。可以基于測試的基礎上來不斷的調優分析。
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" 連接配接逾時
redirectPort="8443"
maxThreads="500" 最大線程 就是最大并發數
minSpareThreads="20" 最小空閑線程數
acceptCount="100" 隊列大小 等待處理的
disableUploadTimeout="true" 類似于Apache中的keeyalive一樣
enableLookups="false" 關閉DNS查詢
URIEncoding="UTF-8" />
maxSpareThreads : 最大空閑線程數
acceptCount是當線程數達到maxThreads後,後續請求會被放入一個等待隊列,這個acceptCount是這個隊列的大小,如果這個隊列也滿了,就直接refuse connection
壓縮
compression=”on” compressionMinSize=”2048″ compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”
11.5 外部調優
禁用DNS查詢
調整線程數(線程池)
maxThreads="600" 最大線程數
minSpareThreads="100" 初始化時建立的線程數
maxSpareThreads="500" 一旦建立的線程越過這個值,Tomcat就會關閉不再需要的socket線程
acceptCount="700" 指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求将不予處理
11.6 java工具 監控和管理控制台
通過IP:端口連接配接到監控和JAVA控制台
在c:\ Program Files\jdk\bin\jvisualvm.exe
通過IP:端口連接配接 管理工具
catalina.sh中加入配置,放置在#!/bin/bash标簽下
vim /usr/local/tomcat8/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS
Djava.rmi.server.hostname=10.204.3.7
Dcom.sun.management.jmxremote
Dcom.sun.management.jmxremote.port=12345
Dcom.sun.management.jmxremote.authenticate=true
Dcom.sun.management.jmxremote.ssl=false
Dcom.sun.management.jmxremote.pwd.file=/usr/local/jdk1.7/jre/lib/management/jmxremote.password"
cd /usr/local/jdk1.7/jre/lib/management/
cp jmxremote.password.template jmxremote.password
vi jmxremote.password
zhongliang 123456 # 使用者名zhongliang 密碼249765270
chmod 600 jmxremote.password
輸入遠端主機:端口 10.204.3.7:12345
選擇檔案—》添加JMX..連接配接—》10.204.3.7:12345
CPU使用情況 堆,垃級回收 抽樣器
實時線程數
注意:在控制台上執行GC清理的時候,會出現前端斷連
12 Zabbix監控tomcat
zabbix編譯的時候,指定--enable-java
yum安裝的時候,yum install zabbix-java
13 Apache整合tomcat
下載下傳tomcat-connectors-1.2.42-src.tar.gz包
Wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz
tar xzvf tomcat-connectors-1.2.42-src.tar.gz
cd tomcat-connectors-1.2.42/native
./configure --with-apxs=/usr/local/apache2/bin/apxs
make
cp ./apache-2.0/mod_jk.so /usr/local/apache/modules/
配置。
在/usr/local/apache/conf/下面建立兩個配置檔案mod_jk.conf和workers.properties。
vi mod_jk.conf#######################
添加以下内容:
指出mod_jk子產品工作所需要的工作檔案workers.properties的位置
JkWorkersFile /usr/local/apache/conf/workers.properties
Where to put jk logs
JkLogFile /usr/local/apache/logs/mod_jk.log
Set the jk log level [debug/error/info]
JkLogLevel info
Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
将所有servlet 和jsp請求通過ajp13的協定送給Tomcat,讓Tomcat來處理
JkMount /servlet/ worker1
JkMount /.jsp worker1
vi workers.properties###########################
Defining a worker named worker1 and of type ajp13
worker.list=worker1
Set properties for worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
整合apache和tomcat
Vim httpd.conf#############
DirectoryIndex index.jsp index.html
添加index.jsp
LoadModule jk_module modules/mod_jk.so
加載mod_jk.so子產品
Include /usr/local/apache/conf/mod_jk.conf
引入配置檔案
将tomcat和apache的釋出目錄設定成一緻。建立站點檔案index.jsp
14 Nginx整合Tomcat 叢集
T_INSTALL_DIR=/usr/local/tomcat
Port=<code>export 8005+1</code>
複制多個tomcat到tomcat1 tomcat2 tomcat3
修改對應每個釋出目錄的端口
安裝nginx
tar zxvf nginx-1.7.8.tar.gz //解壓
cd nginx-1.7.8
./configure --with-http_stub_status_module --with-http_ssl_module//啟動server狀态頁和https子產品
make && make install
修改nginx.conf配置檔案,添加一個location
location ~ .(jsp|do)$ {
index index.jsp;
proxy_pass http://192.168.74.129:8081; //來自jsp或者do的字尾的請求交給tomcat處理</span>
proxy_redirect off;
proxy_set_header Host $host; //後端的Web伺服器可以通過X-Forwarded-For擷取使用者真實IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; //允許用戶端請求的最大單檔案位元組數
client_body_buffer_size 128k; //緩沖區代理緩沖使用者端請求的最大位元組數
proxy_connect_timeout 90; //nginx跟後端伺服器連接配接逾時時間
proxy_read_timeout 90; //連接配接成功後,後端伺服器響應時間
proxy_buffer_size 4k; //設定代理伺服器(nginx)儲存使用者頭資訊的緩沖區大小
proxy_buffers 6 32k; //proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設定
proxy_busy_buffers_size 64k;//高負荷下緩沖大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; //設定緩存檔案夾大小,大于這個值,将從upstream伺服器傳
tomcat虛拟主機
tomcat 配置狀态資訊
tomcat配置錯誤頁面優雅顯示
tomcat配置管理頁面
tomcat 配置日志管理
15 Tomcat故障
日志檔案
/usr/local/tomcat/logs/catalina.out
【注】:tomcat查端口時正常,服務正常,但通路後,服務消失,
問題原因:因為配置檔案不正确,導緻報錯,服務自動停止
解決方法:檢查配置檔案
例如:配置檔案中沒有定義釋出目錄,但是釋出目錄中的ROOT已被删除,會導緻此類問題發生
15.1 cannot execute binary file
/usr/local/tomcat8/bin/catalina.sh: line 433: /usr/local/jdk1.8/bin/java: cannot execute binary file
[root@tomcat01 local]# java --version
bash: /usr/local/jdk1.8/bin/java: cannot execute binary file
原因:軟體版本與系統版本不一緻
15.2 insufficient free space available after evicting expired cache entries-consider increasing the maximum size of the cache.
tomcat部署jenkins啟動報錯:
insufficient free space available after evicting expired cache entries-consider increasing the maximum size of the cache.
解決該問題方法,修改tomcat/conf/context.xml檔案,增加資源最大可緩存的大小:
<Resources
cachingAllowed="true"
cacheMaxSize="102400"
/>