sexta-feira, 5 de fevereiro de 2010

Webalizer com virtual hosts

Por necessidade de utilizar o Webalizer com virtual hosts no Apache 2.2, recorri à documentação oficial, que dá algumas pistas, bem como a alguns tutoriais [0][1].

No caso de Debian, costumo separar os vhosts no Apache em directórios do tipo /var/www/vhosts/host. A instalação do Webalizer através do respectivo pacote Debian (# aptitude install webalizer) cria, por omissão, a configuração em /etc/webalizer/webalizer.conf. Queremos naturalmente fazer distinção de configurações por vhost.

Se considerarmos dois vhosts (host1 e host2), temos então:
  • Os directórios /var/www/vhosts/host1 e /var/www/vhosts/host2
  • As configurações /etc/webalizer/host1.conf e /etc/webalizer/host2.conf
  • Os logs do Apache correspondentes, /var/www/vhosts/host1/access_log e /var/www/vhosts/host2/access_log

Vamos copiar agora a configuração do Webalizer para os dois vhosts:
# for vhost in host1 host2; do cp /etc/webalizer/webalizer.conf /etc/webalizer/${vhost}.conf; done.

Precisamos também de criar os directórios para servir no Apache:
# for vhost in host1 host2; do mkdir /var/www/vhosts/${vhost}/webalizer; done.

Vamos agora alterar as configurações no essencial:

/etc/webalizer/host1.conf

LogFile /var/www/vhosts/host1/access_log
OutputDir /var/www/vhosts/host1/webalizer
HostName host1


/etc/webalizer/host2.conf

LogFile /var/www/vhosts/host2/access_log
OutputDir /var/www/vhosts/host2/webalizer
HostName host2


Finalmente, automatizamos a actualização da página web através do cron, a ocorrer aos 15 minutos de cada hora (suficiente no meu caso):

# crontab -e
15 * * * * (for vhost in /etc/webalizer/*.conf; do /usr/bin/webalizer -c ${vhost}; done)

[0] http://magazine.redhat.com/2007/09/24/tips-and-tricks-how-can-i-use-webalizer-to-process-the-logs-of-multiple-virtual-hosts/
[1] http://www.besy.co.uk/debian/how_to_setup_webalizer_for_multiple_websites

2 comentários:

  1. Olá!
    Parece-me uma boa sugestão. Apenas faria uma ligeira alteração à linha na cron:
    15 * * * * (for vhost in /etc/webalizer/*.conf; do /usr/bin/webalizer -c ${vhost})

    Criando novos VHosts e respectivas configurações no webalizer, não é necessário preocupar-nos com actualizações na cron. :)

    Abraços,

    Manuel

    ResponderEliminar
  2. Manuel, excelente sugestão!

    Já alterei a linha no crontab.
    Obrigado.

    ResponderEliminar