| 系統(tǒng)環(huán)境:centos6.5  jdk1.7+  tomcat8+ 
 tomcat有3中運(yùn)行模式,早期的是bio,阻塞式,后來(lái)出現(xiàn)nio非阻塞式,再后來(lái)又出現(xiàn)apr基于本地庫(kù)的形式,性能依次提高。據(jù)說(shuō)都是一大截一大截的。 下面用到的文件統(tǒng)一下載:啊(下面的鏈接時(shí)間久了會(huì)失效) 
 apr模式需要以來(lái)以下本地庫(kù)的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: 下載
 環(huán)境安裝: 1. openssl默認(rèn)的好像都是1.0.1e,需要升級(jí)。 下載好的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
 //備份原來(lái)的
 mv /usr/bin/openssl /usr/bin/openssl.bakmv /usr/include/openssl /usr/include/openssl.bak
 //建立軟連接 ln -s /usr/local/openssl/bin/openssl /usr/bin/opensslln -s /usr/local/openssl/include/openssl /usr/include/openssl
 //設(shè)置到運(yùn)行庫(kù)
 echo "/usr/local/openssl/lib">>/etc/ld.so.conf//查看設(shè)置狀態(tài)
 ldconfig -v  
 openssl version -a  
 升級(jí)就成功了
 2. 安裝tomcat-native所需模塊 tar -xzvf apr-1.5.2.tar.gz cd apr-1.5.2 ./configure 
 make & make install 接著安裝apr-util和iconv,方法一樣不過(guò)./configure --with-apr=/usr/local/apr指明一下apr安裝位置就可以了,不寫(xiě)也會(huì)提示寫(xiě)上。 最后還要在/etc/profile里加上lib庫(kù) 
 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/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 等待完成(如果出錯(cuò),等會(huì)下面寫(xiě)我遇到的錯(cuò)誤)make & make install
 等待完成
 4. 配置server.xml 修改connector是8080那個(gè)就好,底下有個(gè)小栗子,把protocol復(fù)制過(guò)來(lái)就可以了
 protocol="org.apache.coyote.http11.Http11NioProtocol",替換原來(lái)HTTP1.1那個(gè) 啟動(dòng)tomcat,如下表示成功:
  
 5. 問(wèn)題總結(jié): 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 這個(gè)是openssl版本和tomcat對(duì)不上導(dǎo)致的,具體版本間對(duì)應(yīng)關(guān)系得查找官網(wǎng)資料,我也是瞎摸的,一般編譯tomcat-native時(shí)候會(huì)有檢查,都通過(guò)了就是兼容的。
 2. requires the APR/native library which is not available 這個(gè)是tomcat配置了apr模式運(yùn)行,但是以來(lái)模塊沒(méi)到位。
 3. make tomcat-native 'ERR_remove_thread_state' is deprecated
 這個(gè)是我用tomcat8.0.36和openssl1.1.0e時(shí)候的錯(cuò),死活tomcat-native編譯都通不過(guò),最后換成tomcat8.5.15就沒(méi)問(wèn)題了。估計(jì)是有一個(gè)版本低了。
 
 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時(shí),出現(xiàn)上面的問(wèn)題,可能是因?yàn)榘惭b的是jre不是jdk,他需要jni_md.h這個(gè)文件,在/usr/lib/jvm/java/include/linux/下面有,cp /usr/lib/jvm/java/include /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/重新執(zhí)行configure即可。
 |