Mostrando entradas con la etiqueta Tomcat. Mostrar todas las entradas
Mostrando entradas con la etiqueta Tomcat. Mostrar todas las entradas

viernes, enero 25, 2008

FreeBSD + Tomcat 5.5 + Apache SOAP (2da parte)

Configuraciones particulares (web.xml):

Listado de directorios:

Para habilitar el listado en algun directorio de nuestras webapps, es necesario modificar el archivo $tomcat_dir/webapps/$nombre_webapp/WEB-INF/web.xml
<servlet>
<servletname>NOMBRE_CUALQUIERA</servletname>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
...
<servlet-mapping>
<servlet-name>MISMO_NOMBRE_QUE_ARRIBA</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Ojo que url-pattern es respecto a la url de nuestra webapp.

Proteccion de directorios con contraseña:

Ojo que .htaccess no va a funcionar en este caso, es necesario editar el archivo web.xml para realizar esta accion.
<resource-env-ref>
<description>Link a la base de datos de usuarios</description>
<resource-env-ref-name>UserDatabase</resource-env-ref-name>
<resource-env-ref-type>org.apache.catalina.UserDatabase</resource-env-ref-type>
</resource-env-ref>
Con esto definiremos que la informacion de user/pass la obtendremos de un archivo
llamado tomcat-users.xml ubicado en $tomcat_dir/conf/ (ver server.xml <resource name ="UserDatabase" ), podemos cambiar esta configuracion en server.xml para tomar los user/pass de una base de datos accedida por JDBC.
<security-constraint>
<web-resource-collection>
<web-resource-name>CUALQUIER_NOMBRE</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>NOMBRE_DEL_ROL</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>NOMBRE_CUALQUIERA</realm-name>
</login-config>
<security-role>
<description>DESCRIPCION</description>
<role-name>NOMBRE_DEL_ROL</role-name>
</security-role>

Por ultimo el método de autentificación existen 4: BASIC el que todos conocemos cuando se abre una ventanita y te pregunta la clave, CLIENT-CERT que es con certificado X509, FORM para utilizar un formulario jsp y DIGEST que que es una forma de encriptación.
El nombre del rol lo debemos tener definido en tomcat-users.xml y el nuevamente el url-pattern es realtivo a la webapp de la cual estamos editando el web.xml.
Ejemplo de tomcat-users.xml:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>

Instalar Driver Oracle:

Descargar Driver jdbc (ojdbc14.jar) de oracle ojo con la versión de la DB y la versión del jdk
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
Copiar ojdbc14.jar a $tomcat_dir/common/lib/

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)