Implantação de sites - gerenciando conteúdo enviado por usuários?

2

Sou programador de profissão, "administrador de servidores" por necessidade da empresa.

Estamos tentando eliminar o antigo e doloroso estilo de implantação do "site de atualização por FTP". Ter o servidor web verificando a última base de código do controle de versão para uma pasta e ter um link simbólico "atual" para a última verificação (permitindo facilmente voltar a uma versão mais antiga alterando o link simbólico) parece ser a maneira que queremos vai.

Mas tenho uma pergunta: qual é a boa prática para lidar com conteúdo enviado por usuários? Este material não está no controle de versão. Eu tenho algumas idéias para lidar com isso, mas qual é a prática inteligente e aceita?

    
por Legion 01.06.2010 / 19:30

5 respostas

2

Se o conteúdo enviado estiver todo em um diretório, posso ver duas maneiras.

  • Tornar o diretório enviado um link simbólico é o controle de versão. Esse link simbólico deve apontar para o diretório de destino dos envios reais.
  • Configure um Alias na configuração do seu website para apontar para o diretório real que está fora da raiz da web normal.

O primeiro método não requer mudanças reais de código, enquanto o segundo método parece um pouco mais limpo para mim.

    
por 02.06.2010 / 03:12
0

O conteúdo enviado por usuários não deve ser colocado no controle de versão, como você mencionou. No entanto, eles ainda devem ter backup.

Eu recomendo simplesmente configurar um script de backup cron diário que rsync, tar, rdiff-backup, ou qualquer outro, e carregar os dados para outro servidor. Naturalmente, a abordagem que você toma dependerá da importância de seus dados; Para obter informações realmente críticas, convém configurar a replicação instantânea (especialmente para bancos de dados: leia-se sobre replicação de banco de dados).

    
por 02.06.2010 / 03:03
0

Eu lido apenas com imagens e avatares para conteúdo do usuário. Bem como um web de carga balanceada. Relegamos todo o conteúdo carregado para um servidor da web, que é feito em backup diariamente. Eu então configuro um servidor rsync no servidor de conteúdo. Os servidores da web solicitam os novos arquivos via rsync a cada minuto em um cronjob. Todos os arquivos são replicados e armazenados em backup!

    
por 02.06.2010 / 06:24
0

Você deve colocá-lo em algum lugar fora da raiz do servidor, /var/upload/ , por exemplo. Ele tem considerações de segurança: o código do servidor da web não deve ser exposto ao código carregado, e isso pode acontecer se você misturar essas duas coisas e definir permissões erradas. E você mantém seu conteúdo entre atualizações.

Se os usuários fizerem upload de arquivos pequenos, a melhor maneira é armazená-los no banco de dados.

    
por 02.06.2010 / 06:40
0

Eu suspeito que você esteja pensando demais nisso. Enquanto a opção preferida é simplesmente ter o conteúdo da web e os arquivos enviados isolados, você também pode simplesmente excluir o diretório de upload (e subdiretórios?) Do controle de versão.

    
por 02.06.2010 / 06:57