天天看點

mac下tomcat啟用APR模式前言BIO NIO APR模式的比較配置環境相關檔案準備apr安裝openssl安裝tomcat-native安裝tomcat server.xml配置問題總結

前言

配置完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多折騰折騰的确會很有意思呢~

繼續閱讀