quarta-feira, 28 de janeiro de 2009

Limpando o cache do Squid

Quando o Squid NÃO reinicia depois de limpar os diretórios de cache.

Limpando os diretórios de cache do Squid.

Quando vamos configurar o squid.conf, existem duas TAGs que fazem menção ao usuário e grupo do daemon dos processos do squid:


  • cache_effective_user
  • cache_effective_group

Existe também, uma TAG que irá apontar para os diretórios de cache:
  • cache_dir

Quando iniciamos o Squid pela primeira vez, ele cria os diretórios de cache no caminho: DIRETORIO/squid/SUB_DIRETORIOS (normalmente /var/cache/squid/* - onde * é igual a vários diretórios numerados) e atribui como dono e grupo destes diretórios, o nome mencionado naquelas TAGs do squid.conf.

Para facilitar a compreensão, vamos admitir que o caminho para o cache seja configurado assim no squid.conf:

cache_dir ufs 100 16 256

Nesta situação nossa árvore de diretórios ficaria:

/var/cache/log/squid/*

Onde o asterisco substitui uma seqüência de diretórios numerados.

Vamos admitir também que o usuário/dono do daemon do Squid seja proxyadm, então teríamos no squid.conf:

cache_effective_user proxyadm
cache_effective_group proxyadm

Um erro muito comum e que com freqüência ocorre; é quando o administrador (como root) vai limpar os diretórios de cache, ele aplica o comando:

# rm -rf /var/cache/squid

E nesta situação, ele deleta também o diretório "squid", que pertence ao proxyadm.

Agora aparecerá um problema: quando o Squid for Reiniciado ele NÃO irá criar os diretórios de cache, irá aparecer um erro de permissão.

Nesta situação, o administrador (como root), descobre que não existe o diretório /var/cache/squid. Então ele precisa ser criado... só que este diretório ficará com dono/grupo sendo o root. E o erro de permissão irá continuar...

A solução então deve ser:

# chown proxyadm /var/cache/squid
# chgrp proxyadm /var/cache/squid

Agora sim, iremos criar os diretórios de cache com o famoso:

# squid -z

O erro deixará de ocorrer. Já podemos "startar" o Squid.

A solução definitiva para este problema consiste em NÃO se administrar o Squid como root e caso vá fazê-lo, na hora de limpar os diretórios de cache, utilize o comando:

# rm -rf /var/cache/squid/*

Um "asterisco" que irá lhe poupar tempo... (isto se já não lhe causou sérias dores de cabeça)...


Um comentário:

  1. Muito bom, eu preciso limpar o cache squid onde faço estagio o problema é que pesquisei alguns comandos para fazer isso e fiquei com receio de usá-los sem saber. Agora sim posso fazer sem medo.

    ResponderExcluir