介绍
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本地库路径
添加完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或其它软件
打开软件目录,然后全局搜索用新的地址替换旧的地址即可。注意在跨机器的情况下一般是不可用的,否则就直接发布绿色版了(个人见解)。
ubuntu下openssl客户端通过代理服务器访问远程主机:http://www.linuxdiyf.com/linux/16940.html
ubuntu安装openssl库:http://www.linuxdiyf.com/linux/13828.html
Ubuntu编译环境构建(openssl):http://www.linuxdiyf.com/linux/13751.html
Linux下使用OpenSSL生成证书:http://www.linuxdiyf.com/linux/11951.html
使用openssl命令行构建CA及证书:http://www.linuxdiyf.com/linux/15338.html