Atualiza automaticamente o repositório SVN em outro servidor

2

Temos 2 servidores web Ubuntu, um dos quais é o nosso servidor de teste (Staging) e o outro é o nosso servidor live (Live). O Staging possui nosso repositório Subversion, assim como a última versão de nossos sites nele. Como o servidor SVN está em execução no Staging, adicionei scripts de gancho de pós-consolidação para que o servidor de armazenamento temporário tenha o código mais recente automaticamente. Fácil.

No entanto, gostaria que um dos repositórios no Live também fosse atualizado. Este é um repositório de imagens, PDFs e afins. Quando um membro da equipe se compromete com isso, eu gostaria que ele fosse atualizado automaticamente nos servidores ao vivo para que ele possa ser usado em correspondências, páginas gerenciadas por conteúdo, etc.

Eu acrescentaria algo ao post-commit para o SSH e atualizaria, mas por segurança, só podemos usar o SSH de um servidor para outro como usuário 'commandLine', enquanto o usuário 'www-data' executa o post commit.

Prefiro não executar um cron no Live para atualizar a cada 5 minutos, mas não consigo ver outra maneira de fazer isso sem alterar todas as nossas permissões de usuário.

Alguma idéia?

    
por Mikey C 05.11.2012 / 15:49

1 resposta

1

Do meu ponto de vista, você já mencionou as soluções diretas

  • Deixe seu usuário commandLine manipular o repositório svn no servidor live
  • Altere sua restrição de segurança e permita que o usuário www-data efetue login de vivo para
  • Use um cron job

Se nada disso funcionar para você, só posso imaginar para o SSH com o usuário commandLine no servidor ativo e criar algum tipo de 'sinal', por exemplo, crie um arquivo f . Por outro lado, use um script de shell com um loop infinito como o receptor do sinal (por exemplo, monitore se f existe). O script de shell seria executado sob as permissões de www-data e executaria o comando svn update toda vez que o 'sinal' fosse recebido.

Disclaimer: Eu não sou realmente um especialista em Unix, então eu não sei qual é a maneira mais limpa de enviar o 'sinal'. Mas tenho certeza que existe uma solução comum para isso.

    
por 05.11.2012 / 16:37