Deploy Automático com Git e SSH: Do Local para o Servidor (Passo a Passo)

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 init
Copiar

2. Renomeie a branch principal (opcional, mas recomendado):

git branch -M main
Copiar

3. Crie e versione seus arquivos:

git add .
git commit -m "Initial commit"
Copiar

3. 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
Copiar

3.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
Copiar

3.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
Copiar

2. 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!"
Copiar

3. Importante: Dê permissão de execução ao arquivo:

chmod +x hooks/post-receive
Copiar

4. 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
Copiar

5. 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.