Este artigo ensina como fazer para que seu Apache aceite requisições com um ou mais domínios diferentes. Antes de mais nada, lembre-se de que é preciso que você registre o domínio que você deseja usar e que exista um servidor de DNS, como o Bind, configurado e rodando em seu servidor, de forma que ele intercepte as requisições e as envie para o Apache. O escopo deste artigo é apenas a configuração do Apache, e não a do Bind ou como fazer para pagar e registrar um domínio na internet.
Com a técnica ensinada aqui, você poderá receber em seu servidor requisições para vários domínios (ex: www.dominio1.com.br, www.dominio2.com.br, www.dominio3.com.br, etc.) e processá-las pelo Apache para que as chamadas sejam redirecionadas para a pasta virtual correta (ex: /var/www/site1, /var/www/site2, /var/www/site3). Se não é exatamente isto que você deseja, mas é próximo, ou se é isso e mais um pouco, você pode tentar vasculhar a documentação do Apache 2 sobre a criação de Virtual Hosts, clicando aqui.
Vamos partir de um exemplo... imagine que desejemos configurar os seguintes domínios:
Consideremos que:
1- Os sites existem e já respondem perfeitamente com os endereços:
[nome de seu servidor]/site1/
[nome de seu servidor]/site2/
[nome de seu servidor]/site3/
2- Os três domínios foram comprados em um serviço de registro de domínios, a fatura está paga e todos já se encontram devidamente registrados;
3- O Bind (ou outro servidor DNS) de seu servidor está funcionando e está configurado para redirecionar as chamadas a estes domínios para seu inocente Apachezinho...
4- No serviço de registro de domínios, você já configurou o uso de seu DNS (nome e IP dos DNS primário e secundário) e já esperou o tempo necessário para a replicação desta informação pela rede.
É claro que estas condições podem ser ligeiramente modificadas de acordo com sua situação, mas, em geral, é isso de que precisamos para começar a trabalhar...
Para o Apache 2, as diversas configurações a respeito do acesso às pastas virtuais ficam em contêineres <VirtualHost>. Estes contêineres normalmente ficam no arquivo /etc/apache2/apache2.conf. Evidentemente, modificar este arquivo é permitido apenas ao root e as modificações exigem que se reinicie o Apache para tomar efeito.
Cada domínio novo supõe uma nova configuração do VirtualHost, ou seja, um novo contêiner. Assim, para a realização do exemplo, precisaremos de 3 contêineres, um para cada domínio, conforme segue:
O que isso tudo significa?? Vamos por partes...
VirtualHost *:80 - Inicia a tag do contêiner, informando que estamos interessados na porta 80 (protocolo http). Se você, por algum motivo qualquer, usa outra porta, substitua o "80" pela porta desejada. O "*" pode ser substituído pelo IP interno de seu servidor.
ServerName www.dominio1.com.br - Indica o nome do domínio que você deseja configurar. Evidentemente, coloque o domínio que você registrou e que está configurado no Bind.
ServerAlias dominio1.com.br *.dominio1.com.br - Isto garante que quaisquer chamadas a este domínio vão ser redirecionadas para a pasta virtual que está sendo configurada.
DocumentRoot /var/www/site1 - Enfim, a referência no sistema de arquivos para a pasta virtual!! Ou seja, em que canto do disco está o seu portal. Note que, aqui, você só pode especificar uma pasta por VirtualHost. Por isso que necessitamos de três contêineres VirtualHost configurados!!
Se, por algum motivo, esta configuração não funcionar, então experimente acrescentar a linha:
Antes da declaração do primeiro VirtualHost.
Bom, pessoal, esta configuração é razoavelmente simples e indolor. É claro que você pode tornar a sua configuração do VirtualHost muito mais complexa, acrescentando as diversas diretivas suportadas pelo mesmo. Mas isto já seria tema para um novo artigo...
Se gostaram, detestaram, ajudou ou atrapalhou, então COMENTEM!!!
Com a técnica ensinada aqui, você poderá receber em seu servidor requisições para vários domínios (ex: www.dominio1.com.br, www.dominio2.com.br, www.dominio3.com.br, etc.) e processá-las pelo Apache para que as chamadas sejam redirecionadas para a pasta virtual correta (ex: /var/www/site1, /var/www/site2, /var/www/site3). Se não é exatamente isto que você deseja, mas é próximo, ou se é isso e mais um pouco, você pode tentar vasculhar a documentação do Apache 2 sobre a criação de Virtual Hosts, clicando aqui.
- Pré-Requisitos para a Configuração dos Domínios no Apache
Vamos partir de um exemplo... imagine que desejemos configurar os seguintes domínios:
www.dominio1.com.br para /var/www/site1
www.dominio2.com.br para /var/www/site2
www.dominio3.com.br para /var/www/site2
Consideremos que:
1- Os sites existem e já respondem perfeitamente com os endereços:
[nome de seu servidor]/site1/
[nome de seu servidor]/site2/
[nome de seu servidor]/site3/
2- Os três domínios foram comprados em um serviço de registro de domínios, a fatura está paga e todos já se encontram devidamente registrados;
3- O Bind (ou outro servidor DNS) de seu servidor está funcionando e está configurado para redirecionar as chamadas a estes domínios para seu inocente Apachezinho...
4- No serviço de registro de domínios, você já configurou o uso de seu DNS (nome e IP dos DNS primário e secundário) e já esperou o tempo necessário para a replicação desta informação pela rede.
É claro que estas condições podem ser ligeiramente modificadas de acordo com sua situação, mas, em geral, é isso de que precisamos para começar a trabalhar...
- Criando o Virtual Host
Para o Apache 2, as diversas configurações a respeito do acesso às pastas virtuais ficam em contêineres <VirtualHost>. Estes contêineres normalmente ficam no arquivo /etc/apache2/apache2.conf. Evidentemente, modificar este arquivo é permitido apenas ao root e as modificações exigem que se reinicie o Apache para tomar efeito.
Cada domínio novo supõe uma nova configuração do VirtualHost, ou seja, um novo contêiner. Assim, para a realização do exemplo, precisaremos de 3 contêineres, um para cada domínio, conforme segue:
<VirtualHost *:80>
ServerName www.dominio1.com.br
ServerAlias dominio1.com.br *.dominio1.com.br
DocumentRoot /var/www/site1
</VirtualHost>
<VirtualHost *:80>
ServerName www.dominio2.com.br
ServerAlias dominio2.com.br *.dominio2.com.br
DocumentRoot /var/www/site2
</VirtualHost>
<VirtualHost *:80>
ServerName www.dominio3.com.br
ServerAlias dominio3.com.br *.dominio3.com.br
DocumentRoot /var/www/site3
</VirtualHost>
O que isso tudo significa?? Vamos por partes...
VirtualHost *:80 - Inicia a tag do contêiner, informando que estamos interessados na porta 80 (protocolo http). Se você, por algum motivo qualquer, usa outra porta, substitua o "80" pela porta desejada. O "*" pode ser substituído pelo IP interno de seu servidor.
ServerName www.dominio1.com.br - Indica o nome do domínio que você deseja configurar. Evidentemente, coloque o domínio que você registrou e que está configurado no Bind.
ServerAlias dominio1.com.br *.dominio1.com.br - Isto garante que quaisquer chamadas a este domínio vão ser redirecionadas para a pasta virtual que está sendo configurada.
DocumentRoot /var/www/site1 - Enfim, a referência no sistema de arquivos para a pasta virtual!! Ou seja, em que canto do disco está o seu portal. Note que, aqui, você só pode especificar uma pasta por VirtualHost. Por isso que necessitamos de três contêineres VirtualHost configurados!!
Se, por algum motivo, esta configuração não funcionar, então experimente acrescentar a linha:
NameVirtualHost *:80
Antes da declaração do primeiro VirtualHost.
Bom, pessoal, esta configuração é razoavelmente simples e indolor. É claro que você pode tornar a sua configuração do VirtualHost muito mais complexa, acrescentando as diversas diretivas suportadas pelo mesmo. Mas isto já seria tema para um novo artigo...
Se gostaram, detestaram, ajudou ou atrapalhou, então COMENTEM!!!
14 comentários:
Muito bom tutorial, funcionou perfeitamente no Ubuntu 12.10!
Obrigado, Adriano!!
Torço que o Pajé continue te ajudando!!
Muito útil ... resolveu meu problema
Muito obrigado pela resposta!! Torço que o Pajé Online continue ajudando a vc e a muitos outros que nos visitam!!
Existe maneira de que:
tenho um dominio interno rodando no meu virtualhost.
ex. sintaseinfo.bo.com
queria q o mesmo fose atendido pela rede externa "internet" e nao somente em localhost.
necesito registrar um dominio? como eu poderia ter minha propria extencao de dominios externos?
Olá Marcio,
No Apache, você consegue configurar apenas o que o servidor onde ele está tem alcance, ou seja, em localhost e, com sorte, na rede interna que o localhost gerencie.
Para você ter um domínio externo, visível por toda a rede global, é preciso registrá-lo em uma empresa que preste este serviço. Para isso, você tem que ter um servidor de DNS (pelo qual sua máquina se conecta à internet, o que possivelmente você já tem) e precisa contratar uma empresa que registre domínios.
Depois de contratar o serviço, você terá o domínio acionado e poderá configurá-lo para acessar a sua máquina servidora, ou seja, configurar o domínio externo para que ele aponte para o localhost onde rodando o seu Apache.
Espero ter ajudado!!
Pajé
show man funfo legal....havia pego explicações em outros posts mas não tinha funcionado...muto simples e funfou valew brother
Muito obrigado, rapaz!! Fico feliz de ter ajudado!!
Abraços do Pajé!!
Muito obrigado, era exatamente o que eu precisava!
Disponha, Tiago! É um prazer ajudá-lo!
Pajé segui seu tutorial e não deu certo de jeito nenhum, na verdade deu foi um pau tão grande no apache que tive que re-instalar tudo (apache, php, phpmyadmin). Teria como você fazer um tutorial sobre como fazer esse procedimento em detalhes, para quem usa LAMP como eu, lembrando que estou em nível iniciante, então quanto mais didático e com exemplos e imagens melhor seria! De toda forma, parabéns pelo blog!
Obrigado, valeu pela ajuda.
Postar um comentário