Contenidos del Post
AWstats es un analizador de logs que muestra la actividad de un sitio web en forma de gráficos. Es ideal para llevar la cuenta de las visitas que tienes, de qué páginas son las más vistas, etc.
En este artículo vamos a enseñarte cómo instalar AWstats en Ubuntu 16.
Lo primero es acceder al servidor en el que vas a instalar AWstats.
1.- Intalación
Tras acceder al servidor (si lo vas a instalar en local omite el paso anterior), descarga los paquetes necesarios.
apt-get update
apt-get install awstats libgeo-ipfree-perl libnet-ip-perl -y
2.- Configuración de AWstats
Primero copia la plantilla cp /etc/awstats/awstats.conf /etc/awstats/$DOMINIO.conf
La variable $DOMINIO es el nombre de tu dominio junto a la extensión. En nuestro ejemplo hemos utilizado example.com, por lo que el fichero se llama awstats.example.com.conf.
Después edita el nuevo fichero para adaptarlo a la configuración de tu servidor.
Las directivas que debes editar son:
LogFile="$RUTA"
Ruta al log del que se van a sacar los datos. Se puede utilizar una wildcard para sacar los datos de varios logs ('*'). Por defecto es /var/log/apache2/access.log.
LogType=W
Leer el tipo de log. El tipo 'W' corresponde al log de una web.
LogFormat=1
Formato en el que se va a leer el log. El formato '1' es el que más datos y funcionalidades aporta.
SiteDomain="$DOMINIO"
Nombre del dominio.
HostAliases="localhost 127.0.0.1 $DOMINIO www.$DOMINIO"
Los distintos alias del dominio.
AllowFullYearView=3
Permite obtener un registro con los datos del último año.
LoadPlugin="tooltips"
LoadPlugin="graphgooglechartapi"
LoadPlugin="geoipfree"
Plugins necesarios para que AWstats funcione correctamente
Cuando hayas terminado, copia el nuevo fichero y genera otro fichero con 'www' antes del dominio: cp /etc/awstats/awstats.$DOMINIO.conf /etc/awstats/awstats.www.$DOMINIO.conf. Esto se debe a que AWstats distingue $DOMINIO de www.$DOMINIO.
3.- Programar cron
Si echas un vistazo al fichero /etc/cron.d/awstats verás que ya se ha creado un cron automáticamente. Como no te interesa que se creen bases de datos vacías, elimina la base de datos vacía.
Ejecuta los siguientes comandos para mover el fichero con el cron (comando 1), eliminar cualquier base de datos que se haya creado hasta el momento (2), ejecutar una actualización de la base de datos (3) y volver a poner el cron en su sitio (4).
mv /etc/cron.d/awstats /root
rm /var/lib/awstats/*
/usr/lib/cgi-bin/awstats.pl -config=www.$DOMINIO -update
mv /root/awstats /etc/cron.d
Al ejecutar el tercer comando, verás algo similar a esto:
Y ahora vamos a configurar el cron que actualizará la base de datos cada X tiempo. Nosotros recomendamos cada 10 minutos.
Para crear el cron, puedes ejecutar sudo -u root crontab -e o editar el fichero /var/spool/cron/crontabs/root.
Independientemente del método que utilices, introduce al principio del todo el código SHELL=/bin/bash, y después introduce el siguiente cron para actualizar la base de datos cada 10 minutos: */10 * * * * /usr/lib/cgi-bin/awstats.pl -config=www.$DOMINIO -update > /dev/null. Debes poner este cron por cada dominio en el que quieras instalar AWstats.
4.- Configuración de apache
Ahora procede a configurar apache para poder acceder a la página de AWstats.
Copia y pega este fragmento de código en el fichero /etc/apache2/apache2.conf:
Alias /awstatsclasses "/usr/share/awstats/lib/"
Alias /awstats-icon/ "/usr/share/awstats/icon/"
Alias /awstatscss "/usr/share/doc/awstats/examples/css"
ScriptAlias /statistics/ /usr/lib/cgi-bin/
Redirect /awstats /statistics/awstats.pl
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Con el fragmento anterior, lo que conseguimos es que al poner en el navegador www.$DOMINIO/awstats se nos redirige a la página de AWstats de ese dominio.
No olvides reiniciar apache tras los cambios.
5.- Proteger el acceso con usuario y contraseña
Si quieres evitar que cualquiera pueda acceder a tu AWstats, puedes proteger filtrando la IP (permitir a unos pocos o denegar a muchos) o protegiendo el acceso con un login.
Para filtrar por IP, puedes introducir el siguiente código en el fichero /etc/apache2/apache2.conf.
<Directory /usr/lib/cgi-bin/>
Order Deny,Allow
Deny from all
Allow from $IP
</Directory>
La variable $IP es la IP a la que quieres dar acceso. También puedes permitir (o denegar) un rango, haciendo que $IP sea algo como "89.185.41.0/16". Si has seguido este método, reinicia apache al hacer los cambios.
Ya explicamos en el artículo Protege el directorio wp-admin de tu web en WordPress, así que no vamos a entrar en demasiados detalles. En el fichero /etc/apache2/apache2.conf introduce el siguiente fragmento de código.
<FilesMatch awstats.pl>
AuthName "Enter Your User Name and Password"
AuthType Basic
AuthUserFile /etc/apache2/.awstats
Require valid-user
</FilesMatch>
Tras ésto, crea los usuarios (virtuales, no necesitan ser usuarios del sistema) con sus contraseñas. Para ello, introduce los siguientes comandos:
touch $RUTA
htpasswd -b $RUTA $USUARIO $CONTRASEÑA
Lo que hace este código es generar un fichero en el que se guardan los nombres de los usuarios virtuales junto a su contraseña cifrada.
La variable $RUTA es la ruta donde se guarda el fichero, $USUARIO y $CONTRASEÑA son el nombre del usuario y su contraseña, respectivamente. Puedes crear tantos usuarios como quieras.
Cuando termines, reinicia apache2 y trata de acceder a la página de AWstats. Te aparecerá un pop up solicitando que te autentiques para poder acceder a la página.
Una vez introduzcas las credenciales, llegarás a la página de awstats.
Y con ésto ya tienes AWstats instalado en tu dominio. Si quieres instalar AWstats en otro dominio, deberás repetir el paso 2, y añadir un cron para el dominio, que puedes ver en el paso 3.