POP HOSTING

Como configurar Virtual Hosts no Apache no Ubuntu 24.04 e Debian 12 imprimir

  • virtual host apache, apache2, vários sites no mesmo servidor, a2ensite, ubuntu 24.04, debian 12, certbot
  • 0

Configure Virtual Hosts no Apache 2.4 para hospedar vários sites no mesmo servidor Ubuntu 24.04 ou Debian 12, com pastas, permissões, HTTPS e testes.

  • Tempo: 15 min
  • Nível: Intermediário
  • Vale para: Apache 2.4 no Ubuntu 22.04 e 24.04, Debian 12 e 13 (AlmaLinux e Rocky no fim)
  • Atualizado: outubro de 2026

Virtual Host é o recurso do Apache que permite responder por vários domínios no mesmo servidor e no mesmo IP. O navegador envia o nome do site em cada pedido, e o Apache escolhe a configuração cujo ServerName bate com esse nome. Cada site ganha sua pasta, seus logs e suas regras.

Antes de começar

  • Apache instalado e rodando. Se ainda não tem: sudo apt install -y apache2.
  • Acesso SSH com um usuário que tenha sudo.
  • Domínio apontado para o IP do servidor (registro A de seudominio.com.br e de www). Dá para testar antes, como mostrado no passo 4.
  • Portas 80 e 443 liberadas. Com ufw: sudo ufw allow 'Apache Full'.

Passo 1: crie a pasta do site

sudo mkdir -p /var/www/seudominio.com.br/public_html
sudo chown -R $USER:$USER /var/www/seudominio.com.br/public_html
sudo chmod -R 755 /var/www/seudominio.com.br
echo '<h1>seudominio.com.br funcionando</h1>' > /var/www/seudominio.com.br/public_html/index.html

Os arquivos ficam com o seu usuário, e o Apache (usuário www-data) só precisa ler. Se o site tiver pastas de upload, dê escrita ao www-data só nelas, nunca na pasta inteira.

Passo 2: crie o arquivo do Virtual Host

Crie /etc/apache2/sites-available/seudominio.com.br.conf (por exemplo com sudo nano):

<VirtualHost *:80>
    ServerName seudominio.com.br
    ServerAlias www.seudominio.com.br
    ServerAdmin [email protected]
    DocumentRoot /var/www/seudominio.com.br/public_html

    <Directory /var/www/seudominio.com.br/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/seudominio.com.br-error.log
    CustomLog ${APACHE_LOG_DIR}/seudominio.com.br-access.log combined
</VirtualHost>
  • ServerName e ServerAlias: o domínio principal e os nomes alternativos que caem neste site.
  • DocumentRoot: a pasta que o visitante vê.
  • Options -Indexes: não lista os arquivos de uma pasta sem página inicial.
  • AllowOverride All: permite usar o arquivo htaccess, necessário para WordPress e a maioria dos sistemas PHP. Para regras de reescrita, ative o módulo com sudo a2enmod rewrite.
  • ErrorLog e CustomLog: logs separados por site em /var/log/apache2/.

Passo 3: ative o site e recarregue o Apache

sudo a2ensite seudominio.com.br.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

O configtest deve responder Syntax OK. Nunca recarregue sem esse teste: um erro de digitação derruba todos os sites do servidor. Se quiser desligar a página padrão do Apache, rode também sudo a2dissite 000-default.conf.

Passo 4: teste o Virtual Host

Com o DNS já apontado, abra http://seudominio.com.br no navegador. Para testar antes de mudar o DNS, use uma destas opções:

  • Pelo terminal, enviando o nome do site para o IP do servidor:
    curl -H 'Host: seudominio.com.br' http://203.0.113.10/
  • Pelo arquivo hosts do seu computador, adicionando a linha 203.0.113.10 seudominio.com.br www.seudominio.com.br. No Windows o arquivo é C:\Windows\System32\drivers\etc\hosts (abra o Bloco de Notas como administrador); no Mac e no Linux, /etc/hosts. Apague a linha depois do teste.

Passo 5: ative o HTTPS com Let's Encrypt

sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d seudominio.com.br -d www.seudominio.com.br

O Certbot emite o certificado gratuito, cria o Virtual Host da porta 443 (arquivo seudominio.com.br-le-ssl.conf) e oferece redirecionar todo acesso para HTTPS. A renovação é automática; para conferir, rode sudo certbot renew --dry-run.

Como adicionar mais sites

Repita os passos 1 a 5 para cada domínio, com uma pasta e um arquivo .conf próprios. Para ver todos os Virtual Hosts ativos e de qual arquivo cada um vem:

sudo apache2ctl -S
Dica: quando nenhum ServerName combina com o nome pedido, o Apache responde com o primeiro Virtual Host carregado, em ordem alfabética. É por isso que o 000-default.conf tem esse nome.

No AlmaLinux e no Rocky Linux

A lógica é a mesma, com estas diferenças: o pacote e o serviço se chamam httpd; o arquivo vai direto em /etc/httpd/conf.d/seudominio.com.br.conf (não há a2ensite); os logs ficam em /var/log/httpd/; o usuário do Apache é apache; o teste é sudo apachectl configtest e a recarga, sudo systemctl reload httpd. Com o SELinux ativo, mantenha os sites dentro de /var/www para evitar erro de permissão.

Problemas comuns

Aparece a página padrão do Apache em vez do meu site

O site não foi ativado, o ServerName está diferente do domínio digitado ou o DNS ainda aponta para outro lugar. Confira com sudo apache2ctl -S e com dig +short seudominio.com.br.

403 Forbidden: You don't have permission to access this resource

O Apache não consegue ler a pasta. Verifique se todas as pastas do caminho têm permissão de execução para outros usuários (755), se o bloco Directory tem Require all granted e se existe um index.html ou index.php.

Invalid command 'RewriteEngine'

O arquivo htaccess usa reescrita, mas o módulo está desligado. Rode sudo a2enmod rewrite e sudo systemctl restart apache2.

AH00558: Could not reliably determine the server's fully qualified domain name

É só um aviso: o Apache não tem um nome global definido. Para sumir com ele, crie /etc/apache2/conf-available/servername.conf com a linha ServerName localhost e ative com sudo a2enconf servername.

O Certbot falha com Timeout during connect

O Let's Encrypt não alcançou o servidor na porta 80. Confira o firewall, o DNS (o domínio precisa apontar para este servidor) e se o site responde por HTTP antes de pedir o certificado.

Quer hospedar vários sites em um servidor só seu? Veja os servidores dedicados da POP Hosting, com acesso root e suporte em português.

Esta resposta lhe foi útil?
« Retornar