Tomcat配置SSL證書遇到的各種問題

今天決定把之前配置SSL證書遇到的各種問題記錄下來
一,前往阿里雲下載免費版SSL證書(具體可以百度)
二,參照下載時SSL證書配置進行配置(阿里雲提供有Tomcat配置的視頻)
視頻連接:https://help.aliyun.com/video_detail/54217.html
1.配置Tomcat
沒有按照視頻來做,直接在Tomcat目錄下新建cret文件夾
這裏寫圖片描述
將下載下來的文件放入cret文件中
這裏寫圖片描述
2.打開Tomcat/config/server.xml文件,按照證書安裝提示修改server.xml文件
這裏寫圖片描述
其中,keystoreFile爲pfx文件路徑,keystorePass爲pfx-password.txt中保存的密碼
配置成功後開始訪問web頁面,結果提示輸入用戶名和密碼,查詢資料發現,Tomcat配置ssl證書時要開啓443端口,但是我們的服務器上安裝了SVN,SVN使用的也是443端口,兩者產生了衝突,因此關掉SVN服務,再次訪問web頁面,不再提示輸入用戶名和密碼

三、由於之前的域名同事覺得不爽,重新配置新的域名
配置新的域名後,原80端口和現443端口同時開啓,訪問程序出錯(至今沒搞明白是什麼原因)
報錯:outofmemoryerror thrown from the uncaughtexceptionhandler in thread
沒有解決這個問題,於是諮詢了前輩,前輩建議我部署兩個Tomcat,將兩個端口分開來,一個Tomcat用原域名,80端口,另一個Tomcat用新域名443端口

四、在同一個服務器上部署兩個Tomcat
Windows環境下在同一臺服務器部署兩個Tomcat
1.使用非安裝版的Tomcat,可以直接複製上一個Tomcat,
2.第一個Tomcat的配置保持不變,增加環境變量CATALINA_HOME2,值爲新的tomcat的地址;增加環境變量CATALINA_BASE2,值爲新的tomcat的地址。
3.修改新的tomcat中的startup.bat,把其中的CATALINA_HOME改爲CATALINA_HOME2。 【可以查找替換記得挨個檢查一遍】
4.修改新的tomcat中的catalina.bat,把其中的CATALINA_HOME改爲CATALINA_HOME2,CATALINA_BASE改爲CATALINA_BASE2。
5.修改conf/server.xml文件:

<Server port="8005" shutdown="SHUTDOWN">修改端口號  
<Connector port="8080" maxHttpHeaderSize="8192"  
  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
  enableLookups="false" redirectPort="8443" acceptCount="100"  
  connectionTimeout="20000" disableUploadTimeout="true" /> 修改端口號
<Connector port="8009"  
  enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> 修改端口號

參考:http://www.cnblogs.com/zhangdashao/p/5395888.html
五、重新啓動項目後遇到的幾個錯誤
1.java.lang.OutOfMemoryError: PermGen space異常處理
解決方法: 手動設置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh在

echo "Using CATALINA_BASE:   $CATALINA_BASE"

上面加入以下行:

JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m

2.Error processing request錯誤

2017-6-3 11:29:32 org.apache.coyote.http11.AbstractHttp11Processor process
嚴重: Error processing request
java.lang.NullPointerException
        at org.apache.tomcat.util.buf.CharChunk.append(CharChunk.java:355)
        at org.apache.tomcat.util.http.mapper.Mapper.map(Mapper.java:673)
        at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAd
apter.java:646)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:402)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp
11Processor.java:1002)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:585)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoin
t.java:1813)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
utor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:908)
        at java.lang.Thread.run(Thread.java:619)

解決辦法:
是因爲tomcat在server.xml裏配置的有問題,即使域名配置了,也必須要有

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"></Host>

這個localhost配置,不然就會報你那個錯,因爲這個request請求是很不尋常的纔會出現這個錯,你配置一個localhst就可以了

3.log重命名失敗

第二天打開服務器時發現Tomcat報錯

這裏寫圖片描述

查詢發現,只有第二個Tomcat報了這個錯誤,第一個Tomcat重命名成功,在網上查找很多方法,大多建議修改log4j源碼,於是決定更換log4j.jar,具體jar文件可上網搜索

更換過後,第二天重命名成功

4.定時器執行定時任務遷移數據時產生錯誤

項目試用了springTask定時任務,之前只有一個Tomcat時從未產生定時器錯誤,週一時發現每週一凌晨3點執行的定時任務失敗,查看數據庫卻發現數據沒有損失並且全部遷移成功,於是開始在測試環境進行測試,測試發現定時器產生了兩次實例
這裏寫圖片描述
查看Tomcat運行
修改Tomcat/conf/server.xml文件,修改節點Host,將appBase屬性由默認的“webapps”設置爲空(”“)即可,如下所示:

<Host appBase="" autoDeploy="true" name="localhost" unpackWARs="true"></Host>

由於我的web應用程序默認都是放在webapps這個目錄下的,其中已經配置了一個appBase="webapps"如果不把“webapps“去掉,這裏會實例化一次,在另一個appBase="webapps"中又會被實例化一次

修改完後再次測試成功

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章