1. 程式人生 > >linux下tomcat使用apr聯結器(含openssl)完整過程

linux下tomcat使用apr聯結器(含openssl)完整過程

介紹


Apache Portable Runtime 簡稱 APR 是一個高度可移植性庫,它有許多用途,舉例如下:
1.訪問高階IO功能(如sendfile epoll和OpenSSL)
2.作業系統級別的功能(隨機數生成、系統狀態等)
3.本地流程處理(共享記憶體,NT管道和Unix套接字)

Tomcat使用APR可以提供優越的可伸縮性、效能、本地伺服器整合等。

準備

1.openssl-1.0.1h.tar.gz
  下載地址:http://www.openssl.org/source/
2.apr-1.5.1.tar.gz
  下載地址:http://apr.apache.org/download.cgi
3.apache-tomcat-7.0.30.tar.gz
  下載地址:http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.30/bin/

安裝

1.安裝openssl

tar zxvf openssl-1.0.1h.tar.gz
cd openssl-1.0.1h
./config --prefix=/home/wangpl/Desktop/installdir/myopenssl
make
make install
可選:
make clean
make distclean
cd ..
rm -rf openssl-1.0.1h

2.安裝apr

tar zxvf apr-1.5.1.tar.gz
cd apr-1.5.1
./configure --prefix=/home/wangpl/Desktop/installdir/myapr
make
make install
可選:
make clean
make distclean
cd ..
rm -rf apr-1.5.1

3.安裝tomcat的JNI wrappers

此檔案隨tomcat一起釋出,位於:apache-tomcat-7.0.30/bin/tomcat-native.tar.gz
tar zxvf apache-tomcat-7.0.30.tar.gz
cd apache-tomcat-7.0.30/bin/
tar zxvf tomcat-native.tar.gz
cd tomcat-native-1.1.24-src/jni/native/
./configure --prefix=/home/wangpl/Desktop/installdir/mytcnative --with-apr=/home/wangpl/Desktop/installdir/myapr --with-ssl=/home/wangpl/Desktop/installdir/myopenssl
make
make install
可選:
make clean
make distclean
cd ../../..
rm -rf tomcat-native-1.1.24-src/

4.配置tomcat

PS:如果沒配置apr,tomcat啟動日誌中有這樣一條:INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found
編輯apache-tomcat-7.0.30/bin/catalina.sh,在首行新增:
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/home/wangpl/Desktop/installdir/mytcnative/lib"
PS:-Djava.library.path是java的一個標準-D引數,目的是指定應用程式的jni本地庫路徑,詳細:http://blog.csdn.net/conquer0715/article/details/33728113
新增完tcnative-libs本地庫路徑後啟動tomcat,看到有如下日誌輸出:
INFO: Loaded APR based Apache Tomcat Native library 1.1.24 using APR version 1.5.1.
Jul 17, 2014 4:06:39 PM org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Jul 17, 2014 4:06:39 PM org.apache.catalina.core.AprLifecycleListener initializeSSL
INFO: OpenSSL successfully initialized (OpenSSL 1.0.1h 5 Jun 2014)
...
INFO: Starting ProtocolHandler ["http-apr-8080"]
Jul 17, 2014 4:06:40 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-apr-8009"]

表示當前使用APR version 1.5.1和OpenSSL 1.0.1h,並且8080和8009連線也由原來的bio變成了apr型別。

配置使用openssl通訊:
編輯apache-tomcat-7.0.30/conf/server.xml,新增如下:
<Connector port="8443" maxHttpHeaderSize="8192"
         maxThreads="150" enableLookups="false" disableUploadTimeout="true" acceptCount="100"
         SSLEnabled="true" scheme="https" secure="true"
         SSLCertificateFile="${catalina.base}/conf/server-cert.pem"
         SSLCertificateKeyFile="${catalina.base}/conf/server-key.pem"
         SSLPassword="" />
PS:server-cert.pem證書和server-key.pem私鑰由openssl生成。
PS:在server.xml檔案中有這樣一句:<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
其中SSLEngine="on"表示是否使用OpenSSL,on表示是,會在啟動的時候初始化OpenSSL,可以從日誌中看到,off表示否,不會在啟動時候初始化,從日誌中將看不到資訊。
注意,設定為on表示是會初始化已備使用,但是必需配置對應的Connector(如上面提到的8443的Connector)才能真正使用。

最後說一下,linux平臺使用“./configure --prefix=xx make make install”形式安裝後的軟體,是可以更改目錄的,但在更改的時候要將原目錄內所有的原先的絕對路徑改成新的絕對路徑,可以使用sublime或其它軟體
開啟軟體目錄,然後全域性搜尋用新的地址替換舊的地址即可。注意在跨機器的情況下一般是不可用的,否則就直接釋出綠色版了(個人見解)。