Deploy Automático com Git e SSH: Do Local para o Servidor (Passo a Passo)
Esta metodologia utiliza o conceito de Git Bare Repository e Git Hooks para automatizar a transferência de arquivos do seu ambiente local para o servidor de produção, eliminando a necessidade de FTP/SFTP manual.
1. Pré-requisitos
- Acesso SSH habilitado na sua hospedagem.
- Git instalado localmente.
- Caminho absoluto do diretório raiz do seu servidor (geralmente /home/usuario/).
2. Configuração no Ambiente Local (Terminal VS Code)
Antes de configurar o servidor, prepare o repositório local:
1. Inicialize o Git:
git initCopiar2. Renomeie a branch principal (opcional, mas recomendado):
git branch -M mainCopiar3. Crie e versione seus arquivos:
git add .
git commit -m "Initial commit"
Copiar3. Configuração no Servidor (Via SSH)
Acesse seu servidor via terminal e siga estes passos:
3.1. Criar a estrutura de diretórios
Crie uma pasta para armazenar o repositório Git (separada da pasta pública public_html para segurança):
mkdir ~/deploy
mkdir ~/deploy/seu-projeto.git
Copiar3.2. Inicializar o Repositório Bare
Um repositório "bare" não contém os arquivos de trabalho visíveis, apenas o histórico e as configurações do Git.
cd ~/deploy/seu-projeto.git
git init --bare
Copiar3.3. Configurar o Git Hook (O "Coração" do Deploy)
O Hook post-receive é executado automaticamente assim que o servidor recebe um push.
1. Crie o arquivo dentro da pasta hooks:
nano hooks/post-receive
Copiar2. Cole o seguinte script (ajuste os caminhos conforme sua estrutura):
#!/bin/bash
# Diretório onde os arquivos de produção ficarão (Ex: public_html ou subpasta)
TARGET="/home/seu_usuario/public_html/sua-aplicacao"
# Diretório do repositório Git Bare
GIT_DIR="/home/seu_usuario/deploy/seu-projeto.git"
# Comando para extrair os arquivos para a pasta de destino
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f main
# Ajuste de permissões (opcional)
chmod -R 755 $TARGET
echo "✅ Aplicação atualizada com sucesso!"
Copiar3. Importante: Dê permissão de execução ao arquivo:
chmod +x hooks/post-receive
Copiar4. Vinculando Local e Remoto
Volte ao terminal do seu computador (local) para conectar os dois pontos:
1. Adicione o servidor como um "remote":
# Estrutura: git remote add [nome] [usuario]@[ip-ou-dominio]:[caminho-do-repositorio-bare]
git remote add live ssh://usuario@seudominio.com.br/home/usuario/deploy/seu-projeto.git
Copiar5. Executando o Deploy
Sempre que desejar enviar as alterações para o servidor, utilize:
git push live main
Copiar- O Git enviará os commits para o repositório bare.
- O script post-receive será acionado.
- Os arquivos serão extraídos automaticamente para a pasta definida em $TARGET.
Análise Técnica e Implicações
Pontos Fortes:
- Velocidade: Apenas os arquivos alterados (deltas) são transferidos.
- Confiabilidade: Elimina o erro humano de esquecer arquivos em transferências manuais.
- Simplicidade: Não exige ferramentas pesadas de CI/CD (como Jenkins ou GitHub Actions) para projetos menores.
Riscos e Limitações:
- Segurança: Se você usar senha em vez de chaves SSH (RSA/Ed25519), precisará digitá-la em todo push. Recomenda-se configurar authorized_keys.
- Ambiente: Este método apenas move arquivos. Se o seu projeto exigir compilação (ex: npm install ou composer install), você deve adicionar esses comandos dentro do script post-receive.
Alternativa:
Para projetos complexos, considere o GitHub Actions. Ele permite rodar testes automatizados antes de realizar o deploy via SSH, garantindo que código quebrado não chegue à produção.