tomcat runing on daemon with apr and ssl mode
前言:
簡要介紹下tomcat 的三種運行模式,記錄基于apr模式及支持SSL模式的安裝方式
環境:
本文主要基于ubuntu 安裝tomcat 7,與基于centos并無太大差異,主要差異在于相關依賴包的名稱,在此會給出centos 所需的依賴包名稱。
模式簡介:
BIO模式:阻塞試I/O操作,表示Tomcat 使用傳統java I/O 操作(即java.io包及其子包)。tomcat7及以下版本默認以bio模式運行,由于每個請求都要創建一個線程來處理,線程開銷較大,不能處理高并發場景,在三種模式中性能最低。
NIO模式:是Java SE 1.4及后續版本提供的一種新的I/O 操作方式(即java.nio包及其子包)。是一個基于緩沖區、并能提供非阻塞I/O 操作的Java API,它擁有比傳統I/O (bio)更好的并發運行性能。 如使用NIO模式,需將server.xml內protocol值配置為如下值:
<Connector?port="8080"?protocol="org.apache.coyote.http11.Http11NioProtocol"connectionTimeout="20000"redirectPort="8443"?/>默認為:
<Connector?port="8080"?protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"?/>注:tomcat 8 以上版本默認使用NIO模式,無需修改。
APR模式:簡單理解,就是從操作系統級別解決異步IO問題,大幅度的提高服務器的處理和響應性能,也是tomcat運行高并發應用的首選模式。
下面介紹具體啟用APR方式。
啟用APR模式:
在官方下載tomat 7,并解壓到安裝路徑/usr/local/tomcat/,下載解壓過程略
ubuntu 依賴包:
APR?1.2+?development?headers?(libapr1-dev?package) OpenSSL?0.9.7+?development?headers?(libssl-dev?package) JNI?headers?from?Java?compatible?JDK?1.4+ GNU?development?environment?(gcc,?make)centos 依賴包:
gcc make openssl-devel??? apr-devel apr-util-devel安裝相關依賴:
apt-get?install?libapr1-dev?libssl-dev?gcc?make?openjdk-8-jdk?-y安裝APR動態庫:
apr相關源碼已包含在tomcat包內,bin目錄下tomcat-native.tar.gz文件
cd?/usr/local/tomcat/bin tar?zxf?tomcat-native.tar.gz cd?tomcat-native-1.2.10-src/native配置編譯APR:
./configure?--libdir=/usr/lib?\ --prefix=/usr/local/tomcat/?\ --with-apr=/usr/bin/apr-1-config?\ --with-java-home=/usr/lib/jvm/java-8-openjdk-amd64?\ --with-ssl=yes make?&&?make?install至此,如不啟用SSL,那tomcat已可以運行在APR模式了,若仍運行在BIO或NIO模式下,請修改server.xml配置文件,將protocol值配置為如下值
<Connector?protocol="org.apache.coyote.http11.Http11Protocol"port="8080"?.../>基于SSL的APR模式:
若要讓tomcat SSL運行在APR模式上,需要配置SSL證書,此證書可購買、申請/生成免費版本或自簽發。此文利用自簽發證書配置實驗。
簽發證書:
openssl?genrsa?-des3?-out?tomcat.key?1024 openssl?rsa?-in?tomcat.key?-out?tomcat_np.key openssl?req?-new?-key?tomcat_np.key?-out?tomcat.csr openssl?x509?-req?-days?365?-in?tomcat.csr?-signkey?tomcat_np.key?\ -out?tomcat.crt配置server.xml為如下值
<Connector?port="8443"?protocol="org.apache.coyote.http11.Http11AprProtocol"maxThreads="150"?SSLEnabled="true"?scheme="https"?secure="true"SSLCertificateFile="${catalina.base}/conf/tomcat.crt"SSLCertificateKeyFile="${catalina.base}/conf/tomcat_np.key"SSLVerifyClient="optional"?SSLProtocol="TLSv1+TLSv1.1+TLSv1.2" />至此,tomcat在SSL和非SSL下都是運行在APR模式上,但還有一個問題,就是現在tomcat是運行在root 用戶上的,下面介紹如何使tomcat 運行在非root 用戶下,即以daemon模式運行。
基于daemon運行tomcat:
tomcat 二進制包提供了daemon腳本,但是基于jsvc實現的,因此需要編譯commons-daemon-native.tar.gz包內容,生成jsvc執行文件
安裝jsvc
cd?/usr/local/tomcat tar?zxf?commons-daemon-native.tar.gz cd?commons-daemon-1.0.15-native-src/unix ./configure?--with-java=/usr/lib/jvm/java-8-openjdk-amd64/ makemake后便會在tomcat/bin下面生成jsvc文件
建立運行tomcat用戶
編輯daemon.sh配置如下值
test?".$TOMCAT_USER"?=?.?&&?TOMCAT_USER=tomcat #?Set?JAVA_HOME?to?working?JDK?or?JRE JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 #?If?not?set?we'll?try?to?guess?the?JAVA_HOME在daemon.sh腳本第二行添加
#?chkconfig:?-?80?20修改相關目錄權限
chown?-R?tomcat.tomcat?/usr/local/tomcat添加系統服務
ln?-s?/usr/local/tomcat/bin/daemon.sh?/etc/init.d/tomcat chkconfig?tomcat?on至此,SSL APR daemon三種需求均已實現
如若做對tomcat做多實例,尚需對daemon.sh腳本進行修改
驗證APR
tail?logs/catalina-daemon.out? 一月?05,?2017?5:31:37?下午?org.apache.coyote.AbstractProtocol?start 信息:?Starting?ProtocolHandler?["http-apr-8080"] 一月?05,?2017?5:31:37?下午?org.apache.coyote.AbstractProtocol?start 信息:?Starting?ProtocolHandler?["http-apr-8443"] 一月?05,?2017?5:31:37?下午?org.apache.coyote.AbstractProtocol?start 信息:?Starting?ProtocolHandler?["ajp-apr-8009"] 一月?05,?2017?5:31:37?下午?org.apache.catalina.startup.Catalina?start 信息:?Server?startup?in?852?ms? 驗證daemon
??
參考
http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html
http://blog.csdn.net/xyang81/article/details/51502766?????????????????????????????????????????????????????????????
轉載于:https://blog.51cto.com/morrowind/1889462
總結
以上是生活随笔為你收集整理的tomcat runing on daemon with apr and ssl mode的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入浅出UML类图(一)
- 下一篇: win10+VS2015+boost_1