mirror sob demanda com nginx
Eu estou testando a geração de imagens de CD do
BrDesktop mas não tenho disco pra manter um mirror
local. Tentei usar apt-proxy, apt-cacher-ng, mas todos fizerem o simple-cdd dar
pau porquê pra construir o CD são necessários subdiretórios no mirror (doc
, tools
, etc) que essas ferramentas não suportam.
Decidi então procurar uma solução pra fazer algo parecido com o que o apt-proxy e o apt-cacher-ng fazem, mas pra todo o mirror e não só pro pool/ e dists/. Procurando no scroogle achei esse post sobre um mirror sob demanda usando o nginx. nginx é mais um desses servidores web light que prometem pouco uso de memória e bom desempenho.
Resolvi tentar, e não é que depois de futucar um pouco e dar uma mexida na configuração do cara, deu certo? A configuração do nginx ficou assim:
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
location /debian {
root /home/terceiro/mirror;
error_page 404 403 = /fetch$uri$args;
}
location /fetch {
proxy_pass http://ftp.br.debian.org;
proxy_store on;
proxy_store_access user:rw group:rw all:rw;
proxy_temp_path /home/terceiro/mirror;
alias /home/terceiro/mirror;
}
}
Tem uma limitação que é: de vez em quando eu preciso apagar os arquivos Release
e Packages*
pra pegar as atualizações do repositório, e fiz um script clean.sh
que fica na raiz do mirror pra fazer isso:
#!/bin/sh
find . -name Release\* -exec rm -f '{}' ';'
find . -name Packages\* -exec rm -f '{}' ';'
Daí uso http://localhost/debian
como meu mirror Debian, e o simple-cdd se
entende com ele que é uma beleza a imagem é gerada. Ela ainda não instala, mas
vamos chegar lá. :-)