Pergunta

Eu estou usando Django como framework web e, em seguida, Apache e Lighttpd como servidor web e servidor de mídia estática, respectivamente. Lighty serve todo o meu conteúdo estático muito bem, mas eu preciso configurá-lo para servir os novos arquivos enviados pelo usuário. Lighttpd é executado em uma máquina diferente da Apache (Django). Meu código django de criar um diretório e, em seguida, criar um arquivo de imagem é executado em minha máquina Apache, tornando-se atualmente sendo salvas na mesma máquina em si. Eu quero esse diretório e criação do arquivo acontecer no meu servidor de mídia estática, que deve então ser servido pelo servidor de mídia em si. Eu estou usando os.mkdir e funções urllib.urlretrieve respectivamente para criar diretório e salvar arquivos no (Apache) máquina de Django. Existe uma maneira que eu posso fazer alguns ajustes de configuração para obter essas coisas funcionam ou preciso scripts de gravação no servidor de mídia e chamá-los a partir da máquina Django ??

Foi útil?

Solução

A resposta mais simples é que os envios de usuário para um diretório compartilhado que ambos os servidores web pode acessar. Em seguida, ele está disponível imediatamente. Se você estiver usando unix (parece que) então NFS é uma solução possível. Se você acha que seu site será ampliado para vários servidores a la flickr em seguida, usando rsync para empurrar para vários servidores de borda e possivelmente até mesmo a implementação de um esquema de fragmentação é outra solução.

Basta ter cuidado. Há uma série de preocupações de segurança que dependendo do seu aplicativo que você tem que considerar.

Se todos os arquivos de ir para um diretório acessível ao público, que poderia ser possível para os usuários de adivinhar os nomes dos arquivos de outras pessoas e baixá-los. Nesse caso, você vai querer atendê-los de Django com uma fina camada de segurança no topo.

Nunca confie seus usuários! Verifique se o que eles upload é em um determinado conjunto permitido. Sob nenhuma circunstância você deve permitir que eles carreguem o que eles querem. A menos, claro, seus usuários são uma confiança poucos. Mesmo assim, você deve fazer algumas verificações. Eles provavelmente não deve ser upload de arquivos .php para um. A última coisa que você quer dar-lhes é a capacidade de executar scripts arbitrários no seu servidor. Pelo menos configure o diretório para apenas servir de arquivos e não executar qualquer coisa.

Boa sorte

Outras dicas

Este é o tipo de coisas que eu usar o rsync para. Fazer pressão rsync o que quiser no servidor principal e, em seguida, periodicamente (ou sob demanda) para o servidor estático. Rsync é mais rápido (e mais featureful) do que qualquer coisa que você pode produzir com um corte rápido.

Só porque eu sou paranóico eu faço de hora em hora rsync de todos os meus sites de clientes para 2 servidores de backup, um dos quais está em minha garagem. Eu só cronometrado uma "rsync -a" contra um site do cliente 1.7 GB (que não têm quaisquer alterações) e levou 9,92 segundos parede-relógio em tempo, incluindo os 3 apertos de mão de rede para rsyncing 3 diretórios diferentes. nada tinha mudado, presto-bango, ele é feito, completo com timestamps, dono / grupo, etc.

É incrível como Blase você pode se tornar sobre falha no servidor quando você se verdadeiro, multi-máquina, não-humanos-envolvidos cópia de segurança de trabalho. Eu durmo muito bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top