Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Deployment
Code

Como Implantar com Deployer

by
Difficulty:IntermediateLength:ShortLanguages:

Portuguese (Português) translation by Edgar Valfogo Santos (you can also view the original English article)

O fluxo de trabalho automatizado para implantação é uma ferramenta que todos os times de desenvolvedores devem ter. O processo de lançamento, quando é rápido, seguro e tolerante a erros, pode poupar muito tempo de desenvolvimento para grandes projetos. E as boas notícias são que existem muitas ferramentas boas para criar um ciclo de lançamento automatizado.

Neste artigo, eu irei apresentar para você uma ferramenta de implantação chamada Deployer. Eu gosto de utilizá-la por que é escrita em PHP, é fácil de instalar, e tem muitas ferramentas para integrar o processo de implementação dentro do fluxo de trabalho do seu time.

O Processo de Implantação com Deployer

Antes de tudo, vamos  ver a estrutura do processo de implantação, com Deployer. Esta estrutura consiste em três partes principais: Um servidor de implantação para iniciar a implantação/deploy, um servidor de produção ou testes para servir a sua aplicação e um repositório git para armazenar o código da sua aplicação.

Quando você inicia um processo de implantação, você inicia um script de implantação dentro do servidor de implantação. Depois disto, o servidor de implantação conecta-se ao servidor de produção com SSH e faz as manutenções necessárias para que o servidor de produção clone o repositório, atualize as dependências do composer e outras coisas que você precisar para ter sucesso na sua implantação.

Deployer Deployment Process

Para que todos fiquem confortáveis e seguros com esta cadeia de ações, nós vamos criar e instalar certificados SSH nos servidores e no repositório.

Instalando Certificados SSH

Nós precisamos criar uma chave de autenticação SSH no servidor de produção e compartilha-la com o repositório git. Se você não tem uma chave de autenticação SSH no seu servidor de implantação, execute ssh-keygen e siga as instruções. O gerador de chaves iráciar uma chave pública dentro do arquivo localizado em ~/.ssh/id_rsa.pub.

Agora você pode instala-la na conta do seu repositório. Se você não sabe como fazer isto, dê uma olhada no exemplo do GitHub que está nos links relacionados no fim deste artigo, ou peça ajuda para o seu serviço de repositórios.

Também é bom criarmos uma chave SSH no seu servidor de implantação para termos uma conexão segura com o servidor de produção. Use estes comandos para fazer um autenticador SSH de conexão sem senha entre os servidores de implantação e o de produção.

Com todos os autenticadores instalados, nós estamos prontos para instalar o Deployer.

Instalando o Deployer

A instalação do Deployer é tão fácil quanto a instalação do Composer. Você precisa abaixar o arquivo PHP e torná-lo global:

Vamos verificar a versão do Deployer para ver se tudo está instalado corretamente: 

Tudo parece perfeito, e nós estamos prontos para criar o nosso primeiro script de implantação.

Faça o Primeiro Script de Implantação

Para inicializar o Deployer para o seu projeto, execute dep init. Este comando irá executar um utilitário para gerar um script de implantação, que irá pedir para que você digite o tipo de projeto e o link do repositório para então criar o deploy.php dentro do diretório atual. Vamos dar uma olhada neste arquivo e suas principais funções que são utilizadas como base.

As funções set e get funcionam funcionam com configuradores de valores, e um atalho para um getter (para adquirir valores) pode ser utilizado com o comando run:

Cada valor de configuração pode ser sobreposto por cada host. Nós podemos instalar um caminho de implantação e um usuário SSH para a nossa aplicação no nosso script de implantação:

Para definir suas próprias tarefas, utilize a função task e run para executar um comando no servidor de produção:

E então execute com dep e o nome da função como parâmetro:

Agora temos que abrir o arquivo de implantação e trocar todos os parâmetros necessários para a sua aplicação.

Implantar para Produção

Nós já instalamos o Deployer, instalamos os certificados SSL para o servidor de implantação e de produção, e fizemos o script de implantação, então finalmente é hora de juntar tudo e fazer a nossa primeira implantação para produção.

Para implantar a sua aplicação, execute dep deploy:

Deploy to Production

Se algo der errado, você pode retornar (rollback) a última versão implantada em apenas um passo:

Parece fácil, não?

Agora vamos verificar o que foi criado no nosso servidor de produção. Graças ao Deployer, nós podemos fazer isso facilmente com atalhos de comandos. Execute dep ssh para conectar-se ao servidor diretamente utilizando a configuração do script de implantação, ou remotamente execute um comando via tunnel SSH com dep run. Este comando também suporta variáveis que nós configuramos no script.

Vamos dar uma olhada no local de implantação:

O principal é o diretório de releases, onde o Deployer armazena as últimas versões da nossa aplicação. Depois de cada implantação ou rollback, ele linka current para a implantação ativa atual. Por fim, temos o diretório shared, que armazena arquivos e pastas do shared_dirs e shared_files que nós configuramos no nosso script.

Na primeira implantação, Deployer copiará estes arquivos para um diretório compartilhado e criará o link do diretório releases para o diretório shared. Na próxima vez, ele irá adicionar apenas o link para dos arquivos implantandos para as pastas e arquivos no diretório compartilhado (shared) Você também pode trocar alterar qualquer arquivo em um diretório compartilhado e o Deployer manterá esta alteração para cada um das implantações a seguir - Por exemplo, isto é útil para arquivos de configurações.

Adicionalmente, se você tiver um arquivo composer.json  na raiz do seu repositório, Deployer irá chamar o Composer para criar um diretório "vendor" e atualizar todas as suas dependências dadas como necessárias. Se você não armazena o arquivo do Composer na raiz do seu diretório, você pode criar uma tarefa personalizada para executar as atualizações do Composer.

Agora é hora de integrar a aplicação implantada aos nossos processos.

Adicionando uma Tarefa Personalizada

Todos os times tem suas próprias configurações e processos de implantação para automatizar, então o Deployer tem ferramentas que facilitam a extensão das configurações padrões, facilitando a adição de tarefas personalizadas. Por exemplo, o seu servidor ou serviço de hosting pode ter a regra de armazenar aplicações e a raiz web em locais diferentes, sem a possibilidade de configurar Apache ou Nginx.

Mas há uma maneira de superar esta regra — usar links simbólicos. Então vamos adicionar uma tarefa para isto:

E, em seguida, adicioná-lo para a tarefa principal de implantar como parte de um ciclo de lançamento:

Execute o script de implantação novamente e verifique se tudo está correto com dep ssh.

Receitas de Terceiros

Deployer tem muitas receitas com terceiros que podem extender a funcionalidade básica. Nós podemos utilizar Composer para instala-los:

Eu gosto de utilizar a receita de notificação para Slack. Para habilita-lo, vá até a página de receita do Slack, clique no botão Adicionar ao Slack (Add to Slack), e selecione o canal para enviar notificações. Então nós teremos em mãos um webhook do Slack, que adicionaremos ao nosso código de implantação.

Depois destas alterações, Deployer irá enviar uma mensagem comom esta no seu canal de implantação:

Viewing Deployer in Slack

Agora você pode adicionar ao canal do seu time, assim todos que estão envolvidos serão notificados.

Conclusão

Neste tutorial nós instalamos Deployer e criamos um script de implantação que pode ser utilizado para implantar a nossa aplicação de um repositório git para um servidor de produção ou testes em apenas um clique.

Aprendemos também que pode ser integrado à processos de times - por exemplo, uma aplicação pode ser implantada automaticamente depois de alterações no master branch e uma notificação pode ser enviada para o canal do Slack sobre o sucesso da implantação.

Se você tiver perguntas, não exite em perguntar nos comentários deste artigo.

Leitura Adicional e Links Relacionados

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.