Back-End

4 jan, 2016

Como usar Vagrant para melhorar seu processo de desenvolvimento Web

Publicidade

Uma grande parte dos websites em produção está hospedada em sistemas baseados em Linux. No entanto, a grande maioria dos desenvolvedores Web roda Windows ou Mac OS X em suas máquinas de desenvolvimento.

O Vagrant é uma aplicação que cria e configura ambientes de desenvolvimento virtuais. Ele pode ser usado como uma solução mais simples em torno de software de virtualização, como VirtualBox, VMware, KVM e Linux Containers (LXC), e em torno de software de gerenciamento de configuração, como Ansible, Chef, Salt e Puppet.

Leia este artigo e aprenda a usar Vagrant para configurar facilmente o ambiente de desenvolvimento de aplicações Web de uma forma que seja o mais próximo possível do meio ambiente baseado em Linux que você tem no seu servidor de produção.

Introdução

Você provavelmente é  um fã do Composer, e cria seus próximos projetos usando um desses frameworks da moda. Ou, talvez, você seja um mestre do frontend escrevendo partes complexas de código em JavaScript e CSS, compilando-os a partir de JSX ou menos arquivos, configurando bibliotecas por meio do Bower, e o projeto que está construindo está usando Grunt, produzindo simultaneamente testes unitários e de código. Claro que, em seguida, você despeja tudo no GitHub.

Se tudo isso faz parte de sua vida cotidiana, então parabéns! Você passou em todos esses testes. A partir de agora, você é um daqueles desenvolvedores felizes que passaram mais de uma semana resolvendo como configurar corretamente o grupo inteiro de ferramentas.

Mas você é apenas um daqueles que têm o sonho de ser um mestre no desenvolvimento de aplicações Web modernas? Então, apresso-me para agradá-lo, eu estou aqui e aprendi recentemente várias coisas úteis que eu percebi que seriam um verdadeiro presente para os desenvolvedores novatos. Então eu decidi escrever este artigo.

O que é Vagrant?

Durante vários anos, eu ouvi sobre Vagrant, e você provavelmente também ouviu vagamente sobre essa ferramenta para a rápida implantação de máquinas virtuais configuradas. Mas cada vez que eu lia outro artigo sobre o Vagrant, me queixava da excessiva complexidade das regras.

Eu não gosto de martelar minha cabeça com muita informação. De alguma forma, era mais fácil colocar tudo o que fosse preciso no servidor através do “sudo apt-get install [programa-name]” e adicionar manualmente novas configurações em nginx, tomando como base a configuração antiga.

Mas, depois de ler há poucos dias as instruções na documentação do Laravel, eu percebi que não é tão assustador, e um desejo de ensinar programação para o meu amigo foi o último fator, porque eu ainda poderia personalizar sua máquina com Vagrant.

Então, o que é Vagrant? O Vagrant é uma aplicação que cria e configura ambientes de desenvolvimento virtuais. Ele pode ser usado como uma solução mais simples em torno de software de virtualização como VirtualBox, VMware, KVM e Linux Containers (LXC), e em torno de software de gerenciamento de configuração, como Ansible, Chef, Salt e Puppet.

Desenvolvedores Laravel criaram a sua imagem de máquina virtual para Vagrant, que já contém todas as ferramentas e instrumentos que você precisa para um desenvolvimento feliz.

Como resultado, juntamente com um pequeno utilitário chamado Homestead, também pensado para trabalhar junto com o Laravel com todo o ambiente de uma forma fácil. Para uma lista de principais componentes instalados em sua imagem, leia a documentação.

Entre outros instrumentos não mencionados estão coisas como composer e git. Em geral, eles já têm tudo o que você precisa para seus propósitos. Você e eu só precisamos entender um pouco sobre como funciona o Vagrant e o Homestead e acalmar a coisa toda para usar em seu trabalho diário.

E não tem que usar esse conjunto apenas para projetos com base em Laravel, o script Homestead fornece um meio simples de manter vários projetos de desenvolvimento por meio de um arquivo de configuração simples que lhe permite gerenciar bancos de dados e servidores de configuração nginx.

Como resultado, temos o quase análogo Denwer, mas estamos lidando com um servidor Linux completo, que, se necessário, podemos facilmente começar a gerenciar manualmente e instalá-lo em outros componentes e, assim, crescer como desenvolvedores mais sérios e experientes.

Configuração

Na verdade, tudo que você precisa fazer é instalar o Vagrant e o VirtualBox em seu computador. Em seguida, mexa um pouco com as suas definições.

Neste artigo, eu só vou falar sobre como fazê-lo em um ambiente Windows, porque acho que usuários Linux são capazes de fazer tudo sozinhos com as instruções da documentação.

Claro, isso pode não funcionar sem alguns problemas. Se o seu nome de usuário é escrito em letras cirílicas do Windows (como o meu próprio nome), então prepare-se para erros durante a execução das instruções.

Nesse caso, eu recomendo a criação de uma pasta em ambiente de sistema chamada VAGRANT_HOME sem especificar os caracteres cirílicos. Se você não sabe como fazê-lo, leia sobre isso aqui, por exemplo. Em seguida, abra as configurações e especifique a pasta para armazenamento de máquinas virtuais VirtualBox, que também não deve usar caracteres cirílicos. Agora as ferramentas irão funcionar corretamente e não darão quaisquer erros.

Assim, com a fundação que criamos para você, é hora de escrever alguns comandos. Nós pressionamos no teclado as teclas Win + R, e será aberta uma janela que mostra a frase “Há um reinício após a instalação do Vagrant”, então ele vai se tornar disponível no console. Basta digitar primeiro a palavra “vargrant” no console, e verificar se temos um conjunto correto das nossas ferramentas.

Se você tiver problemas, verifique sua variável PATH. Ela deve incluir o caminho para os binários Vagrant. Em seguida, reinicie a máquina, se você não tiver feito isso.

Depois, na documentação oficial, é sugerido clonar um projeto git ou, pior ainda, configurá-lo usando composer e Homestead. Eu estou no Windows e não estou usando git nem composer.

E, de qualquer maneira, criei esse ambiente de máquina virtual e o preparei para me poupar do trabalho de instalar manualmente todas essas ferramentas… Então, não vamos nos envolver em abordagens complicadas e apenas ser antiquados, fazendo o download de um arquivo zip do github da biblioteca no seu computador e descompactando-o em uma pasta.

Desempacotado? Agora, para instalar a biblioteca no computador, você deve executar o init do Homestead. Mas aqui, novamente, há algum problema. Esse comando irá trabalhar em nosso computador somente quando a biblioteca principal Laravel estiver instalada com o Composer.

Outra opção é executar o script de init.sh, encontrado ali mesmo, mas, para fazê-lo funcionar, ainda precisamos do shell Linux. Como você pode ver, no Windows não existe uma solução fácil.

Por isso, vamos fazer algumas coisas novamente manualmente – abra o arquivo init.sh e estude seu conteúdo. Existem apenas 11 linhas de código. Como você pode ver, para configurar a biblioteca, só precisamos copiar vários arquivos na pasta ~ / .homestead. O sinal ~ denota o diretório home do usuário atual. Eu tenho essa definição em “C:\Users\Test\”.

Se você analisar como seus scripts trabalham, então chegamos à conclusão de que precisamos dos seguintes arquivos:

  1. src/stubs/Homestead.yaml – na pasta ~/.homestead
  2. src/stubs/after.sh – na pasta ~/.homestead
  3. src/stubs/aliases – na pasta ~/.homestead
  4. Vagrantfile
  5. scripts/* (todos os arquivos nesta pasta)

Crie uma pasta .homestead no diretório home do usuário e copie os arquivos para ele. Será uma pasta com o script de controle por meio do qual vamos conseguir nossa máquina virtual.

De qualquer forma, você não pode criar um arquivo que comece com um período, por meio de uma interface padrão do Windows. Para realizar essa tarefa, tire proveito de algo como Far Manager ou Total Commander.

Estamos quase prontos para o trabalho direito com nossa máquina virtual. Para acessar nosso carro, também precisamos criar chaves SSH. Aqui vamos usar o conjunto de ferramentas Putty que iremos usar mais tarde para gerenciar o servidor.

Baixe o PuTTYgen, gere as chaves públicas e privadas e armazene-as na pasta ~/.ssh. Para gerar deve pressionar o botão Gerar, em seguida, passar um pouco o mouse no meio do programa para gerar uma chave aleatória, e então você pode salvar a sua chave.

Além disso, quando você salva, será solicitado a preencher a frase-passe, mas nessa fase não precisamos dela. Portanto, mantenha sua chave sem uma senha e não preste atenção no aviso do Putty para a criação de tal chave. Nós só precisamos de uma máquina de teste, e não de um servidor verdadeiro de batalha, por isso não é tão ruim assim.

A chave pública será salva com o seguinte nome: “~/.ssh/id_rsa.pub”. Ao mesmo tempo, precisamos da chave privada armazenada em dois formatos: padrão para Putty (botão Salvar chave privada, o nome do arquivo – ~/.ssh/putty_private.ppk, por exemplo) e no formato OpenSSH (use o “Export key OpenSSH ” no menu conversões, o nome do arquivo deve ser ” ~/.ssh/id_rsa”).

Precisamos da primeira chave privada para nos conectar ao servidor pelo programa Putty. A segunda é usada para configuração e inicialização do servidor por meio de scripts Homestead.

Agora precisamos apenas ajustar algumas das configurações antes de iniciar o nosso servidor quando necessário.

Abra em qualquer editor o arquivo Homestead.yaml. Ele é o único arquivo de configuração por meio do qual podemos especificar todos os parâmetros básicos de nossas máquinas virtuais. As configurações padrões já estão bem definidas. Assim, podemos começar aqui e não temos que mudar nada. Vou explicar brevemente seu conteúdo:

A seção “folders” indica qual a ligação das suas máquinas virtuais e seu sistema real para que você possa facilmente editar os arquivos em uma máquina virtual por meio do seu editor favorito no sistema principal.

A seção “sites” é para a configuração do nginx e, novamente, tudo é muito simples. Acabamos de fazer o link com o domínio do diretório no servidor.

A seção “databases” lista os nomes dos bancos de dados que serão criados durante a inicialização da máquina virtual. Aqui, de fato, tudo o que você precisa saber sobre a configuração do nosso sistema.

Como na seção “folders”, a pasta padrão contém um link para ~/Code com a mesma pasta em uma máquina virtual – não se esqueça de criar esse diretório em sua pasta de usuário. Posteriormente, seremos capazes de trabalhar com arquivos em seu servidor.

Além disso, mantenha em mente que o formato yaml pode ser ligeiramente diferente do que o que você espera em relação à sua abordagem para armazenamento de dados. Portanto, se você adicionar suas opções, considere que o número de espaços é importante aqui, pois por meio deles é definida a profundidade da hierarquia dos valores. Para mais informações, você pode ler mais sobre este formato, por exemplo, na Wikipedia.

Executando um servidor virtual

E, finalmente, chegamos à parte divertida. Agora queremos executar nossa máquina virtual. Abra um prompt de comando da pasta ~/.homestead e execute o comando mágico:

vagrant up

Se você fez tudo corretamente, vai começar a carregar a imagem do VirtualBox para desenvolvedores Laravel.

Se o Vagrant relatou um problema, não se desespere: leia o texto das mensagens de erro e tente procurar esse texto com o Google. O mais provável é que já exista um grande número de pessoas que enfrentaram um problema semelhante, e de alguma forma resolveram.

Se a imagem foi instalada com êxito em seu computador, e o erro ocorreu durante o carregamento da máquina, tente abrir o VirtualBox e executá-lo manualmente sem o Vagrant para ver o que acontece. O Vargrant é de fato um simples complemento para o VirtualBox. Você pode facilmente executar uma máquina virtual própria, se for necessário.

Se tudo correu bem, depois de alguns minutos sua máquina virtual Vagrant configura totalmente e instala todos os componentes e as opções. E você já pode se conectar com segurança ao seu servidor. Você pode usar, por exemplo, o Putty.

Conectando-se ao servidor

Vamos baixar o arquivo putty.exe e conectá-lo ao nosso servidor. Configure o programa da seguinte forma: insira o endereço do servidor, porta e usuário, bem como na seção “Connection -> SSH -> Auth”.

Não se esqueça de especificar o caminho da chave privada que você gerou. Em seguida, salve todas essas configurações em uma sessão sob algum título, assim você não precisa digitá-las toda vez que iniciar o programa e use o botão “Abrir”.

Se você foi cuidadoso e fez tudo certo, pode abrir uma janela de terminal de seu próprio servidor virtual.

Em algumas máquinas, você pode encontrar o seguinte problema. O Vagrant por alguma razão não aceita o arquivo de chave criado pelo Putty e gera a sua própria, em “sua opinião”, mais segura versão.

Essa chave é armazenada no endereço “~\.homestead\.vagrant\machines\default\virtualbox\private_key”. Se você não pode se conectar com a sua chave no servidor, então você precisa usar a chave gerada pelo Vagrant.

Antes de usá-la, abra novamente o programa PuTTYgen, importe o arquivo criado pelo Vagrant (menu Conversions -> Import key) e salve-o em um formato do Putty (botão “salvar chave privada”), e, em seguida, use esse arquivo para conectar-se ao servidor por meio do putty.

Nós estamos prontos! O primeiro marco no caminho para conquistar o mundo do desenvolvimento de aplicativos Web profissional foi alcançado. Agora, vamos escrever mais algumas linhas e definir o Laravel, só para ter certeza de que temos no servidor tudo funcionando corretamente. Digite sucessivamente os dois comandos a seguir em seu servidor:

cd Code
composer create-project laravel/laravel Laravel --prefer-dist

E vá descansar. Quando você retornar, abra a mesma pasta ~/Code que você criou em seu diretório home. Se tudo correu bem, então você deve esperar uma surpresa lá, e o nome da pasta Laravel.

Esse é o caminho! O servidor trabalhou alguma coisa em home, e você vai ter em seu computador a pasta Laravel com todos os arquivos necessários do framework. Para ver o nosso aplicativo no navegador: abra o arquivo hosts no modo de administrador para poder editá-lo e adicione a seguinte linha:

192.168.10.10 homestead.app

Agora, abra o seu navegador para homestead.app.

Em geral, isso é quase tudo o que você precisa saber. Se você chegou a esta parte do artigo, e você vai fazê-lo, isso significa que você tem um servidor web completo próprio, no qual você tem todas as peças de tecnologia necessárias para trabalhar.

Você está apenas um pouco longe de saber como pará-lo, atualizar sua configuração e removê-lo completamente do sistema. Para fazer isso, use o seguinte comando Vagrant, e não se esqueça de que, nesse caso, você tem que estar no diretório ~/.homestead:

# Ligar a máquina
vagrant up

# Desligar a máquina
vagrant halt

# Configurar novamente utilizando scripts Homestead.
# Se você modificou o arquivo de configuração - execute este comando,
# Vagrant novamente e configure sua máquina virtual
vagrant provision

# Remove completamente a instalação do sistema.
# Tenha cuidado, ele também irá remover o banco de dados, por isso não
# Esqueça de fazer uma cópia de backup dele antes de executar este comando
vagrant destroy

# E instale o programa Linux "ssh" em seu computador.
# E se você fizer tudo, então ainda vai haver problemas com a transmissão # Code para a área de transferência, então eu ainda darei uma cica: Use Putty # Aproveite a vida, é melhor, eu não vi nada no Windows
vargrant ssh

Conclusão

Tudo escrito neste artigo é apenas uma breve descrição de todos os recursos Vagrant. Estude os documentos oficiais e outros itens sobre essa ferramenta, se você tem um desejo de entendê-la mais profundamente.

Eu também aconselho você a ler os comentários em vários fóruns. Por vezes, são pessoas inteligentes por aí que escrevem coisas úteis que resolvem os problemas relacionados.

***

Dmitry Mamontov faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://www.phpclasses.org/blog/post/295-How-to-Use-Vagrant-to-Improve-Your-Web-Development-Process.html