1. 程式人生 > >讓自己的Tomcat支援APR外掛

讓自己的Tomcat支援APR外掛

TOMCAT安裝APR外掛配置

介紹


Tomcat可以使用Apache Portable Runtime來提供卓越的效能及可擴充套件性,更好地與本地伺服器技術的整合。Apache Portable Runtime是一個高度可移植的庫,位於Apache HTTP Server 2.x的核心。APR有許多用途,包括訪問高階IO功能(如sendfile,epoll和OpenSSL),作業系統級功能(隨機數生成,系統狀態等)以及本地程序處理(共享記憶體,NT管道和Unix套接字)

官方要求:

APR 1.2+ development headers (libapr1-dev package)
OpenSSL 1.0.2+ development headers (libssl-dev package)
JNI headers from Java compatible JDK 1.4+
GNU development environment (gcc, make)

生產環境:

CentOS Linux release 7.3.1611 (Core) x86 64
Server version: Apache Tomcat/8.5.16
java version “1.8.0_144”

1.安裝相關依賴包

yum -y install gcc gcc-c++ libtool* autoconf automake expat-devel perl perl-devel

2.下載安裝包

wget http://mirror.bit.edu.cn/apache/apr/apr-1.6.2.tar.gz
wget

http://mirror.bit.edu.cn/apache/apr/apr-iconv-1.2.1.tar.gz
wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.6.0.tar.gz
wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz

3.安裝APR

tar zxvf apr-1.6.2.tar.gz
cd apr-1.6.2
vim configure
預設值:
RM=‘ R

M : R M = RM' 修改為: RM=' RM -f’
./configure --prefix=/usr/local/apr
make && make install

4.安裝apr-iconv

tar zxvf apr-iconv-1.2.1.tar.gz
cd apr-iconv-1.2.1
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make && make install

5.安裝apr-util

tar zxvf apr-util-1.6.0.tar.gz
cd apr-util-1.6.0
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
make && make install

6.安裝OpenSSL

tar zxvf openssl-1.1.0f.tar.gz
cd openssl-1.1.0f
./config --prefix=/usr/local/openssl
make -j 4 && make install

7.安裝tomcat-native

cd /usr/local/tomcat/bin/
tar zxvf tomcat-native.tar.gz
cd tomcat-native-1.2.12-src/native
./configure --with-ssl=/usr/local/openssl --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.8.0_144
make && make install

** 注意:如果以上 configure 失敗,可以執行 make distclean 清除 **


8.新增變數內容

vim /etc/profile.d/jdk.sh
export LD_LIBRARY_PATH=/usr/local/apr/lib:$LD_LIBRARY_PATH
source /etc/profile.d/jdk.sh

安裝完成,此時啟動tomcat報錯,找不到tomcat下的native包,進入到/usr/local/apr/lib目錄下執行

安裝完成後,libtcnative.1.so被放在了/usr/local/apr/,但是Tomcat的java.library.path並不包含這個目錄,可以使用ln -s /usr/local/apr/lib/libtcnative-1.so /usr/lib64/libtcnative-1.so命令解決。

ln -s /usr/local/apr/lib/libtcnative-1.so /usr/lib64/libtcnative-1.so

9.接下來需要修改tomcat配置檔案中的APR執行模式,並測試是否安裝成功。

vim /home/gcms/apache-tomcat-8.5.20/conf/server.xml

預設值:
<Connector port="28089" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改為:
<Connector port="28089" protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="20000" redirectPort="8443" />
預設值
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改為:
<Connector port="8009" protocol="org.apache.coyote.ajp.AjpAprProtocol" redirectPort="8443" />
注意:可以看到紅色部分,提示找不到基於APR的Apache Tomcat Native庫,因此無法使用APR模式啟動。
解決方案:
cp -R /usr/local/apr/lib/* /usr/lib64
cp -R /usr/local/apr/lib/* /usr/lib
重啟TOMCAT並檢視日誌
29-Aug-2017 14:45:19.200 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory 		[/home/gcms/apache-tomcat-8.5.20/webapps/host-manager]
29-Aug-2017 14:45:19.517 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/home/gcms/apache-tomcat-8.5.20/webapps/host-manager] has finished in [318] ms
29-Aug-2017 14:45:19.518 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/home/gcms/apache-tomcat-8.5.20/webapps/ROOT]
29-Aug-2017 14:45:19.532 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/home/gcms/apache-tomcat-8.5.20/webapps/ROOT] has finished in [14] ms
29-Aug-2017 14:45:19.533 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/home/gcms/apache-tomcat-8.5.20/webapps/docs]
29-Aug-2017 14:45:19.546 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/home/gcms/apache-tomcat-8.5.20/webapps/docs] has finished in [12] ms
29-Aug-2017 14:45:19.546 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/home/gcms/apache-tomcat-8.5.20/webapps/examples]
29-Aug-2017 14:45:19.747 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/home/gcms/apache-tomcat-8.5.20/webapps/examples] has finished in [201] ms
29-Aug-2017 14:45:19.748 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/home/gcms/apache-tomcat-8.5.20/webapps/manager]
29-Aug-2017 14:45:19.765 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/home/gcms/apache-tomcat-8.5.20/webapps/manager] has finished in [17] ms
29-Aug-2017 14:45:19.768 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-28089"]
29-Aug-2017 14:45:19.776 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-apr-28009"]
29-Aug-2017 14:45:19.779 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 612 ms

可以看到已經以apr協議模式啟動成功,經基於APR的技術web壓力測試,Tomcat的效能飆升

注意
xml/apr_xml.c:35:19: fatal error: expat.h: 沒有那個檔案或目錄
compilation terminated.
/etc/httpd/apr-util-1.6.0/build/rules.mk:206: recipe for target 'xml/apr_xml.lo' failed
make[1]: * [xml/apr_xml.lo] Error 1
make[1]: Leaving directory '/etc/httpd/apr-util-1.6.0'
/etc/httpd/apr-util-1.6.0/build/rules.mk:118: recipe for target 'all-recursive' failed
解決辦法就是安裝libexpat1-dev
sudo apt-get install libexpat1-dev