viernes, noviembre 21, 2014

CentOS: instalando Apache Portable Runtime (APR) para Tomcat en Pentaho



En Tomcat, conector HTTP es BIO (Blocking I/O) con estabilidad, pero baja concurrenciao. Para aumentar el rendimiento de Tomcat, las formas alternativas o bien adaptar NIO (sin bloqueo de E / S - Non-Blocking I/O) o con el conector APR (Apache Portable Runtime). Sobre todo, el rendimiento de APR es en general mejor que otros al utilizar el protocolo SSL. Para más detalles sobre el rendimiento entre estos conectores puede hacer referencia a la comparación de Mike Noordermeer.

Prerequisiteo para instalar APR.

  • Libreria APR
  • Libreria APR-util
  • Libreria OpenSSL
Para empezar nuestra instalación, se requiere instalar el OpenSSL, porque teniamos instalado CentOS 6.3 con soporte de instalación mínimo:

# yum install openssl-devel

Se debe ejecutar el comando configure o make en los siguientes pasos, primero se debe instalar las herramientas relacionadas, las mismas que se instalan con el siguiente comando:

# yum groupinstall "Development Tools"

Descargar y Instalar APR

# wget http://ftp.mirror.tw/pub/apache/apr/apr-1.4.8.tar.gz
# tar -zxvf apr-1.4.8.tar.gz
# cd apr-1.4.8
# ./configure
# make
# make install
 
El directorio por omisión de la instalación es: /usr/local/apr

Dedscargar e Instalar APR-util

# wget http://ftp.mirror.tw/pub/apache/apr/apr-util-1.5.2.tar.gz
# tar -zxvf apr-util-1.5.2.tar.gz
# cd apr-util-1.5.2
# ./configure --with-apr=/usr/local/apr
# make
# make install
 
El directorio por omisión de la instalación es: /usr/local/apr/lib

Instalar JNI Wrapper para APR usado por Tomcat (libtcnative)

# cd $CATALINA_HOME/bin
# tar -zxvf tomcat-native.tar.gz
# cd tomcat-native-1.1.27-src/jni/native
# ./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.7.0_25
# make
# make install
 
Las librerias native son instaladas en: /usr/local/apr/lib

Integrar APR con Tomcat

Los dos caminos se puede integrar APR con TOMCAT. Primero se puede adionar el siguiente parametro para que se ejecute cunado inicie el TOMCAT modificar el siguiente archivo:  bin/catalina.sh:

Incluyendo la siguiente sentencia:

CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
 
Segunda forma es adicionando una variable de ambiente llamada LD_LIBRARY_PATH en el archivo que genera las variables de ambiente:  /etc/profile:

Incluir la siguiente linea.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
 
Para que tenga efecto ejecutar lo siguiente:

# source /etc/profile 
 
Despues de reiniciar el servicio de Tomcat, se debe revisar el archivo de logs de mensajes llamado  catalina.out log revisar si el APR ha sido correctamente instalado.

Sep 06, 2013 2:10:09 AM org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.27 using APR version 1.4.8.
Sep 06, 2013 2:10:09 AM org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

Tomcat SSLEngine Error

SEVERE: Failed to initialize the SSLEngine.
org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform
    at org.apache.tomcat.jni.SSL.initialize(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.catalina.core.AprLifecycleListener.initializeSSL(AprLifecycleListener.java:259)
    at org.apache.catalina.core.AprLifecycleListener.lifecycleEvent(AprLifecycleListener.java:110)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:640)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:665)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
 
Si desplega este mensaje de error su siio esta sin soporte de SSL, se puede corregir este error inicializando en apahgado dentro del siguiente archivo: conf/server.xml.

Modifique o inserte con el siguiente contenido:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
 

No hay comentarios: