天天看点

mac下tomcat启用APR模式前言BIO NIO APR模式的比较配置环境相关文件准备apr安装openssl安装tomcat-native安装tomcat server.xml配置问题总结

前言

配置完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多折腾折腾的确会很有意思呢~

继续阅读