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!!!