quinta-feira, 31 de outubro de 2013

Deploy site em PHP com GIT e Debian

Achei alguns tutoriais na net que faziam algo parecido automatizando o processo de publicação com GIT, mas preferi fazer de outra maneria que não misturava meu código fonte com os arquivos do GIT.

Inicialmente vou explicar o ambiente que temos:
CPU D: computador de desenvolvimento do código fonte PHP e onde versiono com GIT
CPU P: computador de produção
No meu caso os dois computadores rodam Debian, mas poderia ser outro Linux.
Instalei GIT e SSH no dois computadores.

  1. A partir do CPU D acessei remotamente o CPU P via ssh:
    ssh [usuario CPU P]@[ip CPU P]
  2. De dentro do CPU P criaremos um diretório que vai receber uma referencia do código fonte versionado no CPU D.
    mkdir [nome diretório]
    cd [nome diretório]
  3. Agora vamos criar uma versão bare do nosso repositório. Resumindo bare é uma versão com as configurações do GIT e dados da versão do seu código fonte.
    git clone --bare ssh://[usuario CPU D]@[ip CPU P]/home/usuário CPU D/
  4. No ultimo passo vamos baixar todo nosso código fonte para a o diretório onde está rodando o servidor web:
    GIT_WORK_TREE=/[diretório de produção] git checkout -f

    Este comando acima precisa ser executado de dentro do 
    [nome diretório], passo 2, onde foi feito o bare.


Mas qual a vantagem disso?
Poderíamos usar o rsync para colocar o código fonte na produção sem problemas!
Mas os arquivos de configuração do GIT seriam levados juntos. Repare no ultimo comando, item 4, que defino o diretório, GIT_WORK_TREE, é onde os arquivos serão colocados.

Resumindo colocamos as configurações da versão em um diretório e os arquivos versionados em outro diretório.

Referências:
How to use git over SSH http://www.mindfuzz.net/?p=250
Simple Git Deployment http://ryanflorence.com/simple-git-deployment/