前言
配置完SSL,我其实还是希望通过wireshark分析一下SSL握手协议,APR模式其实是想用来尝试下能否实现握手协议的,毕竟加入了openssl。事实证明,并没有相关干系,但毕竟折腾了挺久的,还是稍作记录下=。=
BIO NIO APR模式的比较
BIO:采用Java IO技术,单线程处理单请求(Tomcat7以下默认)
NIO:采用Java NIO技术,少量线程处理大量请求(Tomcat8以上默认)
APR:采用Jni技术,从操作层面解决io阻塞问题,适合高并发场景
处理请求方面:BIO
配置环境
系统:OSX10.11.4 64位
Xcode版本: 7.3.1
tomcat版本:8.0.33
jdk版本:1.8.0_77
相关文件准备
1.APR library
2.OpenSSL libraries
3.Java SE Development Kit (JDK)
下载dmg的格式直接安装即可
4.tomcat native
apr安装
解压apr包,注意留意README文档,里面有相关的信息
默认安装目录在 /usr/local/apr
安装的时候注意使用管理员权限,sudo command ~
cd apr
./configure
make
make install
openssl安装
解压openssl包,注意INSTALL文档
默认安装目录为 /usr/local/ssl
安装的时候,如果是64位的机子,配置文件需要使用
./Configure darwin64-x86_64-cc
自动配置则使用
./config
编译安装:
make
make install
tomcat-native安装
解压之后,在/tomcat-native/native/里有BUIDING文档
./configure --with-apr=/usr/local/apr
--with-ssl=/usr/local/ssl
--with-java-home=${JAVA_HOME}
JAVA_HOME需要给出jdk的安装目录
make
make install
生成成功后,会在/usr/local/apr/lib下有libtcnative-1.0.dylib的库文件,这个就是tomcat启动的依赖库,需要把该文件软链接到警告中提到的任一目录内。
ln -s /usr/local/apr/lib/libtcnative-1.dylib /Library/Java/Extensions/
注意这里并不是直接链接源文件,而是链接源文件的软链接
ln命令的介绍
tomcat server.xml配置
1.开启APR监听
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
2.配置APR Connectors
<Connector port="443" maxHttpHeaderSize="8192"
maxThreads="150"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
SSLEnabled="true"
SSLCertificateFile="${服务器签名好的证书.crt}"
SSLCertificateKeyFile="${服务器的密钥.pem}" />
参考:http://tomcat.apache.org/tomcat-8.0-doc/apr.html
问题
1.UnsatisfiedLinkError
Exception in thread "main" java.lang.UnsatisfiedLinkError: /Users/wangtao/work/apache-tomcat/tcnative/trunk/native/.libs/libtcnative-1.0.dylib:dlopen(/Users/wangtao/work/apache-tomcat/tcnative/trunk/native/.libs/libtcnative-1.0.dylib,1): Symbol not found: _OCSP_RESPONSE_new
这个是因为openssl未完全编译引起的,主要是64bit系统没有按照64bit编译的方式执行,编译前应该执行下面操作
./Configure darwin64-x86_64-cc
参考:https://qnalist.com/questions/6290333/tomcat-native-1-2-2
2.配置tomcat-native没有头文件
fatal error: stdio.h: No such file or directory
原因:安装Xcode的时候没有安装命令行操作工具
解决方案:
xcode-select –install
参考:http://stackoverflow.com/questions/19580758/gcc-fatal-error-stdio-h-no-such-file-or-directory
3.配置tomcat-native找不到gcc或者cc的路径
原因:查找的路径不是默认的路径
解决方案:
ln -s 你的gcc或者cc安装目录/usr 报错信息的目录
总结
配置环境其实还是蛮好玩的,好好看看官方文档,然后自己摸索摸索把环境搭好,内心还是灰常欣慰的哈~
遇到问题的时候,尝试通过日志记录的信息,然后一步一步排除问题。对于每个指令,理解并知道其本质原理,上手起来其实都是很easy~恩,多动动手,linux多折腾折腾的确会很有意思呢~