Apache: Usando virtual hosts

O suporte a virtual hosts é um daqueles recursos fundamentais, que possibilitaram o surgimento da Internet da forma como a conhecemos hoje. Ele permite hospedar diversos sites, com domínios ou subdomínios diferentes usando um único servidor e um único
endereço IP. Os únicos limitantes com relação ao volume de sites que é possível hospedar são os recursos de hardware do servidor e a banda disponível.

Serviços de hospedagem compartilhada (os planos de shared hosting) utilizam este recurso de forma intensiva, de forma a espremer o maior número possível de clientes em cada servidor, sem falar nos serviços de hospedagem gratuita onde, em muitos casos,
um único servidor pode hospedar dezenas de milhares de sites diferentes.

Ao usar virtual hosts, os arquivos de cada site ficam guardados em uma pasta diferente e o servidor se encarrega de direcionar cada visitante à pasta correta. Os recursos do servidor (HD, memória, processamento e link) são divididos entre os sites
hospedados, assim como vários programas abertos simultaneamente disputam os recursos da máquina. Isso faz muito sentido no caso de sites pequenos ou médios, que não possuem um número suficiente de visitas para saturarem, sozinhos, o servidor.

Em geral, o servidor é configurado de forma que os usuários tenham direito a uma determinada quota de espaço em disco, possam acessar os arquivos do site via FTP ou SFTP e tenham acesso a uma ou mais bases de dados do servidor MySQL, o que permite a
instalação de gestores de conteúdo como o WordPress. Entretanto, eles não podem instalar novos pacotes nem alterar a configuração do servidor. Feitas as apresentações, vamos à configuração. 🙂

Invariavelmente, ao hospedar vários domínios, você precisa configurar um servidor DNS para responder por todos os domínios hospedados no servidor, entregando o endereço IP do seu servidor Apache. O cliente acessa então o servidor, solicitando o site
desejado, como em “joao.com.br”; o servidor web verifica a configuração e entrega os arquivos apropriados ao cliente.

A configuração do servidor DNS é pouco intuitiva, mas não chega a ser tão complicada quanto muitos dizem. Em resumo, você precisaria instalar o bind no servidor e editar a configuração, adicionando uma nova configuração de zona para cada domínio
hospedado. Isso é feito em duas etapas. Na primeira, você edita o arquivo named.conf, adicionando uma entrada com esta, especificando o domínio e o arquivo com a configuração:

zone "joao.com.br" IN {
type master;
file "/etc/bind/db.joao";
allow-transfer { 64.234.23.13; };
};

Dentro do arquivo “/etc/bind/db.joao”, especificado no arquivo, iria uma configuração similar a esta, especificando o domínio, o nome do servidor e o endereço IP usado por ele, assim como o nome e o endereço IP do servidor DNS secundário:

@ IN SOA servidor.joao.com.br. hostmaster.joao.com.br. (
2008061645 3H 15M 1W 1D )
NS servidor.joao.com.br.
NS ns2.joao.com.br.
IN MX 10 servidor.joao.com.br.
joao.com.br. A 64.234.23.12
www A 64.234.23.12
ns1 A 64.234.23.13

Não é necessário que o DNS esteja instalado no mesmo servidor que o Apache, a função dele será unicamente responder às requisições dos clientes, fornecendo o IP correto.

Para ativar o uso dos virtual hosts, o primeiro passo é criar uma pasta separada para cada site que será hospedado. Você pode usar a própria pasta “/var/www”, como em:

# mkdir /var/www/joao
# mkdir /var/www/maria

Em seguida, é necessário adicionar uma nova seção dentro da configuração do Apache para cada um, logo depois da configuração do site default.

Nas distribuições derivadas do Debian, são usados arquivos de configuração separados para cada site, armazenados na pasta “/etc/apache2/sites-available”. Imagine que vamos hospedar os sites “www.joao.com.br” e “www.maria.com.br”, usando as duas pastas
criadas anteriormente. Criaríamos, então, um arquivo para cada site, contendo o seguinte:

  • /etc/apache2/sites-available/joao:
<VirtualHost *:80>
ServerAdmin joao@joao.com.br
ServerName www.joao.com.br
ServerAlias joao.com.br www.joao.com.br
DocumentRoot /var/www/joao
</VirtualHost>
  • /etc/apache2/sites-available/maria:
<VirtualHost *:80>
ServerAdmin maria@gmail.com
ServerName www.maria.com.br
ServerAlias maria.com.br www.maria.com.br
DocumentRoot /var/www/maria
</VirtualHost>

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X