[FUG-BR] [OFF] Estrutura de armazenamento de arquivos e redirecionamento no Apache
"Fábio Jr."
fjuniorlista em gmail.com
Quinta Outubro 8 08:12:25 BRT 2009
Obrigado pela resposta Wanderson,
Posso ter me expressado mal, mas esse não era o foco das minhas
perguntas,
O AliasMatch do Apache não consegue extrair dados de uma string.
Ex.:
URL: [1]http://servidor.foo.bar/123852.jpg
Eu preciso q quando alguem fizer esta requisição ao apache, ele
redirecione para o diretório /arquivos/imagens/8/52/123852.jpg. Usando
expressões regulares do AliasMatch, não consigo pegar o caractere 8 do
último campo, e depois pegar os caracteres 52, mas apenas a palavra
inteira. Preciso que seja algo dinâmico pois ficaria inviável criar um
redirecionamento para cada pasta.
Esta estratégia de reorganização de diretórios tem como foco
performance de disco. As alterações do Apache são apenas reflexos desta
estratégia. Escolhi o Apache depois de realizar alguns testes entre o
lighttpd e ele, e perceber que mesmo o lighttpd sendo mais leve, o
Apache é um aplicativo muito mais completo em questão de módulos
nativos.
Meu problema maior é com a indexação destes arquivos pelo SO, e também
as rotinas de backup, já que o storage onde estes arquivos são
hospedados fica nos EUA.
[]s
Fábio Jr.
Wanderson Tinti escreveu:
2009/10/7 "Fábio Jr." [2]<fjuniorlista em gmail.com>
Olá pessoal, desculpem off, mas gostaria de algumas opiniões já que o
servidor em questão roda FreeBSD.
Tenho um servidor que serve conteúdo estático, sendo que grande parte
deste conteúdo são imagens. Estas imagens estão todas armazenadas em um
diretório, sendo que há aproximadamente 4 milhões de imagens dentro
deste diretório.
Acredito que esta estrutura de armazenamento seja, a médio prazo, pouco
segura e nada dinâmica, tornando escalabilidade e backup praticamente
impossível via rede, principalmente pelo fato do servidor estar
hospedado em outro país.
Pensando em uma maneira de resolver este problema, cheguei a uma
possibilidade, mas que pode não ser a solução correta. Minha sugestão é
a seguinte:
Dividir estas imagens, em diretórios baseando-se nos 3 últimos números
do nome do arquivo.( Os arquivos são nomeados em ordem crescente no
formato {número}.png ) Ex.:
O caminho absoluto do arquivo 123891.png no servidor é
/imagens/8/91/123891.png. O arquivo 456891.png, também ficará nesta
mesma pasta. Porém o arquivo 123456.png ficará armazenado na pasta
/imagens/4/56/123456.png.
A estrutura se baseia sempre na centena do nome do arquivo (891), sendo
que o número da centena (8) é a pasta pai, e os números da dezena e
unidade (91) são o nome da pasta filho.
1ª questão: existe uma maneira de, fazendo uma requisição para
[3]http://servidor.com.br/imagens/123456.png, o Apache redirecionar ou
tratar essa URL para o caminho correto, através de uma expressão regular
utilizando somente um AliasMatch? (pelas minhas pesquisas na
documentação do Apache não consegui fazê-lo)
2ª questão: gostaria de sugestões de como estruturar melhor os arquivos,
para obter uma melhor performance. Outras soluções possíveis seria a
criação de diretórios ainda mais específicos ou a migração para um
serviço de storage distribuído.
Obrigado
Boa noite.
1º questão: A melhor saída é utilizar expressões regulares com AliasMatch
para levar o usuário ao diretório correto. De uma boa lida sobre o assunto.
2º questão: Na minha opinião, você pode utilizar o Lighttpd para servir seus
conteúdos estáticos. Você deverá ter uma melhora significativa na
performance. Esse link deve servir como referência.
[4]http://www.vivaolinux.com.br/artigo/Otimizando-seu-web-server-com-Apache2-+-L
ighttpd?pagina=1
-------------------------
Histórico: [5]http://www.fug.com.br/historico/html/freebsd/
Sair da lista: [6]https://www.fug.com.br/mailman/listinfo/freebsd
References
1. http://servidor.foo.bar/123852.jpg
2. mailto:fjuniorlista em gmail.com
3. http://servidor.com.br/imagens/123456.png
4. http://www.vivaolinux.com.br/artigo/Otimizando-seu-web-server-com-Apache2-+-Lighttpd?pagina=1
5. http://www.fug.com.br/historico/html/freebsd/
6. https://www.fug.com.br/mailman/listinfo/freebsd
Mais detalhes sobre a lista de discussão freebsd