Virtual Hosts
Pesquisas Acadêmicas: Virtual Hosts. Pesquise 861.000+ trabalhos acadêmicosPor: yavoliveirahoo • 15/6/2013 • 1.608 Palavras (7 Páginas) • 362 Visualizações
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. Vamos estudar a configuração do DNS em detalhes no próximo capítulo, dedicado unicamente ao assunto. Este foi apenas um exemplo rápido para que você tenha uma idéia geral sobre a configuração. Por enquanto, vamos nos concentrar na configuração do Apache propriamente dito.
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>
Note que adicionei uma nova diretiva, a "ServerAlias", que permite que o site seja acessado tanto com, quanto sem o "www". A linha "ServerAdmin" é, na verdade, opcional, contém apenas o e-mail de contato do administrador do site.
A mesma configuração é usada se você quiser hospedar os sites usando subdomínios, como em "joao.gdhn.com.br" e "maria.gdhn.com.br". Nesse caso, não usamos o "www" e, por isso, não precisamos da linha "ServerAlias":
<VirtualHost *:80>
ServerAdmin hostmaster@gdhn.com.br
ServerName maria.gdhn.com.br
DocumentRoot /var/www/maria
</VirtualHost>
Depois de feita a configuração, ative ambos os sites usando o comando a2ensite, o que criará links para eles na pasta "/etc/apache2/sites-enabled":
...