Como instalar Vagrant e Homestead para desenvolver aplicações com o Laravel

Duarte Fernandes
4 min readNov 21, 2015

--

Eu escrevi esse tutorial em 2015, e desde então muita coisa mudou. Recomendo a leitura desta versão atualizada e levemente baseada no meu tutorial.

Vagrant oferece ambientes de desenvolvimento isolados e de fácil manutenção. Você pode iniciar uma máquina virtual com um simples comando no terminal, logar via ssh e acessar aplicações web em sua máquina local.

Com um ambiente isolado você garante que nenhum serviço entre em conflito com a sua aplicação, e tampouco se preocupa com a instalação de ferramentas em sua própria máquina.

A facilidade de manutenção permite personalizar sua máquina virtual através da edição de um único arquivo de inicialização, definindo quais pastas serão compartilhadas, mapeamentos de endereços/portas, programas que serão instalados ao iniciar uma nova instância da máquina, etc.

Nesse tutorial explicarei como instalar o Vagrant e o Homestead, além de dicas básicas de como usá-los.

Instalando o Vagrant

Visite a página de downloads e escolha o arquivo de instalação que se adequa a sua plataforma. Instale normalmente (siga as instruções do instalador).

Após a instalação, o comando vagrant será adicionado ao seu PATH para uso no terminal.

Além disso, é importante que você instale o VirtualBox (caso não possua ainda).

Homestead

Homestead é uma box oficial mantida pelo próprio time por trás do Laravel. Dentre os inúmeros softwares inclusos na box, destacam-se:

  • Ubuntu 14.04
  • PHP 5.6 / 7.0
  • HHVM
  • Nginx
  • MySQL
  • Postgres
  • Node (With PM2, Bower, Grunt, and Gulp)
  • Redis
  • Memcached (PHP 5.x Only)
  • Beanstalkd
  • Laravel Envoy
  • Blackfire Profiler

Instalando o Homestead

Siga os passos a seguir para instalar e configurar o Homestead em seu computador.

  • Baixe a box para a sua máquina local (você pode executar esse comando em qualquer diretório):
$ vagrant box add laravel/homestead
  • Clone o repositório Homestead na sua home:
$ cd ~$ git clone https://github.com/laravel/homestead.git Homestead
  • Entre nesse diretório e execute o seguinte script:
$ bash init.sh

Esse script irá gerar um diretório ~/.homestead, onde irá armazenar o arquivo de configuração Homestead.yaml

Configurando o Homestead

  • Abra o arquivo ~/.homestead/Homestead.yaml e confira se a opção provider está como virtualbox:
provider: virtualbox
  • Gere SSH keys e adicione o caminho no arquivo:
$ ssh-keygen -t rsa -C “<seu e-mail>”
  • No arquivo ~/.homestead/Homestead.yaml, adicone o caminho para a sua public key na propriedade authorize (algo como):
authorize: ~/.ssh/id_rsa.pubkeys:
- ~/.ssh/id_rsa
  • Configure as pastas que você queira compartilhar. Em map você referencia uma pasta local, em to uma pasta da máquina virtual. Você pode configurar quantas pastas quiser. Aconselho que faça como segue:
folders:
- map: ~/Code/laravel
to: /home/vagrant/laravel

Assim, você poderá acessar todos os arquivos em ~/Code/laravel (minha pasta local — note que também criei uma pasta “Code”) dentro da máquina virtual (/home/vagrant/laravel) e vice-versa. Essa opção é totalmente personalizável, cabe a você configurar de forma que te agrade.

Nota: Usuários do Windows podem ativar NTFS adicionando type: “nfs” dentro dessa propriedade.

Configurando sites Nginx

Nesse passo, mapearemos um domínio local para algum projeto. Você pode adicionar quantos sites você desejar, uma vez que uma box pode comportar inúmeros projetos.

Por exemplo:

sites:
- map: homestead.app
to: /home/vagrant/Code/<seu projeto>/public

Agora, adicione esse novo domínio no arquivos de hosts do seu sistema operacional (necessário permissão de superusuário / administrador):

Mac e Linux: /etc/hosts
Windows: C:\Windows\System32\drivers\etc\hosts

No final do arquivo, adicione a seguinte linha:

192.168.10.10 homestead.app

Note que o IP deve ser o mesmo que é indicado no arquivo ~/.homestead/Homestead.yaml

Executando a Vagrant Box

Navegue até o diretório ~/Homestead e execute sua Vagrant box:

$ vagrant up

Sua box será configurada de acordo com o arquivo ~/.homestead/Homestead.yaml.

Conecte-se a sua Vagrant box através do comando vagrant ssh, navegue até a pasta do projeto, configure seu novo projeto. Basicamente, você precisará:

  1. Mudar o arquivo .env.example para .env
  2. Caso você esteja desenvolvendo um projeto colaborativo, é necessário instalar as dependências do projeto. Execute o seguinte comando no diretório do projeto para instalar todas as dependências: $ composer install
  3. Execute o seguinte comando para gerar uma chave criptográfica para o app: $ php artisan key:generate

Conectando-se via ssh

Para entrar na sua máquina, simplesmente navegue até o diretório ~/Homestead e execute o comando vagrant ssh

Ou, você pode adicionar uma bash function ao seu arquivo ~/.bash_profile para entrar na máquina a qualquer momento, de qualquer diretório (altamente recomendado):

vm() {
cd /Users/duartemac/Homestead/Homestead
command=”$1"
if [ “$command” = “edit” ]; then nano ~/.homestead/Homestead.yaml else
if [ -z “$command” ]; then
command=”ssh”
fi
eval “vagrant ${command}”
fi
# voltar para o diretorio onde o comando foi executado
cd -
}
  • Ao digitar vm no terminal, você irá logar em sua Vagrant box.
  • Ao executar vm edit, o arquivo de configuração abrirá no editor nano (ou o seu editor de preferência)
  • Qualquer comando após vm com exceção dos anteriores será executado como argumento do comando vagrant

Conectando-se ao Banco de Dados

Você pode conectar-se remotamente ao banco de dados do Homestead a partir da sua máquina local. Caso você use alguma aplicação para gerenciar Banco de Dados (NaviCat ou Sequel Pro , por exemplo), conecte-se com:

Host: 127.0.0.1 
Porta: 33060 (MySQL)
User: homestead
Pass: secret

Uma vez conectado, crie um novo banco de dados para a aplicação.

Caso você não queira utilizar uma ferramenta de gerenciamento de banco de dados, entre na sua máquina via ssh (utilizando o alias homestead que criamos no passo anterior) e crie um novo database para a aplicação.

Abra o arquivo .env do seu projeto e acrescente as credenciais do banco, além do database que você criou.

Testando a nossa aplicação

Agora, tente acessar a sua aplicação no seu navegador a partir do domínio que configuramos anteriormente:

http://homestead.app

Conclusão

Vagrant é uma mão na roda para equipes, proporcionando um ambiente homogêneo de desenvolvimento. Com o Homestead, o seu time não se preocupará com a configuração do ambiente nas máquinas de cada membro, além da garantia que todos estão rodando versões dos softwares e pacotes.

Referências

  1. Laravel’s Homestead Documentation
  2. Vagrant’s Official Documentation
  3. Bash function por Freek Van der Herte

--

--