Algo importante cuando tenemos una Web es conocer los datos de quienes nos visitan. El tipo de datos que quizás necesitemos dependerá del número de visitas que recibamos habitualmente. En una página con pocas visitas podemos dedicar tiempo a conocer detalles minúsculos de cada una de ellas: las páginas que visitaron, el tiempo dedicado a leer cada una, la IP, navegador, sistema operativo y otras opciones técnicas de los visitantes, lugar de procedencia de cada uno, etc. etc.
Pero si tenemos miles de visitas diarias no tendremos tiempo para analizar esa cantidad de datos de manera tan minuciosa. Es en ese caso cuando necesitamos un programa de estadísticas que nos ofrezca información relevante pero en niveles muy generales. Por ejemplo, total de visitantes y visitantes distintos, total de páginas servidas, tráfico de datos, segmentación de las visitas por franjas de tiempo, por origen o por páginas visitadas, procedencia de los visitantes, buscadores que nos indexan, palabras claves usadas por los visitantes procedentes de buscadores, etc.
Tras probar diferentes programas para gestionar estos datos, hace años que decidí quedarme con un en concreto: AWStats.
Hoy mismo lo he instalado en un nuevo servidor dedicado que he “añadido a la flota”. Como es habitual, el servidor usa Linux, concretamente Debian, y seguidamente voy a explicar los pasos que he dado para ponerlo en funcionamiento.
En primer lugar tenemos que conseguir el software. Debian lo incluye dentro de sus repositorios de paquetes, por lo que con un simple “aptitude install awstats” lo tendríamos instalado. Pero la versión que viene con Debian Etch es la 6.5, mientras que en la Web de Awstats tenemos la 6.7 y una beta de la 7. Por otra parte la versión de Debian tiene un pequeño bug que hace que al final haya que configurarla “a pelo”, así que nos decidimos por la oficial.
Bien, pues dicho y hecho. Se supone que ya estamos conectados al servidor mediante ssh. Nos vamos al directorio opt con
cd /opt
y desde allí descargamos el paquete con
wget http://surfnet.dl.sourceforge.net/sourceforge/awstats/awstats-6.7.tar.gz
(la dirección indicada es un mirror con la versión 6.7. Lo mejor es ir a la página http://awstats.sourceforge.net y escoger desde allí la versión más reciente y el mejor mirror según nuestra localización.)
Seguidamente lo descomprimimos:
tar zxf awstats-6.7.tar.gz
Tendremos un directorio llamado awstats-6.7 que renombraremos a awstats a secas:
mv awstats-6.7 awstats
Ahora tenemos que conseguir que Apache permita ejecutar archivos perl en el directorio donde se encuentra el programa principal de Awstats. Para esto tenemos que modificar la configuración de Apache. Aviso de que en mi caso he creado un sitio virtual al que solo se puede acceder mediante SSL, y es ahí y solo ahí donde voy a permitir la ejecución de Awstats. Además protegeré el programa mediante usuario y contraseña.
Evidentemente se puede hacer de forma que Awstats sea accesible desde otros sitios o todos los sitios con o sin SSL. En ese caso habría que añadir el código que pongo más abajo en /etc/apache2/apache2.conf Yo he preferido hacerlo disponible en un solo sitio, autenticado y mediante SSL porque lo considero más seguro.
En /etc/apache2/sites-available/default-ssl añadir al final (repito que default-ssl es un sitio que he creado yo, si no lo tienes, tendrás que crearlo:
ScriptAlias /awstats/ /opt/awstats/wwwroot/cgi-bin/
<Directory “/opt/awstats/wwwroot/cgi-bin”>
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
Con ésto permitimos la ejecución del programa en el servidor Apache. Pero necesitamos crear unos “alias” para algunos directorios de Awstats, de lo contrario, entre otras cosas, no cargarían las imágenes. También en /etc/apache2/sites-available/default-ssl tras el código anterior, pegamos éste:
Alias /classes “/opt/awstats/wwwroot/classes/”
Alias /css “/opt/awstats/wwwroot/css/”
Alias /icon “/opt/awstats/wwwroot/icon/”
Alias /js “/opt/awstats/wwwroot/js/”
<Directory “/opt/awstats/wwwroot”>
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Y, finalmente, es ese mismo archivo, si queremos proteger Awstats con usuario y contraseña, pegamos tras lo anterior:
<Files “awstats.pl”>
AuthUserFile /opt/awstats/.htpasswd
#AuthGroupFile /path/to/.group
AuthName “AWStats”
AuthType Basic
require valid-user
</Files>
Lo guardamos y refrescamos la configuración de Apache:
/etc/init.d/apache2 reload
Bien, ahora necesitamos crear un directorio donde Awstats guarde las estadísticas:
mkdir /opt/awstats/data
Y, por supuesto, crearemos un usuario para poder acceder mediante Web a Awstats:
htpasswd -bcm /opt/awstats/.htpasswd “usuario” “contraseña”
Por ahora todo perfecto. Seguidamente tenemos que crear un archivo de configuración para cada sitio Web del que deseemos conseguir estadísticas. Creamos un directorio donde se guardarán estas configuraciones:
mkdir /etc/awstats
Y copiamos allí el archivo de muestra de configuración que viene con Awstats:
cp -p /opt/awstats/wwwroot/cgi-bin/awstats.model.conf /etc/awstats/
Este archivo hay que editarlo y configurarlo correctamente. En la directiva LogFile pondremos
LogFile=”/var/log/apache2/access.log”
En SiteDomain pondremos el dominio principal de nuestro sitio
SiteDomain=”www.pacosanchez.com”
En HostAliase volvemos a poner nuestro dominio, por ejemplo, con y sin “www” y cualquier otro subdominio que utilicemos con ese dominio.
HostAliases=”www.pacosanchez.com pacosanchez.com REGEX[^.*\.pacosanchez\.com$]“
En DirData indicamos el directorio de datos que hemos creado anteriormente:
DirData=”/opt/awstats/data”
El resto de las opciones se pueden dejar por defecto o las podemos personalizar leyendo en la documentación para qué sirve cada una. Por cada Web de la que deseemos obtener estadísticas por separado, tenemos que crear un archivo de configuración.
Ya solo nos falta ejecutar el script para actualizar las estadísticas:
perl /opt/awstats/wwwroot/cgi-bin/awstats.pl -config=pacosanchez.com -update
Si queremos que esto se haga de forma automática, digamos, cada hora, podemos crear un archivo con el siguiente contenido y ponerlo en el directorio /etc/cron.hourly/
#!/bin/bash
if [ -f /var/log/apache2/access.log ] ; then
exec /opt/awstats/tools/awstats_updateall.pl now -confdir=”/etc” -awstatsprog=”/opt/awstats/wwwroot/cgi-bin/awstats.pl” >/dev/null
fi
exit 0
Para que la ejecución de scripts perl sea más segura, vamos a crear un usuario llamado awstats cuyo directorio sea /opt/awststs:
[root@servidor ~]# useradd -d /opt/awstats awstats
Ahora entramos como usuario awstats:
[root@servidor ~]# su - awstats
Editamos el crontab del usuario awstats con nano:
[awstats@servidor ~]# EDITOR=nano crontab -e
Y añadimos lo siguiente en una sola línea para que awstats actualice las estadísticas cada hora en punto:
0 * * * * /opt/awstats/tools/awstats_updateall.pl now -confdir=”/etc” -awstatsprog=”/opt/awstats/wwwroot/cgi-bin/awstats.pl” >/dev/null
A partir de ahora podremos consultar las completas estadísitcas que nos ofrece este programa desde la dirección https://www.dominio.com/awstats/awstats.pl?config=pacosanchez.com
Lo que sigue tras “awstats.pl?config=” será el nombre del dominio del cual queremos consultar las estadísticas, y tiene que coincidir exactamente con el nombre que le hemos dado a su archivo de configuración en /etc/awstats quitándole awstats y conf. Por ejemplo, para el dominio debian.org el archivo de configuración se llamaría awstats.debian.org.conf y lo llamaríamos desde “…awstats.pl?config=debian.org”
Mas adelante haremos algunos cambios que ampliarán la información mostrada por Awstats, pero eso será en otra ocasión.
Te escribo también desde Sevilla, y quería darte las gracias por el manual porque la verdad que me ha ahorrado mucho tiempo.
un saludo!