DEV Community

Lucas Pereira de Souza
Lucas Pereira de Souza

Posted on

Deploy automático via SSH

logotech

## Automatizando Deployments: SSH, Scripts e Ferramentas Poderosas

Deployar código em um servidor remoto pode ser uma tarefa repetitiva e propensa a erros. Felizmente, existem diversas ferramentas e técnicas para automatizar esse processo, tornando-o mais rápido, eficiente e confiável. Este post explorará algumas das estratégias mais comuns, focando em SSH, scripts personalizados e ferramentas populares.

1. SSH: A Base da Conexão Segura

O Secure Shell (SSH) é o protocolo fundamental para acessar e gerenciar servidores remotos de forma segura. Ele permite que você execute comandos no servidor como se estivesse localmente, criptografando a comunicação entre sua máquina e o servidor.

  • Conectando via SSH: A forma mais básica de conectar é usando o comando ssh. Por exemplo: ssh usuario@servidor.com. Substitua usuario pelo seu nome de usuário e servidor.com pelo endereço do servidor.
  • Autenticação por Chave: Para evitar digitar a senha toda vez, configure a autenticação por chave SSH. Gere um par de chaves (privada e pública) em sua máquina local. A chave pública é copiada para o servidor, permitindo que você se conecte sem senha.
  • Executando comandos remotos: Você pode executar comandos diretamente no servidor usando SSH. Por exemplo: ssh usuario@servidor.com \"ls -l /var/www\". Este comando lista o conteúdo do diretório /var/www no servidor.

2. Scripts SSH: Automatizando Tarefas

Scripts SSH permitem que você agrupe vários comandos e os execute em sequência no servidor remoto. Isso é ideal para automatizar tarefas como:

  • Atualização de código: Copiar os arquivos do seu projeto para o servidor.
  • Execução de migrações de banco de dados: Rodar comandos para atualizar a estrutura do banco de dados.
  • Reinicialização de serviços: Reiniciar o servidor web (Apache, Nginx) ou outros serviços após o deploy.

Exemplo:

#!/bin/bash
# Script para deploy

# Variáveis
USUARIO=\"usuario\"
SERVIDOR=\"servidor.com\"
DIR_REMOTO=\"/var/www/meu_projeto\"
DIR_LOCAL=\".\" # Diretório atual

# Copia os arquivos
rsync -avz --delete \"$DIR_LOCAL\" \"$USUARIO@$SERVIDOR:$DIR_REMOTO\"

# Executa comandos no servidor
ssh \"$USUARIO@$SERVIDOR\" \"cd $DIR_REMOTO && php artisan migrate\"

# Reinicia o servidor web (exemplo com Apache)
ssh \"$USUARIO@$SERVIDOR\" \"sudo systemctl restart apache2\"

echo \"Deploy concluído com sucesso!"
Enter fullscreen mode Exit fullscreen mode

3. Ferramentas de Deploy: Simplificando o Processo

Embora scripts personalizados sejam úteis, ferramentas de deploy dedicadas oferecem funcionalidades avançadas e simplificam ainda mais o processo.

  • rsync: Uma ferramenta poderosa para sincronizar arquivos entre sua máquina local e o servidor remoto. Ele compara os arquivos e transfere apenas as diferenças, tornando as transferências mais rápidas. É frequentemente usada em scripts de deploy.
  • Capistrano: Uma ferramenta popular baseada em Ruby que automatiza o deploy de aplicações web. Ela oferece controle de versões, gerenciamento de tarefas, suporte para múltiplos servidores e rollback (reversão para uma versão anterior) em caso de problemas.

Vantagens das Ferramentas:

  • Gerenciamento de versões: Facilitam o controle das versões do seu código.
  • Rollback: Permitem reverter para uma versão anterior em caso de falhas.
  • Automatização: Simplificam o processo de deploy.
  • Escalabilidade: Suportam múltiplos servidores e ambientes (desenvolvimento, staging, produção).

Escolhendo a Ferramenta Certa:

A escolha da ferramenta ideal depende das suas necessidades e do tamanho do seu projeto. Para projetos menores, scripts SSH e rsync podem ser suficientes. Para projetos maiores e mais complexos, Capistrano ou outras ferramentas de deploy podem ser mais adequadas.

Conclusão:

Automatizar o deploy é essencial para um desenvolvimento web eficiente. Ao dominar SSH, scripts e ferramentas como rsync e Capistrano, você pode agilizar o processo de deploy, reduzir erros e garantir que suas atualizações sejam entregues de forma rápida e confiável. Comece a experimentar com essas técnicas e encontre a combinação que melhor se adapta ao seu fluxo de trabalho.

Top comments (0)