1. 程式人生 > >mac下tomcat啟用APR模式

mac下tomcat啟用APR模式

前言

配置完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

相關檔案準備

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}" />

問題

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

2.配置tomcat-native沒有標頭檔案

fatal error: stdio.h: No such file or directory

原因:安裝Xcode的時候沒有安裝命令列操作工具
解決方案:
xcode-select –install

3.配置tomcat-native找不到gcc或者cc的路徑

原因:查詢的路徑不是預設的路徑
解決方案:

ln -s 你的gcc或者cc安裝目錄/usr 報錯資訊的目錄

總結

配置環境其實還是蠻好玩的,好好看看官方文件,然後自己摸索摸索把環境搭好,內心還是灰常欣慰的哈~
遇到問題的時候,嘗試通過日誌記錄的資訊,然後一步一步排除問題。對於每個指令,理解並知道其本質原理,上手起來其實都是很easy~恩,多動動手,linux多折騰折騰的確會很有意思呢~