Después de algunos meses usando servicios de estadísticas Web de estos que dan "gratis" agunas empresas privadas, me he decidido a instalar mi propio sistema de estadísticas para las diferentes páginas que se sirven desde mi Apache. De las varias alternativas (evidentemente en software libre) que existen probé awstats y Webalizer, ambas son potentes y no muy difíciles de configurar, pero me gustó más awstats, así que a continuación explico cómo lo configuré todo para obtener estadísticas de varios de mis VirtualHosts.
Índice:
00. Introducción e Instalación en Debian.
01. Configuración de Apache.
02. Configuración de awstats.
03. cron.
04. Viendo las estadísticas.
00. Introducción e Instalación en Debian.
awstats básicamente se basa en los siguientes pasos:- lectura de unos ficheros de entrada (en este caso serán los ficheros access.log de Apache2), para ello es necesario que Apache los genere.
- A partir de los ficheros de entreda awstats genera sus propios ficheros con las estadísticas. Esta generación la haremos de forma periódica con un cron.
- Cuando se hace una llamada para que nos muestre en un Navegador las estadísticas, awstats lee los fichero del punto anterior y nos muestra los resultados en un HTML estático.
La instalción en Debian es:
apt-get install awstats
(Yo uso Debian stable, y como no he probado la instalación para otros sistemas no voy a poner instrucciones, si alguien quiere aportar otros modos de instalción para otros Sistemas que no dude en enviar un comentario ;-) ).
01. Configuración de Apache.
Para tener estadísticas de varios VirtualHosts lo más conveniente es tener varios access.log de Apache, estos ficheros serán el "input" de datos de awstats.
Para tener varios ficheros access.log sólo es necesario añadir los CustomLog que necesitemos a cada VirtualHost, por ejemplo en mi caso:
|
En
/etc/apache2/conf.d/drupal.conf:
<VirtualHost *> DocumentRoot /usr/share/drupal/
ServerName www.nosotrosmismos.org
ServerAlias nosotrosmismos.org
CustomLog /var/log/www.nosotrosmismos.org/access.log combined
</VirtualHost>
<VirtualHost *> DocumentRoot /usr/share/drupal/
ServerName www.libresoftware.com
ServerAlias nosotrosmismos.org
CustomLog /var/log/www.libresoftware.com/access.log combined
</VirtualHost>
|
Y para poder acceder a las estadísticas hay que añadir lo siguiente:
|
En
/etc/apache2/conf.d/awstats.conf:
<Directory /var/lib/awstats> Options None AllowOverride None Order allow,deny Allow from all </Directory> # This provides worldwide access to everything below the directory # Security concerns: none known <Directory /usr/share/awstats/icon> Options None AllowOverride None Order allow,deny Allow from all </Directory> # This provides worldwide access to everything in the directory # Security concerns: none known Alias /awstats-icon/ /usr/share/awstats/icon/ # This (hopefully) enables _all_ CGI scripts in the default directory # Security concerns: Are you sure _all_ CGI scripts are safe? ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ |
02. Configuración de awstats.
Necesitaremos varios ficheros de configuración de awstats donde indicaremos para cada VirtualHost cuál es el fichero access.log que debe de leer (entre otras muchas opciones las cuales he dejado casi todas con lo que había por defecto).Los ficheros que he generado han sido:
/etc/awstats/awstats.www.nosotrosmismos.org.conf
/etc/awstats/awstats.www.libresoftware.com.conf
Y lo único que he tenido que indicar ha sido:
| /etc/awstats/awstats.www.nosotrosmismos.org.conf: ... LogFile="/var/log/www.nosotrosmismos.org/access.log" SiteDomain="www.nosotrosmismos.org" ... /etc/awstats/awstats.www.libresoftware.com.conf ... LogFile="/var/log/www.libresoftware.com/access.log" SiteDomain="www.libresoftware.com" ... |
El parámetro LogFile es para indicar el fichero de entrada.
03. cron
Con el paso anterior ya le hemos dicho a awstats de dónde obtendrá los datos de entrada, ahora hay que decirle a awstats cada cuánto debe leer estos datos y generar sus propias estadisticas.El modo más cómodo para esto es con cron, le diremos que cada 10 minutos lea los ficheros access y genere las estadísticas de acceso oportunas.
| /etc/conr.d/awstats 0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.www.nosotrosmismos.org.conf -a -r /var/log/www.nosotrosmismos.org/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=www.nosotrosmismos.org -update >/dev/n ull 0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.www.libresoftware.com.conf -a - r /var/log/www.libresoftware.com/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=www.libresoftware.com -update >/dev/null |
OJO: es muy importante que tengamos en cuenta que el usuario www-data debe tener permisos de acceso a los ficheros de access.log
El parámetro "-config" sirve para indicar a awstats cuál es el fichero .conf que debe de usar de /etc/awstats, lo compondrá del siguiente modo:
si tenemos "-config=www.nosotrosmismos.org " usará el fichero: /etc/awstats/awstats.[www.nosotrosmismos.org].conf, y lo mismo para www.libresoftware.com.
04. Viendo las estadísticas.
Para ver las estadísticas sólo será necesario llamar a awstats e indicarle con "config" cuál es el dominio que queremos ver, por ejemplo para mi caso:
http://laika/cgi-bin/awstats.pl?config=www.nosotrosmismos.org
http://laika/cgi-bin/awstats.pl?config=www.libresoftware.com


Comments
Security concerns:
para /etc/apache2/conf.d/awstats.conf (ver /usr/share/doc/awstats/examples/apache.conf):
# This provides worldwide access to everything below the directory
# Security concerns:
# * Raw log processing data is accessible too for everyone
# * The directory is by default writable by the httpd daemon, so if
# any PHP, CGI or other script can be tricked into copying or
# symlinking stuff here, you have a looking glass into your server,
# and if stuff can be uploaded to here, you have a public warez site!
Options None
AllowOverride None
Order allow,deny
Allow from all
Security concerns
en el ejemplo que viene con el paquete (/usr/share/doc/awstats/examples/apache.conf) avisan:
# Security concerns:
# * Raw log processing data is accessible too for everyone
# * The directory is by default writable by the httpd daemon, so if
# any PHP, CGI or other script can be tricked into copying or
# symlinking stuff here, you have a looking glass into your server,
# and if stuff can be uploaded to here, you have a public warez site!
para el fichero de configuración /etc/apache2/conf.d/awstats.conf
Como hacer que www-data tenga acceso a los logs
Como sólo lo comentabas, me permito indicar cómo se hace (en Debian Sarge):
Enviar un comentario nuevo