Sistema Cache

1. Sistema Cache

Welington
professor_well

(usa Debian)

Enviado em 21/04/2013 - 22:25h

Gostaria de montar um sistema cache avançado para um maior armazenamento possível de páginas Web, youtube e Download porem o cache pode ser criado como cache de memoria e disco. Mas as minhas dúvidas são como utilizar as configurações do cache para armazenar páginas Web em uma rede de 73 máquinas com uma banda larga de 20MB, focando armazenamento de download feitos pelos usuários, youtube (que sei que vou ter que utilizar apache) e páginas Web diversas. mas não quero o armazenamento de páginas de Bancos. Por enquanto meu arquivo de configuração se encontra assim: Essas configurações de inicio estão sendo feitas em uma máquina virtual de 1gb de memoria e 20gb de HD.
alguém por favor poderia me ajudar a fazer esse arquivo de configuração para aprimora-lo? o que devo fazer para obter esse resultado? Grato.

http_port 3128 Transparent
visible_hostname AdmWell

cache_mem 512 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95

cache_dir ufs /var/cache/squid 2048 16 256
cache_access_log /var/log/squid/access.log

#Regra de Atualizaçao do cache
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

#acls
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl Safe_ports port 901
acl purge method PURGE
acl CONNECT method CONNECT

#regras de acesso
http_access allow manager localhost
http_access allow manager
http_access allow purge localhost
http_access allow purge
http_access allow !Safe_ports
http_access allow CONNECT !SSL_ports
http_access allow all
icp_access allow all


  


2. Re: Sistema Cache

Buckminster
Buckminster

(usa Debian)

Enviado em 22/04/2013 - 00:46h

Para não armazenar páginas no cache você cria uma acl:
acl semcache url_regex -i "/etc/squid/semcache.txt"
no_cache deny semcache

Daí acrescenta no arquivo os domínios dos sites dos bancos.

Para confirmar, no /var/log/squid/access.log, ele apresentará a mensagem “TCP_MISS”, parecida com esta abaixo:

http://www.bb.com.br/ - DIRECT/170.66.11.10 text/html
1197364100.832 906 127.0.0.1 TCP_MISS/200 11813 GET
http://www.bb.com.br/ - DIRECT/170.66.11.10 text/html

Se teu Squid for 2.7 ou acima, acrescente esta entrada refresh_pattern padrão:
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0

As entradas default são:
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

As suas próprias entradas você deve acrescentar acima das entradas default.

Uma entrada assim, por exemplo:

refresh_pattern -i \.(gif|png|jp?g|ico|bmp|tiff?)$ 10080 95% 43200 override-expire override-lastmod

faz cache específico de acordo com as extensões dos arquivos, entre os parênteses e separadas com um pipe.
Os parâmetros depois você acrescenta de acordo com o que você quer, bem como os limites de tempo. São vários parâmetros, bem mais do que os dois que coloquei acima como exemplo.

Outro exemplo:
# Cache do Windows Update para diferentes versões do Windows
refresh_pattern http://.*\.windowsupdate\.microsoft\.com/ 0 80% 20160 reload-into-ims
refresh_pattern http://.*\.update\.microsoft\.com/ 0 80% 20160 reload-into-ims
refresh_pattern http://download\.microsoft\.com/ 0 80% 20160 reload-into-ims
refresh_pattern http://windowsupdate\.microsoft\.com/ 0 80% 20160 reload-into-ims
refresh_pattern http://office\.microsoft\.com/ 0 80% 20160 reload-into-ims

Você pode acrescentar quantas entradas refresh_pattern desejar.
Daí você vai jogando de acordo.
Por exemplo: os sites mais acessados e os downloads de arquivos mais frequentes você pode delimitar limites de tempo específicos para eles.

À propósito, nada a ver com o cache:
Crie uma acl para sua rede local logo abaixo da acl all, por exemplo:
acl redelocal src 192.68.0.1/24

e substitua as duas últimas linhas do teu squid.conf por essas quatro abaixo:
icp_access allow redelocal
icp_access deny all
http_access allow redelocal
http_access deny all

E veja isto:
http://www.squid-cache.org/Doc/config/refresh_pattern/


3. Servidor Cache

Welington
professor_well

(usa Debian)

Enviado em 24/04/2013 - 18:27h

Obrigado Buckminster obrigado mesmo, coloquei a configuração para o servidor como você até mesmo me instruiu. O armazenamento está acontecendo, só que o porem está para o armazenamento de videos do youtube
você sabe como posso configurar o cache para apache para armazenamento dos videos? fico muito grato pela ajuda mesmo Buckminster. Obrigado.




4. Re: Sistema Cache

Buckminster
Buckminster

(usa Debian)

Enviado em 24/04/2013 - 18:33h

professor_well escreveu:

Obrigado Buckminster obrigado mesmo, coloquei a configuração para o servidor como você até mesmo me instruiu. O armazenamento está acontecendo, só que o porem está para o armazenamento de videos do youtube
você sabe como posso configurar o cache para apache para armazenamento dos videos? fico muito grato pela ajuda mesmo Buckminster. Obrigado.



Você quer fazer cache no Apache... é isso?
Ou quer fazer cache do Apache no Squid?


5. Re: Sistema Cache

Welington
professor_well

(usa Debian)

Enviado em 25/04/2013 - 11:02h

Isso mesmo eu quero fazer o cache no Apache. Com artigos que li uma das formas de armazenar videos do youtube é utilizando o apache. Voce poderia me ajudar?


6. Re: Sistema Cache

Buckminster
Buckminster

(usa Debian)

Enviado em 25/04/2013 - 18:13h

Qual a versão do teu Apache?


7. Re: Sistema Cache

Welington
professor_well

(usa Debian)

Enviado em 26/04/2013 - 00:05h

A versão do meu apache é 2.2.16


8. Re: Sistema Cache

Buckminster
Buckminster

(usa Debian)

Enviado em 26/04/2013 - 01:03h

O Apache e o Squid vão ficar na mesma máquina?


9. Re: Sistema Cache

Welington
professor_well

(usa Debian)

Enviado em 26/04/2013 - 13:56h

Sim o Apache e o Squid irão ficar na mesma Máquina. Por enquanto é teste na Máquina Virtual, mais eles irão ficar juntos na máquina física com 8Gb de memoria ram 500gb de Hd e processador Core 2 Duo.


10. Re: Sistema Cache

Buckminster
Buckminster

(usa Debian)

Enviado em 26/04/2013 - 22:14h

Bom, como essas configuração serão um pouco demoradas,
embaixo vai uns links para você ir dar uma olhada e um
exemplo de configuração. Daí você adapta.

No Apache2:

# vim /etc/apache2/sites-enabled/000-default

NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
<Directory "/var/www/youtube">
AllowOverride All
Allow from all
</Directory>

</VirtualHost>

Não esqueça de criar as pastas.

Depois:

# vim /etc/apache2/conf.d/charset

Descomente a seguinte linha:

AddDefaultCharset UTF-8

No /etc/apache2/apache2.conf

LoadModule cache_module modules/mod_cache.so
<IfModule mod_cache.c>
<IfModule mod_disk_cache.c>
CacheRoot /var/www/youtube
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
CacheForceCompletion 70
CacheSize 5
CacheGcInterval 3
CacheDefaultExpire 5
CacheMaxExpire 300
</IfModule>

LoadModule mem_cache_module modules/mod_mem_cache.so
<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 4096 << esse valor e os abaixo você altera
para um valor adequado.
MCacheMaxObjectCount 100
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
</IfModule>

# CacheDisable http://security.update.server/update-list/
</IfModule>

No squid.conf:

#REDIRECIONAMENTO
url_rewrite_children 70
acl store_rewrite_list dstdomain .youtube.com
url_rewrite_access allow store_rewrite_list
url_rewrite_access deny all
url_rewrite_program /etc/squid3/rw_youtbe.sh

#NEGA CACHE YOUTUBE (para o Squid não fazer cache do youtube)
acl cacheyoutube dstdomain .youtube.com
cache deny cacheyoutube

Não esqueça de criar as pastas.

Cria o arquivo rw_youtube.sh em /etc/squid3/rw_youtube.sh e

coloca o conteúdo abaixo dentro dele:

#!/bin/sh

# nome: rw_youtube.sh

###########################################################
##
# Script de URL Rewrite para cache do Youtube
#
# Desenvolvido por Wenderson Souza (wendersonsouza@msn.com)
#
# Criado em 16 de setembro de 2008 as 01:10 hs
#
# Modificado em 16 de setembro de 2008 as 01:30 hs
#
###########################################################
##
# Creditos
#
# Script com adaptacoes do "Script de cache do youtube
#
# desenvolvido por Luiz Biazus e Andre Chiodi"
#
###########################################################
##
# Licenca GNU
#
# Este script pode ser utilizado, modificado e distribuido
#
# livremente, desde que seja mantida referencia ao(s) de-
#
# senvolvedores referenciados acima.
#
###########################################################
##
#
# configuracoes
#
# mascara de criacao dos arquivos
umask 022
# destino dos arquivos
destino_video=/disco2/YOUTUBE << professor_Well aqui você
coloca destino_video=/var/www/youtube
# local dos videos no seu servidor
servidor_http=http://www.seudominio.com.br/var/www/youtube << aqui você coloca o teu servidor (http://localhost/var/www/youtube)

# ativacao do log (0-desativado 1-ativado)
log_ativado=1
log_destino=/tmp/rw_youtube.log
#
# inicio do script
# deste ponto em diante vc nao deve alterar nada
#
while read p1 p2 p3 p4 p5 p6 p7 p8 p9 p10
do
#
# leitura dos parametros
#
if [ "$log_ativado" = "1" ]; then
echo "" >> $log_destino
echo "----------------------- INICIO" >>
$log_destino
echo "url: $p1" >> $log_destino
# echo "p2: $p2" >> $log_destino
# echo "p3: $p3" >> $log_destino
# echo "p4: $p4" >> $log_destino
# echo "p5: $p5" >> $log_destino
# echo "p6: $p6" >> $log_destino
# echo "p7: $p7" >> $log_destino
# echo "p8: $p8" >> $log_destino
# echo "p9: $p9" >> $log_destino
# echo "p10: $p10" >> $log_destino
fi

#
# validacoes
#
# verificar se foi passada alguma url
if [ -z "$p1" ]; then
if [ "$log_ativado" = "1" ]; then
echo " Nenhuma URL passada como
parametro!" >> $log_destino
echo "----------------------- FIM"
>> $log_destino
fi
exit 1
fi

# verificar se foi passada uma url de video do
youtube
if [ `echo $p1 | grep youtube | grep watch | wc -l`
-lt 1 ]; then
if [ "$log_ativado" = "1" ]; then
echo " A URL nao ' de um video do
youtubbe!" >> $log_destino
echo "----------------------- FIM"
>> $log_destino
fi
exit 1
fi

#
# tratar url
#
# pegar dominio
dominio=`echo $p1 | cut -d/ -f1,2,3`
# pegar codigo do video
arquivo1=`echo $p1 | cut -d/ -f4 | cut -d= -f2`
# pegar nome real do arquivo
arquivo2=`wget -qO - $p1 | grep -oE
'video_id=.*&t=[^\"&]*' | head -1`

#
# redirecionar ou baixar os arquivos
#
# se os dois arquivos ja existirem - retornar do
cache
if [ -e "$destino_video/$arquivo1.html" ] && [ -e

"$destino_video/$arquivo1.flv" ]; then

if [ "$log_ativado" = "1" ]; then
echo "Aviso: Ja' esta em cache!" >>

$log_destino
echo "Redirecionado para

$servidor_http/$arquivo1.html!" >> $log_destino
fi
echo "302:$servidor_http/$arquivo1.html"

else

# caso nao exista um dos dois, retornar o

link original
if [ "$log_ativado" = "1" ]; then
echo "Aviso: Ainda nao esta em

cache!" >> $log_destino
echo "Abrindo URL original!" >>

$log_destino
fi
echo $p1

# se nao existir o html - baixa-lo
if [ ! -e "$destino_video/$arquivo1.html"
]; then
if [ "$log_ativado" = "1" ]; then
echo "Aviso: Baixando
arquivo $p1!" >> $log_destino
fi
wget -O "$destino_video/
$arquivo1.html" "$p1" &&

# trocar os players
# obs: O sed versao 4 ou superior
faz a alteracao no proprio arquivo (-i)
sed -i '/<div id="watch-this-
vid">/,/<div id="watch-ratings-views">/c <div id="watch-
this-vid"><div id="watch-player-div" class="flash-
player"><embed type="application/x-shockwave-flash"
src="'$servidor_http'/PLAYER/player.swf" style=""
id="bannerswf" name="bannerswf" bgcolor="#ffffff"
quality="high" allowfullscreen="true"
allowscriptaccess="always" wmode="opaque"
flashvars="file='$servidor_http'/'$arquivo1.flv'&fullscreen
=true&autostart=true&" width="480" height="350"></div><div
id="watch-main-area" > <div id="watch-ratings-views">'
"$destino_video/$arquivo1.html" &&
chmod +rx "$destino_video/
$arquivo1.html"
fi

# se nao existir o flv - baixa-lo
if [ ! -e "$destino_video/$arquivo1.flv" ];
then
if [ "$log_ativado" = "1" ]; then
echo "Aviso: Baixando
arquivo ${dominio}/get_video?${arquivo2}!" >> $log_destino
fi
wget -O "$destino_video/
$arquivo1.flv" "${dominio}/get_video?${arquivo2}" &&
chmod +rx "$destino_video/
$arquivo1.flv"
fi

fi

if [ "$log_ativado" = "1" ]; then
echo "----------------------- FIM" >>
$log_destino
fi
done

# Fim do script

Salva e sai.
Dê permissão de execução:
# chmod +x /etc/squid3/rw_youtbe.sh

Reinicia o apache2 e o Squid.

Para ver se os arquivos ficaram certos no apache:
apachectl configtest

No Squid:
squid -k parse

Se no Squid der algum erro do tipo: ERROR: 'alguma_coisa'
requires --enable-alguma-coisa você deve recompilá-lo com o
parâmetro pedido no erro (--enable-alguma-coisa).
É mais ou menos isso.
Não sei se esqueci algo. E eu estou meio destreinado.
Mas acredito que pelo menos você tem uma boa base para
iniciar.
Qualquer dúvida posta aqui.

http://httpd.apache.org/docs/2.2/caching.html

http://httpd.apache.org/docs/2.2/mod/mod_cache.html

http://pt.wikibooks.org/wiki/Guia_do_Linux/Avan%C3%A7ado/Apache/Configurando_o_Apache_como_servidor_...

http://anderjs.blogspot.com.br/2009/12/configurar-mod-cache-apache.html

http://www.vivaolinux.com.br/artigo/Otimizando-seu-web-server-com-Apache2-+-Lighttpd?pagina=2






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts