Como configurar múltiplos VirtualHosts no Apache

Pessoal,

Quando desenvolvemos websites localmente, é fundamental simular ao máximo o ambiente de produção para evitar erros no momento em que o deploy será efetuado. Todos os projetos desenvolvidos na Verticis são desenvolvidos localmente nas máquinas dos desenvolvedores, e para melhor configurar os ambientes, utilizamos os hosts virtuais (VirtualHosts) do apache para simulá-los.

configurar-multiplos-virtualhosts-apache

Como exemplo, se estamos desenvolvendo alguma aplicação para o cliente XYZ utilizamos localmente os ambiente xyz.verticis.com.br.

Explicarei agora como fazer tais configurações.

1. A primeira coisa a se fazer é criar os redirecionamentos internos para que o windows aponte os domínios para seu ambiente local. Isso pode ser feito no arquivo hosts que funciona como um DNS interno.O arquivo hosts fica no diretório %windir%\System32\drivers\etc\ no windows, ou no diretório /etc/hosts/ no linux.Inclua os domínios que deseja apontar no fim do arquivo, informando seu ip local:

127.0.0.1        abc.verticis.com.br
127.0.0.1        xyz.verticis.com.br

2. Edite o arquivo de configuração do apache httpd.conf e inclua as informações de seus VirtualHosts:

NameVirtualHost 127.0.0.1:80

<VirtualHost 127.0.0.1:80>
ServerName abc.verticis.com.br
DocumentRoot "D:/workspace/web/abc"
</VirtualHost>

<VirtualHost 127.0.0.1:80>
ServerName xyz.verticis.com.br
DocumentRoot "D:/workspace/web/xyz"
</VirtualHost>

Onde:

NameVirtualHost – Informa ao apache as configuração do host virtual que você utilizará.
VirtualHost – Item de configuração de um VirtualHost.
ServerName – Nome de entrada do VirtualHost criado. Importante lembrar que para que a requisição chegue ao apache, o nome escolhido precisa estar configurado no arquivos hosts do windows, como fizemos no passo 1.
DocumentRoot – Diretório raiz de seu servidor, onde estará localizado seu arquivo index.

3. Reinicie o apache.
4. Abra o navegador e digita algumas das url’s que configurou como um VirtualHost (abc.verticis.com.br ou xyz.verticis.com.br). Os domínios agora irão apontar para seu projeto hospedado localmente. 😀

É muito útil tornar organizados os ambientes de desenvolvimento, principalmente quando várias pessoas trabalham no mesmo projeto. Alguns frameworks que utilizam sistemas de urls amigáveis (Symfony, por exemplo) requerem que a aplicação esteja sempre hospedada na raíz do domínio ou mesmo em um subdomínio, e isso pode ser feito com um VirtualHost.

Espero que seja útil!

12 Comentários
  • Responder Evandro Ribeiro

    23 de fevereiro de 2011, 22:42

    Uma pergunta idiota, mais para mim não ficou claro, quando crio um sub-dominio como no seu exemplo (abc.verticis.com.br) tenho que apontar ele para minha maquina, como fazer isso quando usamos Ip dinamico? o meu servidor local entende que é para redirecionar, mais o meu servidor remoto vai entender que deve direcionar para minha maquina, ao mesmo tempo que penso ser uma pergunta idiota penso que pode ser uma coisa que realmente deve ser levado em consideração. abraços parabéns pelo blog

  • Responder welington

    2 de junho de 2011, 11:58

    Estou usando o Apache 2.2.16 no Windows server 2003. O Apache, o php, o mysql e o phpmyadmin foram instalados e configurados pelo ZendServer.
    Segui o script acima e vários outros. Todavia, não consigo acessar a pasta onde está meu documento index.html pela Internet. Sempre cai no htdocs. Já tentei usar a pasta extras/httpd-vhosts, porém não funciona.
    Você teria alguma sugestão?
    Segue o script:
    NameVirtualHost *:80
    #
    #
    #********************** site

    ServerAdmin comunicacao@pibr.net.br
    DocumentRoot C:Program FilesZendApache2htdocspibrasil
    ServerName http://www.pibr.com.br # nomedosite.com.br
    ServerAlias http://www.pibr.com.br pibr.com.br pibr
    ErrorLog c:Program FilesZendApache2htdocspibrasillogspibr.net.br-access_log #onde está o arquivo de log: colocar uma pasta /log com o arquivo em cada site
    # define quem poderá acessar o diretório que contem as páginas do site
    # como está abaixo, qualquer um poderá acessar

    AllowOverride All
    Order Allow, Deny
    Allow from All

    Também já configurei o etc/hosts como citado acima

  • Responder Hugo Magalhães

    2 de junho de 2011, 14:30

    Welington, pelo que vi no seu exemplo você não definiu os nós VirtualHost no httpd.conf, certo?

    Abraços,

  • Responder Felipe

    24 de agosto de 2011, 23:25

    E ae, bom tuto…
    Te perguntar, consigo configurar os Vhosts em quase todas as máquinas q eu vejo, porém tem uma em específico que quando eu faço toda a configuração, todos os novos domínios apontam para o Index Of, engraçado que isso tá acontecendo no EasyPHP… Sabe me dizer oque acontece? Ou se puder postar um arquivo padrão meio que genérico para os outros…

    Valeu.

  • Responder Rafael Wendel Pinheiro

    23 de setembro de 2011, 18:03

    Estou com o mesmo problema.

    Faço tudo, mas quando vou acessar, sempre ele cai na raiz do servidor do wamp.

    Ao inves de ir para http://localhost/meu_projeto
    Ele vai para http://localhost

    Alguma dica?

    Abs

    Rafael

  • Responder Ricardo

    30 de agosto de 2012, 11:15

    Bom dia Hugo, mesmo configurando dois domínios diferentes com dois “DocumentRoot” distintos ao entrar no navegador ele cai sempre na primeiro item configurado, alguma idéia?

  • Responder Diego

    20 de janeiro de 2013, 17:36

    Tudo bem Hugo?

    Estou com o mesmo problema do Rafael e do Ricardo. Só vai para o 1o vhost…

    Sabe como arrumar isso?

    Valeu!

  • Responder Bruno

    20 de novembro de 2013, 13:29

    Boa tarde.

    Estou com o mesmo problema do Rafael, Ricardo e o Diego..

    Alguém sabe como resolver isso?
    Obrigado.

  • Responder Cornélio José Wiedemann

    2 de dezembro de 2013, 11:21

    putz brow, show de bolacha ein
    curti mt seu post
    vou repassar pros meus alunos

    ps: show de bolacha é uma giria descolada que usamos aqui nas nossas aulas
    abração

  • Responder Matheus

    23 de janeiro de 2014, 16:03

    Boa tarde.
    É o seguinte.. configurei o virtual host conforme descrito acima no tutorial.
    deu certo.. vlw msm.. parabéns.
    só qi agr quando tento acessar outros projetos na pasta sem configurar um virtual host.. sempre cai no msm projeto que configurei o virtual host.. e da not found;
    tipo.. quando entro: localhost/magento
    ele vai para virtualhost.com i da not found..
    n sei si deu pra entender mais si alguem puder ajudar olbrigado..

  • Responder douglas88

    12 de junho de 2015, 18:59

    Isto funciona legal no wampserver (uso na minha máquina) , mas eu queria que quando eu usásse o wordpress multsite e ao ir criando os sites o servidor já fosse aceitando os subdomínios , sem eu ter de ir nesses arquivos e ficar criando antes de criar os sites . Na hospedagem funciona , mas queria de forma local , para eu testar no wampserver , mas não encontro isso em lugar algum . acho que não tem como … . Voçê saberia ?

Escreva um comentário