Configurando awstats para varios VirtualHosts de Apache

Manel's picture
Configurando awstats para varios VirtualHosts

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

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Anónimo's picture

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

Anónimo's picture

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

Anónimo's picture

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):

  • editar /etc/logrotate.d/apache2
  • cambiar create 640 por create 644
  • Opciones de visualización de comentarios

    Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

    Enviar un comentario nuevo

    Security question, designed to stop automated spam bots
    El contenido de este campo se mantiene como privado y no se muestra públicamente.
    • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
    • Saltos automáticos de líneas y de párrafos.

    Más información sobre opciones de formato