tomcat的运行模式有3种.修改他们的运行模式.3种模式的运行是否成功,可以看他的启动控制台,或者启动日志.或者登录他们的默认页面http://localhost:8080/查看其中的服务器状态。
1)bio
默认的模式,性能非常低下,没有经过任何优化处理和支持.
2)nio
利用java的异步io护理技术,no blocking IO技术.
想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
enableLookups="false"
redirectPort="8443" />
启动后,就可以生效。
3)apr
安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能.
必须要安装apr和native,直接启动就支持apr。下面的修改纯属多余,仅供大家扩充知识,但仍然需要安装apr和native
如nio修改模式,修改protocol为org.apache.coyote.http11.Http11AprProtoco
tomcat如何支持apr?
需要安装apr, apr-util, openssl, tomcat-native(tomcat-native包在tomcat目录的bin目录下就有源码的压缩包,解压这个包,注意下版本,也可以在http://tomcat.apache.org/download-native.cgi下载,并在http://tomcat.apache.org/native-doc/miscellaneous/changelog.html中查看下支持的openssl和apr版本,然后到对应的网站下载适合的版本)
1. 从网站 http://apache.spd.co.il/apr/ 中下载apr-xxx.tar.gz
tar zxvf apr-1.xx.xx.tar.gz
cd apr-xxx
./configure
make && make install
默认安装在/usr/local/apr目录下,可以通过命令行参数 –prefix 指定,建议不要改。
2. 从网站 http://apache.spd.co.il/apr/ 中下载apr-util-xxx.tar.gz
tar zxvf apr-util-xxx.tar.gz
cd apr-util-xxx
./configure –with-apr=/usr/local/apr (此处路径就是上面俺转apr的路径)
make && make install
3. openssl安装,其实linux版本一般都自带openssl,可以通过命令: openssl version查看版本,如果太低,可以
从https://www.openssl.org/source/下载openssl-xx.tar.gz包编译安装
tar zxvf openssl-xx.tar.gz
cd openssl-xx
./config
make && make install (默认安装在/usr/local/ssl/)
4. 安装tomcat-native ,建议使用tomcat自己bin目录下的tomcat-native.tar.gz,
解压,
tomcat-native-1.1.27-src的版本进入jni/native目录,查看 BUILDING文件,可以有详细的说明
tomcat-native-1.2.10-src的版本直接进入native目录,查看BUILDING文件,有详细的说明
在native目录下,输入
configure –with-apr=/usr/local/apr –with-ssl=/usr/local/ssl
其中/usr/local/apr 和 /usr/local/ssl分别是上面安装的apr和openssl目录。
安装完成有提示文字告诉你安装到的位置, 上面路径默认安装在/usr/local/apr/lib
配置tomcat,其实在BUILDING文件有说明,具体是:
Using it in Tomcat
——————
1. In <Connector> use of conf/server.xml:
protocol=”org.apache.coyote.http11.Http11AprProtocol”
2. In bin/setenv.sh add the following:
CATALINA_OPTS=”$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib”
tomcat下没有bin/setenv.sh 文件就新建一个,并有可执行权。
启动tomcat , 看到如下信息:
信息: Starting ProtocolHandler [“http-apr-8080”]
成功!
关于openssl配置(单向):
单向SSL的概念:
客户端向服务器发送消息,服务器接到消息后,用服务器端的密钥库中的私钥对数据进行加密,然后把加密后的数据和服务器端的公钥一起发送到客户端,客户端用服务器发送来的公钥对数据解密,然后在用传到客户端的服务器公钥对数据加密传给服务器端,服务器用私钥对数据进行解密,这就完成了客户端和服务器之间通信的安全问题,但是单向认证没有验证客户端的合法性。
不使用apr情况:
(1)产生密钥库
keytool -genkeypair -alias tomcat -keyalg RSA -keysize 1024 -validity 365 -keystore /usr/local/apache-tomcat-6.0.18/keystore
(2)在Connector上配置密钥库
<Connector port=”8443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”150″ scheme=”https” secure=”true”
clientAuth=”false” sslProtocol=”TLS” keystoreFile=”/usr/local/tomcat/conf/keystore” keystorePass=”123456″/>
使用apr情况:
(1)产生密钥库
openssl genrsa -out rsa-private-key.pem 1024
openssl req -new -x509 -nodes -sha1 -days 365 -key rsa-private-key.pem -out self-signed-cert.pem
(2)在Connector上配置密钥库
<Connector port=”8443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”150″ scheme=”https” secure=”true”
clientAuth=”false” sslProtocol=”TLS”
SSLCertificateKeyFile=”/usr/local/tomat/rsa-private-key.pem”
SSLCertificateFile=”/usr/local/tomat/self-signed-cert.pem”/>
出现:
Failed to initialize end point associated with ProtocolHandler ["http-apr-8443"]
java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR
可以将: protocol=“HTTP/1.1″修改为 protocol=”org.apache.coyote.http11.Http11Protocol”, 之修改https的端口,不要修改原来支持apr的http的protocol