天天看點

tomcat8.5.15 apr模式運作 配置

系統環境:centos6.5  jdk1.7+  tomcat8+

tomcat有3中運作模式,早期的是bio,阻塞式,後來出現nio非阻塞式,再後來又出現apr基于本地庫的形式,性能依次提高。據說都是一大截一大截的

tomcat8.5.15 apr模式運作 配置

下面用到的檔案統一下載下傳:啊(下面的連結時間久了會失效)

apr模式需要以來以下本地庫的lib:

1. openssl > 1.0.2以上 (下面用1.1.0e) 下載下傳

2. apr-xxxx.tar.gz (下面用1.5.2) 下載下傳

3. apr-util-xxxx.tar.gz (下面用1.5.4) 下載下傳

4. apr-iconv-xxx.tar.gz (下面用1.2.1) 下載下傳

tomcat8.5.15: 下載下傳

環境安裝:

1. openssl預設的好像都是1.0.1e,需要更新。

下載下傳好的openssl.tar.gz放到usr/local/下

//解壓 編譯安裝

tar -xzvf openssl-1.1.0e.tar.gz

cd openssl-1.1.0e

./config --prefix=/usr/local/openssl 

make && make install 

//備份原來的

mv /usr/bin/openssl /usr/bin/openssl.bak

mv /usr/include/openssl /usr/include/openssl.bak

//建立軟連接配接

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/openssl/include/openssl /usr/include/openssl

//設定到運作庫

echo "/usr/local/openssl/lib">>/etc/ld.so.conf

//檢視設定狀态

ldconfig -v

tomcat8.5.15 apr模式運作 配置
openssl version -a
tomcat8.5.15 apr模式運作 配置
更新就成功了
2. 安裝tomcat-native所需子產品

tar -xzvf apr-1.5.2.tar.gz

cd apr-1.5.2

./configure

make & make install

接着安裝apr-util和iconv,方法一樣不過./configure --with-apr=/usr/local/apr指明一下apr安裝位置就可以了,不寫也會提示寫上。

最後還要在/etc/profile裡加上lib庫

3. tomcat-native安裝

cd tomcat解壓目錄/bin

tar -xzvf tomcat-native.tar.gz

cd tomcat-native-1.2.12-src/native/

./configure --with-apr=/usr/local/apr --with-java-home=$JAVA_HOME --with-ssl=/usr/local/openssl

等待完成(如果出錯,等會下面寫我遇到的錯誤)

make & make install

等待完成

4. 配置server.xml
修改connector是8080那個就好,底下有個小栗子,把protocol複制過來就可以了

protocol="org.apache.coyote.http11.Http11NioProtocol",替換原來HTTP1.1那個

啟動tomcat,如下表示成功:

tomcat8.5.15 apr模式運作 配置
5. 問題總結:

1. java.lang.UnsatisfiedLinkError: /usr/local/apr/lib/libtcnative-1.so.0.2.7: /usr/local/apr/lib/libtcnative-1.so.0.2.7: undefined symbol: BN_get_rfc3526_prime_8192

這個是openssl版本和tomcat對不上導緻的,具體版本間對應關系得查找官網資料,我也是瞎摸的,一般編譯tomcat-native時候會有檢查,都通過了就是相容的。

2. requires the APR/native library which is not available

這個是tomcat配置了apr模式運作,但是以來子產品沒到位。

3. make tomcat-native 'ERR_remove_thread_state' is deprecated

這個是我用tomcat8.0.36和openssl1.1.0e時候的錯,死活tomcat-native編譯都通不過,最後換成tomcat8.5.15就沒問題了。估計是有一個版本低了。

4. checking for JDK os include directory... Cannot find jni_md.h in /usr/lib/jvm/jre-1.8.0-openjdk.x86_64//configure: error: You should retry --with-os-type=SUBDIR

     在/tomcat-native-1.2.12-src/native/下./configure時,出現上面的問題,可能是因為安裝的是jre不是jdk,他需要jni_md.h這個檔案,在/usr/lib/jvm/java/include/linux/下面有,cp /usr/lib/jvm/java/include /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/重新執行configure即可。

繼續閱讀