VirtualHost en tomcat

Supongo que alguna vez os habrá pasado. Queremos darle un dominio web a una aplicación, para que sea acceda a ella directamente sin tener que poner nada detrás, como por ejemplo que app.uva.es vaya a servidor.uva.es/app que es la ruta donde está desplegada la aplicación.

Pues es muy sencillo, en la configuración del tomcat, en server.xml definimos un nuevo host con el contextpath apuntando a la ruta donde está la aplicación, y si queremso que tenga un alias también s elo ponemos. Tenéis un ejemplo a continuación:

<Host name="app.uva.es" appBase="">
<Context path="/" docBase="/servicio/webapps/app" />
<Alias>app2.uva.es</Alias>
</Host>

Y con esto de manera sencilla lo tenemos resuelto.

Atributos extendidos en Mac OS: com.apple.quarantine

Hoy trabajando con WordPress-MU al copiar algunos archivos me apareció una cosa curiosa en la cabecera de la página en el Safari, algo como «Mac OS X ? 2?°??â??ATTR??“5?â˜&?˜&?com.apple.quarantine0000;4b8e31e2;Safari;|com.apple.Safar» y te quedas un poco perplejo… así que me fui raudo y veoz a la linea de comandos del terminal (uno es de la vieja escuela y le encanta en cuanto puede irse a los comandos). Con un ls -l no vi nada, pero con un ls -la encontré algo que no había visto, una «@» así que tuve que investigar.

-rw-r--r--@ 1 davidrod staff 1665458 13 ene 2009 navidad.jpg

No tardé mucho en encontrar el tema en San Google patrón de los problemas y sus soluciones. Resulta que Mac OS X desde el Leopard al menos tiene unos atributos extendidos para los ficheros, por ejemplo para usar con el Time Machine o en Cuarentena para archivos descargados de internet. Éste último era mi caso. La solución es usar el comando «xattr».

Con xattr -l fichero vemos el parámetro que tiene el fichero, en mi caso «com.apple.quarantine», y con xattr -d com.apple.quarantine fichero podemos eliminarlo. No es muy complicado hacer un scriptillo que nos lo quite de todos los ficheros de un directorio como «find . | while read file; do xattr -d com.apple.quarantine $file; done».

Awstats en tomcat

Supongo que conoceréis el sistema de estadísticas Awstats. Para mi es uno de los más sencillos y mejores que hay, aunque nunca lo utilizo en tiempo real, sino que genero las estadísticas por la noche tras hacer el rotado de los logs y de manera estática para no sobrecargar al servidor.

Normalmente las usamos con el servidor HTTP de apache, pero en este caso os voy a explicar cómo hacerlo sobre el servidor de Servlets Apache Tomcat.

Después de tener descargado el awstats y asegurarnos que tenemos correctamente instalado el tomcat y perl en nuestro servidor empezaremos por configurar los logs del tomcat para que nos dejen un log de los accesos a nuestro servidor. Para ello debemos encontrar en el directorio de instalación del Tomcat, en el subdirectorio conf el fichero server.xml y al final del mismo encontraremos comentado lo siguiente:

<!--
<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
directory="logs"  prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
-->

Simplemente tendremos que descomentar este código y cambiar «common» por «combined» que nos dará una mayor información para luego realizar el procesamiento de los logs, quedando de la siguiente forma:

<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="combined" resolveHosts="false"/>

Ahora pasamos a configurar el awstats. Podemos usar la utilidad «awstats_configure.pl» que nos irá preguntando los datos de los directorios y configuración de nuestro servidor, o directamente crear un fichero de configuración copiando el modelo que viene y cambiando los siguientes parámetros:

LogFile="[Directorio Tomcat]\logs\localhost_access_log.%YYYY-24-%MM-24-%DD-24.txt"
LogType=W
LogFormat=1
LogSeparator=" "
SiteDomain="127.0.0.1" [O el nombre DNS como www.ejemplo.es]
HostAliases="127.0.0.1 localhost www.ejemplo.es"

DirData=»[Directorio donde queremos que deje los ficheros de datos del awstats]»
AllowToUpdateStatsFromBrowser=0

A continuación debemos preparar el sistema para que ejecute el programa awstats cada día con el fin de que procese el fichero de logs de acceso y genere las estadísticas. En un equipo linux podemos usar el crontab o en windows el Task Scheduler por ejemplo. En el caso de linux tendríamos un script que generase las estadísticas en páginas html estáticas en el directorio [Directorio de los informes] como el siguiente:

perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -update -showdropped -showcorrupted
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output -staticlinks > [Directorio de los informes]/index.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=alldomains -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].alldomains.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=allhosts -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].allhosts.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=lasthosts -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].lasthosts.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=unknownip -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].unknownip.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=alllogins -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].alllogins.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=lastlogins -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].lastlogins.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=allrobots -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].allrobots.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=lastrobots -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].lastrobots.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=urldetail -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].urldetail.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=urlentry -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].urlentry.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=urlexit -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].urlexit.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=browserdetail -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].browserdetail.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=osdetail -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].osdetail.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=unknownbrowser -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].unknownbrowser.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=unknownos -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].unknownos.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=refererse -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].refererse.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=refererpages -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].refererpages.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=keyphrases -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].keyphrases.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=keywords -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].keywords.html
perl [Directorio instalación awstats]/wwwroot/cgi-bin/awstats.pl -config=[Dominio www.ejemplo.es] -output=errors404 -staticlinks > [Directorio de los informes]/awstats.[Dominio www.ejemplo.es].errors404.html

Si además queremos que esté visible en la web tendremos que generar estos informes dentro de una carpeta accesible desde el tomcat y copiar la carpeta «icon» que está tentro del directorio «[Directorio del awstast]/wwwroot» a la carpeta «[Directorio instalación Tomcat]/webapps/ROOT» y renombrar «icon» a «awstatsicons».

Espero que os sirva como a mi.