今天決定把之前配置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"
中又會被實例化一次
修改完後再次測試成功