O sonho de qualquer desenvolvedor é poder fazer o deploy com segurança e eficiência, quem já fez um deploy no Heroku já conhece esse método. Basta um simples comando para efetuar o deploy.

$ git push [servidor - git remote] [nome da branch]

Seguir esses passos leva menos de 5 minutos depois de alguma prática, o que compensa muito quando se tem um time trabalhando no mesmo projeto, onde o deploy por FTP pode ser algo traumático e levar mais de 5 horas, o deploy utilizando um repositório Git vai reduzir em muito as dores de cabeça ao manter o seu sistema atualizado.

Criando os repositórios Git no servidor

É algo na verdade bem simples de se fazer, basta instalarmos o git, criarmos uma pasta para ficar os nossos repositórios, cada repositório é iniciado utilizando o comando bare dentro de uma outra pasta, no exemplo abaixo vamos demonstrar utilizando o ubuntu como exemplo, mas pode ser feito com qualquer distribuição Linux, mudando apenas o comando para instalar o git.

~$ sudo apt-get install git
~$ mkdir -p ./git/myrepo.git
~$ cd ./git/myrepo.git
~/git/myrepo.git$ git init --bare

E está pronto, atenção a opção “–bare”, ela simplesmente faz ser criado o repositório na própria pasta, sem o “–bare” o git iniciaria o repositório em uma pasta oculta, a pasta “.git”.

Crie a pasta para execução do projeto

Quando fizermos o deploy pelo git, vamos fazer o git, através de um hook, extrair o conteúdo alterado para uma pasta do servidor, vamos criar uma pasta chamada “server” no mesmo nível da pasta “git”.

~$ mkdir server

Configurando o hook post-receive do Git

Enfim criaremos o nosso Hook no repositório Git, post-receive, para depois de receber as alterações do repositório, extrair os arquivos para a pasta “server”.

$ cd ~/git/myrepo.git/hooks
~/git/myrepo.git/hooks$ touch post-receive
~/git/myrepo.git/hooks$ chmod +x ./post-receive

Para finalidade de testes, apenas para extrair as alterações do repositório para a pasta “server” recém criada, adicione o seguinte conteúdo ao arquivo “post-receive”:

#!/bin/bash

echo ">>> post-receive started";

while read oldrev newrev ref
do

branch=`echo $ref | cut -d/ -f3`

echo "$ref";
echo "$branch";

if [ "master" == "$branch" ]; then
GIT_WORK_TREE=~/server/ git checkout -f $branch
chmod -R 775 /server/
echo '--> changes pushed to ULTRA SERVER'
fi

done

echo ">>> post-receive done"

Fazendo o deploy para o servidor com o Git

De volta a máquina local, vamos referenciar o servidor onde vamos fazer o deploy no nosso Git client. Existem duas maneiras de fazer isso, adicionando o usuário e o ip da máquina no endereço do “git remote” ou criando um apelido na configuração de ssh da sua máquina local “~/.ssh/config”, caso o seu servidor utilize uma porta diferente para SSH, é recomendável criar um apelido SSH para sua máquina.

Adicionando ao git remote:

youruser@localmachine:~yourproject$ git remote add server <user>@<ip-server>:git/myrepo.git

ou, caso já tenha o hostname do servidor configurado no SSH:

youruser@localmachine:~yourproject$ git remote add server myserver:git/myrepo.git

Subindo o deploy:

$ git push server master

Dica: Como criar um Hostname SSH para o seu servidor

Utilizando Linux ou MacOSX, abra o terminal e siga os comandos:

$ vi ./.ssh/config

Adicione a configuração do seu servidor, conforme exemplo, substituindo o nome de usuário, ip e porta, exemplo:

Host myserver
Hostname 0.0.0.0
Port 22
User root

Se o seu servidor utilizar uma chave privada (.pem ou .ppk), é necessário adiciona-lá, conforme o exemplo:

Host myserver
Hostname 0.0.0.0
Port 22
User ultra
IdentityFile ~/.ssh/ultra.pem

Espero que tenham gostado desse tutorial, agora ficará mais fácil controlar o deploy de todo o seu time, sem que o deploy se torne uma experiência traumática assim como o deploy de FTP em times de desenvolvedores com duas ou mais pessoas.

Comentários

comentários