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