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