LAB-8

Hosts Virtuais

Hosts virtuais no Apache servem para hospedar múltiplos sites em um único servidor físico.

O que isso significa na prática:

  • Um servidor, vários sites: Em vez de precisar de um servidor físico ou virtual separado para cada site que você deseja hospedar, você pode ter todos eles rodando na mesma máquina.
  • Domínios diferentes: Cada site pode ter seu próprio nome de domínio (como site1.com, site2.com), e quando um visitante digita esse endereço no navegador, o Apache sabe qual conjunto de arquivos deve entregar.
  • Conteúdos e configurações independentes: Cada site tem seu próprio diretório raiz (DocumentRoot), seus próprios arquivos de log, e pode ter configurações específicas.

Exemplos de uso comuns:

  • Uma empresa de hospedagem web usando um servidor para hospedar sites de dezenas de clientes diferentes
  • Um desenvolvedor testando vários projetos localmente
  • Uma empresa com vários sites ou aplicações (site institucional, blog, loja online, área de clientes) em um único servidor

É como ter vários servidores web distintos, mas economizando recursos ao compartilhar uma única instalação física do Apache. Isso otimiza custos, facilita o gerenciamento e é uma das funcionalidades mais utilizadas em servidores web.

1. Como Configurar Hosts Virtuais no Apache

Vamos criar dois sites diferentes funcionando simultaneamente no seu servidor Apache usando hosts virtuais. Este tutorial assume que você já tem o Apache instalado e um site básico funcionando em /var/www/html.

Passo 1: Preparar a Estrutura de Diretórios

Primeiro, vamos criar diretórios separados para cada site:

  • Criar diretórios para os dois sites
sudo mkdir -p /var/www/site1.local/public_html
sudo mkdir -p /var/www/site2.local/public_html
  •  Definir permissões corretas
sudo chown -R $USER:$USER /var/www/site1.local/public_html
sudo chown -R $USER:$USER /var/www/site2.local/public_html
sudo chmod -R 755 /var/www

Passo 2: Criar Páginas HTML de Exemplo

Vamos criar páginas HTML simples para diferenciar os sites:

  • Criar página para o site1
  • /var/www/site1.local/public_html/index.html
				
					<!DOCTYPE html>
<html>
<head>
    <title>Site 1</title>
</head>
<body>
    <h1>Bem-vindo ao Site 1!</h1>
    <p>Este é o primeiro site virtual.</p>
</body>
</html>
				
			
  • Criar página para o site2
  • /var/www/site2.local/public_html/index.html
				
					<!DOCTYPE html>
<html>
<head>
    <title>Site 2</title>
</head>
<body>
    <h1>Bem-vindo ao Site 2!</h1>
    <p>Este é o segundo site virtual.</p>
</body>
</html>
				
			

Passo 3: Criar Arquivos de Configuração de Hosts Virtuais

Agora, vamos criar os arquivos de configuração dos hosts virtuais:

  • Criar arquivo de configuração para o site1
sudo nano /etc/apache2/sites-available/site1.local.conf
				
					<VirtualHost *:80>
    ServerAdmin webmaster@site1.local
    ServerName site1.local
    ServerAlias www.site1.local
    DocumentRoot /var/www/site1.local/public_html
    ErrorLog ${APACHE_LOG_DIR}/site1.local_error.log
    CustomLog ${APACHE_LOG_DIR}/site1.local_access.log combined
</VirtualHost>

				
			
  • Criar arquivo de configuração para o site2
sudo nano /etc/apache2/sites-available/site2.local.conf
				
					<VirtualHost *:80>
    ServerAdmin webmaster@site2.local
    ServerName site2.local
    ServerAlias www.site2.local
    DocumentRoot /var/www/site2.local/public_html
    ErrorLog ${APACHE_LOG_DIR}/site2.local_error.log
    CustomLog ${APACHE_LOG_DIR}/site2.local_access.log combined
</VirtualHost>


				
			

Passo 4: Habilitar os Novos Sites

Vamos habilitar os novos sites virtuais:

  • Habilitar os sites
sudo a2ensite site1.local.conf
sudo a2ensite site2.local.conf
  • Desabilitar o site padrão (opcional)
sudo a2dissite 000-default.conf

Passo 5: Verificar Configuração e Reiniciar o Apache

  • Verificar se não há erros de sintaxe
sudo apache2ctl configtest
  • Reiniciar o Apache para aplicar as mudanças
sudo systemctl restart apache2

Você deve ver a mensagem “Syntax OK” se tudo estiver correto.

Passo 6: Configurar o Arquivo /etc/hosts para Testes Locais

Como estamos trabalhando em ambiente local, precisamos configurar o arquivo hosts para redirecionar os domínios para o seu próprio computador:

sudo nano /etc/hosts

Adicione as seguintes linhas:

127.0.0.1   site1.local www.site1.local
127.0.0.1   site2.local www.site2.local

Salve o arquivo (Ctrl+O, Enter, Ctrl+X).

Passo 7: Testar os Sites

Agora você pode testar seus sites abrindo um navegador e acessando:

http://site1.local
http://site2.local

Cada URL deve mostrar a página HTML correspondente que você criou anteriormente.

Próximos Passos

  • Configure SSL para seus sites com certbot/Let’s Encrypt
  • Adicione regras de reescrita para URLs amigáveis
  • Configure autenticação básica para áreas protegidas
  • Configure hosts virtuais baseados em IP, se necessário

Parabéns! Você agora tem dois sites funcionando com hosts virtuais no Apache. Esta é uma habilidade fundamental para administração de servidores web, permitindo que você hospede múltiplos sites em um único servidor.