lunes, enero 21, 2008

FreeBSD + Tomcat 5.5 + Apache SOAP

Mi tercera tarea consiste en implementar/migrar un servidor apache/soap + tomcat, para ser utilizado en producción, para ello cuento con un equipo DELL PowerEdge 1950 con FreeBSD, el primer paso es revisar la configuración general del tomcat ubicada en /usr/local/tomcat5.5/conf/server.xml, eliminar de ella lo que no vamos a utilizar, lo ideal es hacer una copia de esta configuración por defecto ya que contiene bastante información comentada y complica la revisión de la configuración final.

HTTP connector: Por defecto vienen dos de estos conectores definidos uno con SSL y otro sin, tambien es posible utilizar compresion gzip en ellos.

<Connector port="8080"
maxThreads="700" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
Connector sin SSL
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
Connector con SSL
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
Parámetros para habilitar compresión gzip

AJP Connector: Este connector se usa para comunicar tomcat con otro servidor web nativo, esta forma de conexion es mucho mas rapida y eficiente que un proxy http.

<Connector port="8009"
enableLookups="false" address="127.0.0.1" redirectPort="8443" protocol="AJP/1.3" />
Conexion AJP
<Connector port="8082"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" acceptCount="100" connectionTimeout="20000"
proxyPort="80" disableUploadTimeout="true" />
Conexion proxy http



LOGS: si estamos interesados en los logs de acceso y consultas al servidor debemos usar, en el caso de servidor de producción, org.apache.catalina.valves.FastCommonAccessLogValve

<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
Apache Portable Runtime (APR): Es una libreria altamente portable que Apache utiliza para mejorar su integración, escalabilidad y performance, nos permite acceso a funcionalidades propias del SO, y manejo de procesos (memoria compartida, Sockets, etc) entre otras cosas, para utilizar esta característica basta con compilar la libreria. Los sources están en $tomcar_dir/bin/tomcat-native.tar.gz, para poder realizar una compilación exitosa es necesario contar con APR 1.2+, OpenSSL 0.9.7+ (en el caso de utilizar connector HTTP-SSL), gcc y make en nuestro sistema.
En FreeBSD basta con instalar el port APR:

#cd /usr/ports/devel/apr/ && make install clean


luego de /usr/ports/distfiles copiar el archivo apr-x.x.x.tar.gz y descomprimirlo en algún lugar (ej /usr/local/tomcat5.5/apr) y luego descomprimir el archivo tomcat5.5/bin/tomcat-native.tar.gz. En su interior encontraremos la carpeta jni/native/ donde debemos ejecutar los comandos:

#export JAVA_HOME=/usr/local/diablo-jdk1.5.0/ <-
solo si no esta definido $JAVA_HOME previamente.
# sh buildconf --with-apr=(directorio donde previamente descomprimimos los sources de APR).
# ./configure --with-apr=/usr/bin/ --with-ssl=directorio de instalación de openssl (opcional)
# make

Con lo que se creara el archivo libtcnative-1.so en /usr/local/apr/lib, copiarlo a /usr/local/lib/ luego reiniciar Tomcat, tomcat detecta solo la presencia de la librería y comienza a usarla automáticamente, las configuraciones por defecto de esta librería suelen ser suficientes, pero de querer cambiar las opciones ver http://tomcat.apache.org/tomcat-5.5-doc/apr.html

Con esto el servidor debiera quedar en condiciones de producción, en el siguiente post me referire a algunas configuraciones particulares de las aplicaciones sobre tomcat (web.xml)

No hay comentarios: