Um dos principais motivos de desapontamento de alguns desenvolvedores é a hora de fazer um deploy automatizado e eficiente sem ter que seguir aquelas ferramentas cheias de configurações e que no final das contas dão problemas por compatibilidades etc.
Aqui vou ensinar como fazer o deploy da maquina local para o servidor remoto, em poucos passos, utilizando uma hooks do git.
Acessando o servidor remoto e criando um repositório
Obs.: Antes de iniciar esse passo, certifique-se que você tem acesso SSH ao servidor remoto E tenha o git instalado em seu servidor remoto.
Acesse o ssh normalmente:
ssh usuariossh@meudominio.com
Vamos criar um padrão para armazenar o repositório em nosso servidor remoto, criando um diretório chamado “repos”dentro da “home” do servidor
cd ~
mkdir repos
sudo chown $USER:$USER ~/repos
sudo chmod -R 775 ~/repos
Agora vamos criar o respositório do nosso projeto dentro do diretório repos
cd ~/repos
mkdir meuprojeto.git && cd meuprojeto.git
git init --bare
Obs.: siga exatamente os comandos, pois o –bare é essencial para criarmos um repositorio e não um projeto em si.
Agora vamos clonar o repositório do nosso projeto em nosso www do servidor remoto AINDA.
Obs.: ainda não saimos do servidor remoto, vamos clonar o repositório para dentro da /var/www do nosso servidor
git clone ~/repos/meuprojeto.git /var/www/meuprojeto
Perfeito, agora vamos criar uma hooks dentro do repositório do nosso projeto
nano ~/repos/meuprojeto.git/hooks/post-receive
Dentro desse arquivo colocaremos os seguintes comandos
#!/bin/sh
cd /var/www/meuprojeto
env -i git reset --hard
env -i git pull origin master
Pronto, esse arquivo de hooks identificará qualquer alteração feita/recebida pelo nosso repositório (meuprojeto.git) e irá transferir(atualizar) nosso repositório remoto que está em /var/www/meuprojeto, então agora só falta clonarmos esse projeto para a máquina local e mandar bala!
Finalmente, vamos clonar o projeto para a máquina local
Agora estamos na máquina local, acesse o seu diretório de projetos, exemplo
cd ~/minhamaquina/www
e clone o projeto usando a seguinte url
git clone usuariossh@meudominio.com:~/repos/meuprojeto.git meuprojetolocal
Obs.: você irá clonar o repositório usando ssh, então tenha em mente que irá precisar do seu usuário ssh, e que ele tenha permissão de acesso a tais diretórios.
Feito esse projeto, você pode criar um arquivo no projeto local
cd meuprojeto
touch index.html
Adicionar, commitar e enviar essa alteração para o repositório remoto utilizando comandos normais de git
git add .
git commit -m "commit para o servidor remoto"
git push -u origin master
Digite sua senha de acesso ssh e aguarde ele finalizar o push. Após esse projeto, acesso o servidor remoto e verifique o diretório do projeto remoto (/var/www/meuprojeto) e veja que o index.html estará lá conforme nosso push.
Bom, essa foi uma passagem simples e didatica, com certeza tem que se aplicar um git flow melhor, mas já é o primeiro passo pra automatizar seu deploy.
Problemas
Pode ocorrer alguns erros de permissão nesse meio caminho, esteja atendo aos logs do git push, por que eles informa caso aconteça algum erro com a hooks