前言
配置完SSL,我其實還是希望通過wireshark分析一下SSL握手協定,APR模式其實是想用來嘗試下能否實作握手協定的,畢竟加入了openssl。事實證明,并沒有相關幹系,但畢竟折騰了挺久的,還是稍作記錄下=。=
BIO NIO APR模式的比較
BIO:采用Java IO技術,單線程處理單請求(Tomcat7以下預設)
NIO:采用Java NIO技術,少量線程處理大量請求(Tomcat8以上預設)
APR:采用Jni技術,從操作層面解決io阻塞問題,适合高并發場景
處理請求方面:BIO
配置環境
系統:OSX10.11.4 64位
Xcode版本: 7.3.1
tomcat版本:8.0.33
jdk版本:1.8.0_77
相關檔案準備
1.APR library
2.OpenSSL libraries
3.Java SE Development Kit (JDK)
下載下傳dmg的格式直接安裝即可
4.tomcat native
apr安裝
解壓apr包,注意留意README文檔,裡面有相關的資訊
預設安裝目錄在 /usr/local/apr
安裝的時候注意使用管理者權限,sudo command ~
cd apr
./configure
make
make install
openssl安裝
解壓openssl包,注意INSTALL文檔
預設安裝目錄為 /usr/local/ssl
安裝的時候,如果是64位的機子,配置檔案需要使用
./Configure darwin64-x86_64-cc
自動配置則使用
./config
編譯安裝:
make
make install
tomcat-native安裝
解壓之後,在/tomcat-native/native/裡有BUIDING文檔
./configure --with-apr=/usr/local/apr
--with-ssl=/usr/local/ssl
--with-java-home=${JAVA_HOME}
JAVA_HOME需要給出jdk的安裝目錄
make
make install
生成成功後,會在/usr/local/apr/lib下有libtcnative-1.0.dylib的庫檔案,這個就是tomcat啟動的依賴庫,需要把該檔案軟連結到警告中提到的任一目錄内。
ln -s /usr/local/apr/lib/libtcnative-1.dylib /Library/Java/Extensions/
注意這裡并不是直接連結源檔案,而是連結源檔案的軟連結
ln指令的介紹
tomcat server.xml配置
1.開啟APR監聽
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
2.配置APR Connectors
<Connector port="443" maxHttpHeaderSize="8192"
maxThreads="150"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
SSLEnabled="true"
SSLCertificateFile="${伺服器簽名好的證書.crt}"
SSLCertificateKeyFile="${伺服器的密鑰.pem}" />
參考:http://tomcat.apache.org/tomcat-8.0-doc/apr.html
問題
1.UnsatisfiedLinkError
Exception in thread "main" java.lang.UnsatisfiedLinkError: /Users/wangtao/work/apache-tomcat/tcnative/trunk/native/.libs/libtcnative-1.0.dylib:dlopen(/Users/wangtao/work/apache-tomcat/tcnative/trunk/native/.libs/libtcnative-1.0.dylib,1): Symbol not found: _OCSP_RESPONSE_new
這個是因為openssl未完全編譯引起的,主要是64bit系統沒有按照64bit編譯的方式執行,編譯前應該執行下面操作
./Configure darwin64-x86_64-cc
參考:https://qnalist.com/questions/6290333/tomcat-native-1-2-2
2.配置tomcat-native沒有頭檔案
fatal error: stdio.h: No such file or directory
原因:安裝Xcode的時候沒有安裝指令行操作工具
解決方案:
xcode-select –install
參考:http://stackoverflow.com/questions/19580758/gcc-fatal-error-stdio-h-no-such-file-or-directory
3.配置tomcat-native找不到gcc或者cc的路徑
原因:查找的路徑不是預設的路徑
解決方案:
ln -s 你的gcc或者cc安裝目錄/usr 報錯資訊的目錄
總結
配置環境其實還是蠻好玩的,好好看看官方文檔,然後自己摸索摸索把環境搭好,内心還是灰常欣慰的哈~
遇到問題的時候,嘗試通過日志記錄的資訊,然後一步一步排除問題。對于每個指令,了解并知道其本質原理,上手起來其實都是很easy~恩,多動動手,linux多折騰折騰的确會很有意思呢~