Atualização de Sistema Web com Rsync / deployment rsync

30 08 2008

Introdução

Trabalho com o desenvolvimento de sistemas Web há 8 anos aproximadamente, e, chega um momento na sua vida em que as coisas devem ser feitas de maneiras diferentes, agilizar processos, parar de ‘camelar’ tanto.

Cenário de Desenvolvimento

Meu atual cenário de desenvolvimento é o seguinte:

  1. Servidor Local de Desenvolvimento, onde é realizado todo o processo de implementação e testes dos softwares que desenvolvemos; (servidor de desenvolvimento)
  2. n Servidores de produção que ficam ou em nosso parque de máquinas ou na infra estruturas próprias dos clientes. (servidor de produção)

Um dos meus maiores problemas era manter os códigos dos sistemas atualizados nos servidores de produção pois o processo era todo manual, sempre usávamos ftp, sftp, ssh, fish, já mandamos arquivo até pelo correio (brincadeira mas serai legal né), o que acontecia frequentemente era esquecer de atualizar um arquivo e pronto lá se iam 30 minutos preciosos de minha vida, que por sinal está cada dia mais curta, vejo isso em meus fios de cabelos antes louros e lépidos agora brancos e caquéticos!

O Rsync me salvou!

Em fim cansado de tudo isso resolvi meus problemas de sincronização de arquivos utilizando uma única ferramenta chamda rsync.

Vou parafraseando o site oficial da ferramenta:

rsync is an open source utility that provides fast incremental file transfer. rsync is freely available under the GNU General Public License and is currently being maintained by Wayne Davison.

No nosso caso ele serve como uma luva pois olha o que o danadinho consegue fazer:

  1. Listar todos os arquivos do servidor de desenvolvimento que estejam diferentes do servidor de produção;
  2. Enviar todos estes arquivos de maneira rápida e segura e transparente lol (fecho o barraco pra balanço).

Agora como fazer tudo isso, bom como pré-requisitos é necessário que a ferramenta rsync esteja instalado tanto no seu servidor de desenvolvimento quanto no seu servidor de produção, depois disso o processo é bem simples:

Listando os Arquivos Diferentes

rsync -rnvC pasta_local/./* usuario@ip_do_servidor:path_servidor

Os parâmetros são:

  • r : recursivo
  • n: apenas lista os arquivos (não transfere nada)
  • v: verbose (lista o que está acontecendo)
  • C: isso aqui é para você impedir que os arquivos gerados pelas ferramentas de controle de versão, SVN ou CVS por exemplo. sejam enviados para o servidor de produção.

Sincronizar as Coisas

rsync -tavC pasta_local/./* usuario@ip_do_servidor:path_servidor

Os parâmetros são:

  • t: transferência de dados;
  • a: atalho para ‘-rlptgoD.

Mantendo Alguns Arquivos Desincronizados!

Uma coisa que acontece muito é que alguns arquivos não devem ser sincroinzados, em geral são arquivos de configuração onde estão armazenadas senhas e caminhos, para isso utilize o parâmetro –exclude-from=arquivo.txt, dentro do arquivo.txt você faz algo parecido com isso:

– config.php
– modulo/ged/arquivos/*
– backup/*
– templates/templates_c/*.tpl.php
O sinal de – indica que você NÂO quer sincronizar o arquivo, você pode usar coringas para facilitar um pouco as coisas.

Conclusão

Meu amigo alexandre diz:

– Se tá funcionando não mexe

O problema é quanto TEM que mexer, é nessas horas que um bom controle de versão e uma ferramenta de deploy ajudam bastante.

Bibliografia


Ações

Information

2 responses

22 11 2008
vimdiff uma Ferramentas para Deploy de Aplicações PHP « Anselmo

[…] postei anteriormente sobre como “fazer deploy” de uma aplicação PHP utilizando o RSYNC. Pois bem, venho hoje apresentar uma “nova” ferramenta que te mostra a diferença entre […]

18 11 2010
Rafael Albani

Muito boa a dica, era exatamente o que eu estava procurando e com certeza tem muita gente que procura uma ferramenta para atualização de sistemas Web.

Deixe um comentário