Apache - configurando domínios com vhost
Quando temos um servidor próprio, isto é, um servidor autonomamente configurado ou ainda uma conta do tipo cloud ou VPS, precisaremos configurar manualmente o Apache para resolver diferentes endereços de domínio numa mesma máquina. Em outras palavras, uma vez tendo um servidor que vai hospedar diferente sites com diferentes endereços precisaremos dizer para o apache onde estão as pastas que devem responder aos respectivos endereços.
O Apache divide suas funcionalidades e componentes em unidades individuais que podem ser personalizadas e configuradas independentemente. A unidade básica que descreve um determinado site ou um domínio é chamada virtual host.
Cada domínio que esteja configurado irá direcionar o visitante para um diretório específico que mantém as informações daquele site, nunca indicando que o mesmo servidor também é responsável por outros sites. Este esquema é expansível sem qualquer limite de software desde que seu servidor possa suportar a carga.
Vamos ver como isso funciona.
Pre requisitos
- Apache ou Lamp completo instalado.
- Usuário non-root para configurar o domínio e permissões de acesso
- Estamos tomando como base um servidor linux Debian 8.0 devidamente instalado e com ip fixo configurado;
Estrutura de diretórios
O primeiro passo é criar uma estrutura de diretório que irá armazenar os dados do(s) site(s) que estará(ão) servindo aos visitantes.
Nosso document root (o diretório de nível superior que o Apache olha para encontrar o conteúdo para servir) será definido para diretórios individuais sob o diretório /var/www. Por padrão o Apache coloca o endereço /var/www/html, mas vamos criar um diretório especial.
1 - Dentro de cada um desses diretórios, vamos criar o diretório public_html que irá manter nossos arquivos reais. Isto nos dá certa flexibilidade em nossa hospedagem.
Por exemplo, para nossos sites, nós vamos criar nossos diretórios assim:
# mkdir -p /var/www/site1.com.br/public_html # mkdir -p /var/www/site2.org.br/public_html
As partes em negrito representam os nomes de domínio que estamos querendo servir através de nosso servidor.
Você pode colocar um código de teste para verificar o funcionamento da página depois:
<html> <head> <title>Exemplo!</title> </head> <body>
Olá Mundo! Sucesso!
</body> </html>
2 - Acrescente também, no endereçamento interno da máquina, os endereços que quiser. Isso server tanto para loopback quanto para endereço externo. No arquivo /etc/hosts coloque as linhas:
127.0.0.1 site1.com.br Site1 127.0.0.1 site2.org.br Site2 200.133.0.99 site1.com.br Site1 (o IP 200.133.0.99 em questão é apenas um exemplo de ip fixo) 200.133.0.99 site2.org.br Site2
Permissões
Depois da estrutura de diretórios para os arquivos é preciso desassociá-los do root e associá-los aos usuários devidos. Se quisermos que nosso usuário regular esteja apto a modificar arquivos em nossos diretórios web, podemos alterar o proprietário fazendo isto:
# chown -R $USER:$USER /var/www/example.com/public_html # chown -R $USER:$USER /var/www/test.com/public_html
A variável $USER terá o valor do usuário com o qual você está logado atualmente quando você pressionou "ENTER". Fazendo isto, nosso usuário regular agora detém os sub-diretórios public_html onde estaremos armazenando nosso conteúdo.
Devemos também modificar um pouco nossas permissões para garantir que o acesso de leitura é permitido para o diretório web em geral e todos os arquivos e pastas que ele contém de modo que a páginas possam ser servidas corretamente:
# chmod -R 755 /var/www/*
Seu servidor web agora deve ter as permissões que ele precisa para servir o conteúdo, e seu usuário deve ser capaz de criar conteúdo dentro das pastas necessárias.