Olá galera…
Nos últimos meses eu comecei a trabalhar com o Vagrant.
Pra quem não conhece, o vagrant em resumo é uma máquina virtual para que você possa configurar um servidor local que tenha as mesmas configurações do seu servidor de produção por exemplo, você trabalha em casa no windows, com php 5.2 mas o seu servidor de produção é um ubuntu com php 5.4, então usando o vagrant você cria uma máquina virtual com a exata configuração do seu servidor de produção. Simples assim!
Se ainda não estiver claro pra você, sugiro que você dê uma lida no post do Guto Carvalho onde ele explica passo-a-passo como utilizar o vagrant.
Depois de algum tempo trabalhando com o vagrant, eu não conseguia enxergar uma forma de trabalhar com múltiplos sites em apenas uma instancia do vagrant. Eu sempre criava novas máquinas virtuais e ficava alternando em cada uma das máquinas para cada projeto que eu estivesse trabalhando. Isso porque o vagrant faz um mapeamento interno e o redirecionamento de portas. Não sei se a galera também trabalha assim, mas eu estava cometendo esse vacilo, e como isso não estava me atendendo eu resolvi partir para essa solução descrita abaixo (se alguém tiver outras formas, compartilhe nos comentários).
Eu havia conversado com o meu amigo Lucas Mezêncio sobre o redirecionamento de portas, pois não dá pra fazer (ou pelo menos eu não sei fazer) isso pelo arquivo hosts, então ele até propôs a usar um programa de redirecionamento de portas chamado POW. Mas mesmo assim eu ainda não havia encontrado uma forma de solucionar o problema.
Minha solução:
1 – Com o vagrant ja rodando, acesse o mesmo via ssh.
2 – Vá em /etc/apache2/sites-available/
e crie 2 arquivos:
- site1.local
- site2.local
3 – Em seguida, faça os comandos:
4 – Vá em /var/www/
e crie:
/var/www/site1/index.php
Em seguida cire:
/var/www/site2/index.php
5 – No arquivo /etc/hosts
adicione:
6 – No arquivo /etc/apache2/ports.conf
:
7 – Reinicie o apache (sudo /etc/apache2 restart
)
8 – Edite o arquivo Vagrantfile colocando:
9 – Reinicie o vagrant
10 – Pronto… acesse localhost:8001
e você verá “site1” e em localhost:8002
e você verá “site2”
Obrigado pela leitura ???
Comentários são bem vindos, não sei ainda se essa é a melhor forma,
mas a principio é a forma que eu encontrei e resolvi compartilhar com vocês.
Obs: Pra quem usa mac e quiser usar o POW (citado acima) você ira mapear as portas 8001 e 8002
e poder acessar via site1.dev e site2.dev respectivamente. =)
Se você já está usando vagrant em seu ambiente de desenvolvimento, deixe um comentário com SIM, se você ainda não está usando vagrant em seus projetos locais, deixe um comentário com NÃO.
Não se esqueça de nos seguir nas redes sociais, por que você não pode ficar de fora dos novos posts.
- Curta nossa página no facebook ?
- Não perca as atualizações no twitter ?
- Veja as dicas no instagram ?
- Siga nossos repositórios no github ⌨️
- Faça parte da nossa lista de desenvolvedores ?
Hashtags
#vagrant #virtualHots #multiplos #sites #virtualhost #vm #virtualbox
Post criado em Junho de 2013 e atualizado em Janeiro de 2019
Creditos da foto de destaque para NeONBRAND no Unsplash
18 Comments
Alexandre · 2013-06-27 at 22:36
Bom artigo Emerson,
Vou dar minha contribuição
Eu uso o vagrant já alguns meses e estava tentando fazer o mesmo então eu usei a seguinte solução, criei um IP fixo para meu vagrant e fiz as configurações abaixo:
/etc/hosts -> VM (Vagrant)
# Virtual Host
127.0.0.1 zf2_estudo.dev
127.0.0.1 localhost.dev
/etc/hosts -> Minha máquina
192.168.33.33 zf2_estudo.dev
192.168.33.33 localhost.dev
Meu virtual host no apache da VM: http://pastebin.com/QJrzfbgC
Meu Vagrantfile para quem quiser com configuração para usar mais de uma VM
http://pastebin.com/LWWP0tQC
Anonymous · 2013-06-27 at 22:52
Boa alexandre… acho interessante a galera compartilhar como usa, pois eu fiquei um tempão procurando uma solução!
Obrigado por compartilhar!
Anonymous · 2013-06-27 at 22:45
Muito bom o post, Brôga!!
Mandou bem!! =D
(só faltou falar que a sua VM tá rodando Ubuntu.. =P)
Anonymous · 2013-06-27 at 22:52
é nois mano doido… agora faz um quadradinho de 8 para nooooosssa alegria!
Diego Henrique · 2013-06-27 at 23:15
Eu prefiro usar uma VM por projeto, principalmente pq eu faço um shellscript de provisão que já sobre a maquina completa e põe tudo rodando de forma automatizada. Dai fica fácil compartilhar.
Falando nisso, fiz uma vm com debian7 + php5.5, se vcs quiserem, posso compartilhar 🙂
PS.: sugiro uma correção, o vagrant não é uma VM, o Vagrant é um wrapper para softwares de virtualização, como o virtualbox e tals. 😀
Anonymous · 2013-06-27 at 23:53
Valeu Diego,
Você sempre tem boas contribuições…
Eu precisava de colocar tudo numa mesma vm pois tenho vários projetos simples (geralmente sites em wordpress) que preciso de fazer manutenções rápidas.
Anonymous · 2013-06-29 at 16:39
Diego, pôe num server e publica o link aí pra galera 😉
Diego Henrique · 2013-06-29 at 17:18
Pode deixar. Inclusive eu fiz essa box pro nosso projeto, nem pensei em deixa-la publica. Vou providenciar durante a semana… 🙂
Anonymous · 2013-06-29 at 18:59
Mas aí é só disponibilizar a imagem sem os códigos =)
Romeu Godoi · 2014-03-11 at 22:21
Kd a VM? 😀
Anonymous · 2013-06-29 at 16:46
Broga, eu prefiro uma máquina por projeto também, mas nesse seu caso, o ideal era criar diferentes vhosts pra diferentes projetos, cada um respondendo um endereço diferente (ex. Site1.dev e site2.dev) e configura no hosts da sua máquina pra apontar os endereços pro IP da VM. Eu estou sem o note aqui agora, mas chegando em casa eu vejo e te mando.
Anonymous · 2013-06-29 at 18:29
O esquema que falei:
1. coloca o IP da VM fixo:
config.vm.network :hostonly, “192.168.33.10”
2. Coloca os endereços dos sites no seu /etc/hosts da máquina “real”:
192.168.33.10 site1.dev site2.dev site3.dev
3. Configura os Vhosts no apache. Por exemplo, pro site1.dev, cria um /etc/apache2/sites-available/site1.dev com a configuração:
ServerName site1.dev
DocumentRoot /var/www/site1
ErrorLog /var/log/httpd/error.site1.log
LogLevel warn
CustomLog /var/log/httpd/access.site1.log
Ativa o vhost:
$ a2ensite site1.dev
4. Acessa no seu browser com http://site1.dev/ =)
Obs.: o ports.conf você deixa a configuração padrão do apache.
Rogerio Prado de Jesus · 2013-06-30 at 15:52
Olá, Emerson, parabéns pelo post, é muito bom ter mais gente compartilhando sobre essa super ferramenta!
Uma dica: já existem plugins para tratar o problema de múltiplos host, tanto no estilo “/etc/hosts”, como você fez, como no estilo “/etc/resolver” (como a sugestão do POW).
A página é https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Plugins, e tem bastante coisa legal lá!
Até mais!
Anonymous · 2013-06-30 at 17:32
Que doido Rogério… nem sabia da existencia desses plugins! Obrigado pelas dicas!
João Barbosa · 2014-06-10 at 16:35
Me salvou hoje! Só pode atualizar ele para a versão mais nova do Vagrant 🙂
Rafael Valoto · 2015-04-25 at 21:27
Muito bom esse POST, creio que essa é a forma mais correta de se trabalhar com o vagrant, e tbm temos a opção de configurar um banco de dados em outra VM, para que aplicações fiquem separadas do servidor de banco de dados, eu pelo menos faço assim, e consegui aprender muito tendo que configurar o banco para acesso externo e permissões de usuários etc…
emersonbroga · 2015-04-25 at 21:36
Rafael, esse post é bem velho, tenho que atualiza-lo… atualmente eu to usando o https://github.com/fideloper/Vaprobash
Rafael Valoto · 2015-04-25 at 21:59
Legal, não conhecia esse Vaprobash, então vou ficar esperando por esse post, seria uma boa.