🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

Introdução aos Virtual Hosts do Apache: Gestão Fácil de Múltiplos Domínios

No artigo anterior, aprendemos as configurações básicas do ficheiro de configuração central do Apache, o `httpd.conf`. Agora, já deve ser capaz de publicar um único site com confiança. Mas, e se quiser executar outros sites, como `example.org` ou `blog.example.com`, no mesmo servidor?

A resposta é uma funcionalidade que vamos apresentar hoje, chamada Virtual Hosts (Anfitriões Virtuais). Esta funcionalidade permite-lhe operar múltiplos sites diferentes, cada um com o seu próprio domínio, num único servidor (e um único endereço IP), como se tivesse múltiplos servidores.

Neste artigo, vamos explicar como funcionam os virtual hosts usando uma analogia simples de um prédio de apartamentos, e vamos guiá-lo através dos passos para pôr a funcionar dois domínios diferentes no seu ambiente local, com código pronto a copiar e colar. Quando terminar de ler este artigo, a gestão de múltiplos sites já não lhe parecerá intimidante!


Entendendo o funcionamento dos Virtual Hosts

A forma mais fácil de entender os virtual hosts é pensar no seu servidor como um prédio de apartamentos.

Quando um visitante (um navegador web) chega ao prédio de apartamentos (o endereço IP do servidor) e diz, "Vim ver o Sr. Silva (`example.com`)", o administrador do prédio (Apache) irá direcionar o visitante para o apartamento do Sr. Silva (o site de `example.com`). Se disserem, "Vim pela Sra. Santos (`example.org`)", o Apache irá direcioná-los para o apartamento da Sra. Santos.

Este mecanismo de verificar a "placa do nome" (o nome de domínio) para alternar para onde direcionar os visitantes é chamado de Virtual Hosting baseado em nome. É o método mais comum usado hoje em dia, e é a abordagem que usaremos neste artigo.


Passo 1: Preparação para a configuração dos Virtual Hosts

Antes de começarmos a escrever ficheiros de configuração, precisamos de fazer alguns preparativos.

1-1. Ativar o ficheiro de configuração dos Virtual Hosts

No Apache, é recomendado manter as suas configurações de virtual host num ficheiro separado para manter o ficheiro principal `httpd.conf` limpo. Primeiro, abra o seu ficheiro `httpd.conf` e procure a seguinte linha. Se tiver um `#` no início (a comentá-la), remova o `#` para a ativar.

# Descomente (remova o #) esta linha no seu ficheiro httpd.conf
Include conf/extra/httpd-vhosts.conf

Esta única linha diz ao Apache para ler o ficheiro `conf/extra/httpd-vhosts.conf` e aplicar as configurações de virtual host escritas nele.


1-2. Criar os diretórios e ficheiros para cada site

De seguida, vamos criar pastas para os nossos dois sites, `example.com` e `example.org`, e um ficheiro HTML para a página inicial de cada um. Neste exemplo, vamos criar pastas dedicadas numa localização separada do `htdocs` para facilitar a gestão dos dados do site.

  1. Numa localização à sua escolha no seu servidor (ex: /Users/SeuNome/Sites ou C:\Users\SeuNome\Sites), crie uma pasta para cada site.
    • sites/example.com/public_html
    • sites/example.org/public_html
  2. Dentro de cada pasta `public_html`, crie um ficheiro `index.html` simples para que possa saber qual site está a ser exibido.

Conteúdo de `sites/example.com/public_html/index.html`:

<!DOCTYPE html>
<html>
<head><title>Bem-vindo!</title></head>
<body><h1>Esta é a página de example.com</h1></body>
</html>

Conteúdo de `sites/example.org/public_html/index.html`:

<!DOCTYPE html>
<html>
<head><title>Bem-vindo!</title></head>
<body><h1>Esta é a página de example.org</h1></body>
</html>

Passo 2: Configurar os Virtual Hosts (em httpd-vhosts.conf)

Com os preparativos concluídos, é hora de editar o ficheiro `conf/extra/httpd-vhosts.conf`. Neste ficheiro, vamos escrever a "informação do apartamento" para cada um dos nossos sites.

Primeiro, a configuração para `example.com`. Adicione o seguinte bloco ao `httpd-vhosts.conf`. (Pode apagar ou comentar com `#` quaisquer exemplos existentes no ficheiro).

<VirtualHost *:80>
    # O nome de domínio principal para este virtual host
    ServerName example.com
    # Também pode especificar aliases, como a versão com www
    ServerAlias www.example.com
    # A localização dos ficheiros deste site (o caminho para a pasta que acabámos de criar)
    DocumentRoot "/Users/SeuNome/Sites/example.com/public_html"
    # Um log de erros dedicado para este site
    ErrorLog "/Users/SeuNome/Sites/example.com/error_log"
    # Um log de acesso dedicado para este site
    CustomLog "/Users/SeuNome/Sites/example.com/access_log" common
    # Configurações de permissão de acesso para o diretório
    <Directory "/Users/SeuNome/Sites/example.com/public_html">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

※ Por favor, altere os caminhos como `DocumentRoot` para corresponderem ao seu próprio ambiente.


De seguida, vamos adicionar a configuração para `example.org`. Adicione este bloco logo abaixo do anterior.

<VirtualHost *:80>
    ServerName example.org
    DocumentRoot "/Users/SeuNome/Sites/example.org/public_html"
    ErrorLog "/Users/SeuNome/Sites/example.org/error_log"
    CustomLog "/Users/SeuNome/Sites/example.org/access_log" common
    <Directory "/Users/SeuNome/Sites/example.org/public_html">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Passo 3: Teste no ambiente local (ficheiro hosts)

Ok, a configuração do Apache está pronta, mas se tentar aceder a `example.com` agora mesmo, não irá ligar-se ao seu computador. Para testar isto num ambiente local, precisamos de editar o ficheiro `hosts` do seu computador para mapear à força o domínio `example.com` para o seu próprio computador (`127.0.0.1`).

Localização do ficheiro `hosts`:

Abra este ficheiro com privilégios de administrador e adicione as seguintes linhas no final.

127.0.0.1   example.com
127.0.0.1   www.example.com
127.0.0.1   example.org

Passo 4: Reiniciar e verificar o Apache

Todas as configurações estão concluídas! Finalmente, vamos fazer uma verificação de sintaxe para garantir que não há erros na configuração do Apache e, se tudo estiver bem, reiniciar o servidor.

# Verificação de sintaxe (se não aparecerem erros, está tudo bem)
httpd -t

# Reiniciar o Apache (no Windows)
httpd.exe -k restart

# Reiniciar o Apache (no macOS com Homebrew)
brew services restart httpd

# Reiniciar o Apache (no Linux)
sudo systemctl restart apache2 # ou httpd

Após reiniciar, tente aceder a `http://example.com` e `http://example.org` no seu navegador. Se vir "Esta é a página de example.com" e "Esta é a página de example.org" respetivamente, então parabéns, foi um sucesso!


Exemplo avançado: Utilização de um subdomínio

Os virtual hosts também podem ser usados para executar subdomínios (ex: `blog.example.com`). O método de configuração é exatamente o mesmo que antes. Só precisa de adicionar um novo bloco `<VirtualHost>` ao seu ficheiro `httpd-vhosts.conf`.

<VirtualHost *:80>
    ServerName blog.example.com
    DocumentRoot "/Users/SeuNome/Sites/blog.example.com/public_html"
    # ... e escreva as configurações de log e Directory da mesma forma ...
</VirtualHost>

Claro, não se esqueça de adicionar `127.0.0.1 blog.example.com` ao seu ficheiro `hosts` e reiniciar o Apache depois!


Conclusão

Ótimo trabalho! Hoje, aprendemos sobre a funcionalidade de virtual hosts, que lhe permite gerir múltiplos domínios num único servidor Apache, desde o seu funcionamento até aos passos de configuração específicos. Esperamos que a analogia do prédio de apartamentos tenha ajudado a visualizar a relação entre o servidor e os domínios.

Ao dominar os virtual hosts, pode gerir eficientemente múltiplos projetos diferentes — como um site de passatempo, um site de portfólio, ou um projeto de cliente em desenvolvimento — tudo numa única máquina. As suas competências de administração de servidores acabaram de subir de nível!

Agora que sabe como "atribuir quartos" no seu servidor, provavelmente está a ficar curioso sobre como definir "decorações interiores" e "regras" mais detalhadas para cada quarto. O nosso próximo tema é um guia completo do ficheiro mágico que permite todo o tipo de controlo por diretório: o `.htaccess`. Fique atento!

Guia Completo do .htaccess: Como Usar Redirecionamentos, Reescrita de URL e Controlo de Acesso