Como criar um servidor web Ubuntu seguro e de alto desempenho com Apache (Guia completo)

目次

1. Introdução

O Que É um Servidor Web Ubuntu?

Um servidor web é um sistema que entrega sites pela internet. Softwares de servidor web populares incluem Apache, Nginx e LiteSpeed, mas a opção mais amplamente usada no Ubuntu é Apache.
O Ubuntu é leve, estável e de código aberto, tornando-o popular entre indivíduos e empresas. Ele é especialmente adequado para operar ambientes LAMP (Linux, Apache, MySQL/MariaDB, PHP), que alimentam muitos sites e aplicativos.

Para Quem É Este Artigo

Este guia é projetado para iniciantes construindo um servidor web pela primeira vez. Ele explica como lançar um servidor web no Ubuntu, instalar o Apache, configurar hosts virtuais e certificados SSL, e implementar otimizações e aprimoramentos de segurança.

O Que Você Aprenderá

  • Como construir um servidor web no Ubuntu (instalando e configurando o Apache)
  • Como configurar hosts virtuais e gerenciar múltiplos sites
  • Como instalar SSL gratuito com Let’s Encrypt
  • Como aplicar endurecimento de segurança e otimização de desempenho
  • Passos comuns de solução de problemas e soluções

2. Instalando o Ubuntu e Realizando a Configuração Inicial

Especificações de Sistema Requeridas

Para executar o Ubuntu como um servidor web, as seguintes especificações mínimas são recomendadas:

ItemMinimum RequirementsRecommended Requirements
OSUbuntu 22.04 LTSUbuntu 22.04 LTS
CPU1GHz or higher2GHz or higher
Memory512MB2GB or higher
Storage10GB or more20GB or more
NetworkInternet connectionHigh-speed connection recommended

Baixando e Instalando o Ubuntu

O Ubuntu pode ser baixado do site oficial (https://ubuntu.com/download/server). Baixe o arquivo ISO e instale-o em uma máquina virtual como VirtualBox ou VMware, ou em um servidor dedicado ou VPS.

Passos de Instalação:

  1. Criar mídia de instalação
  • Unidade USB (usando ferramentas como Rufus)
  • Montar o arquivo ISO em uma máquina virtual
  1. Seguir o assistente de instalação
  • Selecionar o idioma preferido
  • Verificar a conectividade de rede
  • Definir o nome de usuário e senha
  • Instalar o servidor SSH (opcional—você pode instalá-lo depois)
  1. Reiniciar após a conclusão da instalação
  2. Fazer login e iniciar a configuração inicial

Configuração Inicial Básica

Após a instalação, execute os seguintes passos de configuração inicial.

  1. Atualizar todos os pacotes
    sudo apt update && sudo apt upgrade -y
    

→ Aplica patches de segurança e atualiza pacotes de software.

  1. Definir o fuso horário
    sudo timedatectl set-timezone Asia/Tokyo
    

→ Define o horário do sistema para o Horário Padrão do Japão (JST).

  1. Ativar o firewall
    sudo ufw enable
    

→ Ativa o firewall para proteger o sistema contra acesso não autorizado.

  1. Configurar o SSH (para gerenciamento remoto)
  • Verificar se o SSH está ativado sudo systemctl status ssh
  • Se desativado, ativá-lo sudo systemctl enable --now ssh

Após concluir esses passos, seu servidor Ubuntu está pronto para ser configurado como um servidor web totalmente funcional.

3. Instalando e Configurando o Apache

O Que É o Apache?

Apache (Apache HTTP Server) é um servidor web de código aberto conhecido por sua estabilidade, extensibilidade e fortes recursos de segurança. Aproximadamente 30% dos servidores em todo o mundo usam o Apache.

Principais Recursos:

  • Gratuito e de código aberto
  • Arquitetura modular para extensões fáceis
  • Suporte a SSL/TLS para configuração HTTPS
  • Hosts virtuais para hospedar múltiplos sites

Instalando o Apache

No Ubuntu, o Apache pode ser instalado facilmente usando o gerenciador de pacotes apt.

Instalar o Apache

Execute os seguintes comandos para instalar o Apache:

sudo apt update
sudo apt install apache2 -y

Verificar a Instalação

Após a instalação, verifique a versão do Apache:

apache2 -v

Exemplo de saída:

Server version: Apache/2.4.52 (Ubuntu)
Server built:   2023-07-01T12:34:56

Se as informações de versão aparecerem, o Apache foi instalado corretamente.

Iniciando, Parando e Reiniciando o Apache

O Apache é gerenciado usando o comando systemctl.

Iniciar o Apache

sudo systemctl start apache2

O Apache agora começará a aceitar solicitações web.

Ativar Inicialização Automática

sudo systemctl enable apache2

Verificar o Status do Apache

Use este comando para verificar se o Apache está em execução:

sudo systemctl status apache2

Exemplo de saída:

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since ...

Reiniciar ou Parar o Apache

Reinicie o Apache após modificar as configurações:

sudo systemctl restart apache2

Para parar o Apache temporariamente:

sudo systemctl stop apache2

Verificando o Funcionamento do Apache

Para confirmar que o Apache está funcionando corretamente, acesse o endereço IP do servidor.

1. Verifique o Endereço IP do Seu Servidor

hostname -I

Ou verifique o IP externo:

curl ifconfig.me

2. Verifique em um Navegador Web

Digite o seguinte no seu navegador:

http://<your-server-ip>/

Para configurações locais:

http://localhost/

Você deve ver a página padrão do Apache (/var/www/html/index.html).

Exemplo de página padrão:

Apache2 Ubuntu Default Page
It works!

Se esta mensagem aparecer, o Apache está funcionando corretamente.

Configurando o Firewall

O Ubuntu usa UFW (Uncomplicated Firewall) para gerenciar as regras de firewall.
Depois de instalar o Apache, o acesso externo ao HTTP (porta 80) e HTTPS (porta 443) ainda pode estar bloqueado.

Permitir o Apache através do Firewall

sudo ufw allow 'Apache'

Para permitir HTTPS também:

sudo ufw allow 'Apache Full'

Verificar o Status do Firewall

sudo ufw status

Exemplo de saída:

Status: active

To                         Action      From
--                         ------      ----
Apache                     ALLOW       Anywhere
Apache (v6)                ALLOW       Anywhere (v6)

Se isso aparecer, o tráfego do Apache está permitido através do firewall.

Resumo

Até agora, você instalou o Apache no Ubuntu e completou as etapas essenciais de configuração.
Pontos principais abordados:

  • Como instalar o Apache
  • Como iniciar e habilitar o Apache
  • Como verificar o funcionamento do Apache em um navegador
  • Como configurar regras de firewall UFW
  • Visão geral dos arquivos de configuração básicos do Apache

4. Configurando Hosts Virtuais (Gerenciando Múltiplos Sites)

O que são Hosts Virtuais?

Hosts virtuais permitem que você hospede múltiplos domínios (ou subdomínios) em um único servidor Apache.
Por exemplo, um servidor pode hospedar tanto example.com quanto test.com.

Existem dois tipos de hosts virtuais:

  1. Hosts Virtuais Baseados em Nome
  • Vários sites compartilham o mesmo endereço IP
  • O método mais comum
  1. Hosts Virtuais Baseados em IP
  • Cada site usa um endereço IP diferente
  • Requer múltiplas interfaces de rede em um único servidor

Na maioria dos casos, são usados hosts virtuais baseados em nome.

Etapas para Configurar Hosts Virtuais

1. Crie os Diretórios Necessários

Crie um diretório separado para cada site:

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

2. Alterar a Propriedade do Diretório

Garanta que o Apache possa ler os arquivos definindo o proprietário como www-data:

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chown -R www-data:www-data /var/www/test.com/public_html

3. Crie Arquivos HTML de Espaço Reservado

Crie um arquivo index.html básico para teste:

echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html
echo "<h1>Welcome to test.com</h1>" | sudo tee /var/www/test.com/public_html/index.html

4. Crie Arquivos de Configuração de Host Virtual

Os arquivos de configuração de host virtual são armazenados no diretório /etc/apache2/sites-available/.

Configuração de host virtual para example.com

Crie e edite o arquivo de configuração com o seguinte comando:

sudo nano /etc/apache2/sites-available/example.com.conf

Conteúdo do arquivo de configuração:

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

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

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

Configuração de host virtual para test.com

sudo nano /etc/apache2/sites-available/test.com.conf

Adicione o seguinte conteúdo:

<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html

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

    ErrorLog ${APACHE_LOG_DIR}/test.com_error.log
    CustomLog ${APACHE_LOG_DIR}/test.com_access.log combined
</VirtualHost>

5. Habilitar os Hosts Virtuais

Após criar os arquivos de configuração, habilite os hosts virtuais usando a2ensite:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

Testar a configuração do Apache

Verificar erros de sintaxe:

sudo apachectl configtest

Exemplo de saída:

Syntax OK

Se não houver erros, reinicie o Apache:

sudo systemctl restart apache2

6. Verificar Localmente (Editar o arquivo hosts)

Para testar hosts virtuais localmente, edite o arquivo hosts do seu PC.

sudo nano /etc/hosts

Adicione as seguintes linhas:

127.0.0.1 example.com
127.0.0.1 test.com

Salve o arquivo, depois abra um navegador e visite:

http://example.com/

Você deve ver “Bem-vindo ao example.com”.

Da mesma forma, visitando:

http://test.com/

deve exibir “Bem-vindo ao test.com”.

7. Solução de Problemas em Hosts Virtuais

Se os hosts virtuais não estiverem funcionando corretamente, verifique o seguinte:

1. Verificar os logs de erro do Apache

sudo tail -f /var/log/apache2/error.log

2. Confirmar que os arquivos de configuração estão habilitados

ls /etc/apache2/sites-enabled/

Se os arquivos .conf corretos estiverem listados, os hosts virtuais estão ativos.

3. Verificar as configurações de porta do Apache

Verifique se a porta 80 (HTTP) está configurada:

sudo nano /etc/apache2/ports.conf

Certifique-se de que a seguinte linha existe:

Listen 80

Resumo

Esta seção explicou como configurar hosts virtuais no Apache no Ubuntu.
Principais pontos:

  • Conceito e propósito dos hosts virtuais
  • Criar diretórios para cada site
  • Criar e habilitar arquivos de configuração de host virtual
  • Métodos de teste local usando o arquivo hosts
  • Solução de problemas comuns

5. Introduzindo SSL/TLS (Habilitando HTTPS)

O que é SSL/TLS?

SSL (Secure Sockets Layer) e TLS (Transport Layer Security) são tecnologias de criptografia usadas para garantir comunicação segura pela internet.

Benefícios de Habilitar SSL/TLS

Criptografa a comunicação (reduz o risco de dados serem interceptados ou alterados)
Melhora o ranking SEO do Google (sites HTTPS são priorizados)
Impede avisos de segurança do navegador (sites HTTP mostram “Não Seguro”)
Protege credenciais de login e transações online

Hoje, TLS (TLS 1.2 / 1.3) é recomendado, e versões mais antigas de SSL (SSL 3.0 e anteriores) estão obsoletas.

Obtendo um Certificado SSL Gratuito com Let’s Encrypt

Let’s Encrypt é uma Autoridade Certificadora (CA) que fornece certificados SSL gratuitos.
Usando certbot, você pode emitir um certificado facilmente e configurá-lo com o Apache.

Instalar o Cliente Let’s Encrypt (Certbot)

Instale certbot, o cliente oficial do Let’s Encrypt:

sudo apt update
sudo apt install certbot python3-certbot-apache -y

Automatizar a Configuração SSL do Apache

Você pode configurar o Apache automaticamente usando o seguinte comando:

sudo certbot --apache -d example.com -d www.example.com

Este comando realiza:

  1. Validação de domínio (desafio HTTP-01)
  2. Emissão de certificado SSL
  3. Configuração automática de SSL no Apache
  4. Redirecionamento opcional de HTTP para HTTPS

Verificar Operação SSL

Acesse a URL a seguir para confirmar que o HTTPS está habilitado:

https://example.com/

Se o seu navegador exibir um ícone de cadeado, o SSL foi aplicado com sucesso.

Configurando SSL Manualmente para Apache

Se você não deseja usar certbot --apache, pode configurar o SSL manualmente.

1. Habilitar o Módulo SSL do Apache

sudo a2enmod ssl
sudo systemctl restart apache2

2. Configurar o Virtual Host SSL

Edite o arquivo de configuração SSL /etc/apache2/sites-available/example.com-le-ssl.conf:

sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

Exemplo de configuração:

<VirtualHost *:443>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

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

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

3. Habilitar Configuração SSL e Reiniciar o Apache

sudo a2ensite example.com-le-ssl.conf
sudo systemctl restart apache2

Renovação Automática de Certificados SSL

Os certificados Let’s Encrypt são válidos por 90 dias. Para evitar renovações manuais, configure atualizações automáticas.

1. Testar Renovação Automática do Certbot

sudo certbot renew --dry-run

2. Verificar Agenda de Renovação

A agenda de renovação automática do Certbot está armazenada em /etc/cron.d/certbot.

sudo systemctl list-timers | grep certbot

Solução de Problemas de SSL

1. Certificado SSL Não Aplicado

Solução: Reinicie o Apache e verifique a configuração

sudo systemctl restart apache2
sudo apachectl configtest

2. Certificado Expirado

sudo certbot renew --force-renewal

3. Erros de Validação do Let’s Encrypt

Solução: Verifique as regras de firewall

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

Resumo

Esta seção explicou como instalar e configurar SSL gratuito usando Let’s Encrypt.
Principais pontos:

  • Fundamentos de SSL/TLS
  • Configurando Apache com Let’s Encrypt
  • Configuração manual de SSL
  • Renovação automática de certificados
  • Solução de problemas de SSL

6. Aprimorando a Segurança do Servidor Web

Configurando o Firewall (UFW)

Ubuntu usa UFW (Uncomplicated Firewall) para bloquear tráfego desnecessário e proteger o servidor.

Verificar as configurações atuais do firewall

sudo ufw status

Permitir apenas portas necessárias

Por padrão, bloqueie todo o tráfego de entrada e permita apenas as portas necessárias:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Abrir portas necessárias:

  • SSH (Porta 22)
    sudo ufw allow 22/tcp
    
  • HTTP (Porta 80)
    sudo ufw allow 80/tcp
    
  • HTTPS (Porta 443)
    sudo ufw allow 443/tcp
    

Habilitar o firewall

sudo ufw enable

Fortalecendo a Segurança SSH

SSH é um alvo comum de ataques de força bruta se deixado com as configurações padrão. Fortaleça a segurança aplicando configurações adequadas.

Alterar a Porta SSH

sudo nano /etc/ssh/sshd_config

Modifique estas linhas:

Port 2222  # Change from 22 to any unused port
PermitRootLogin no  # Disable root login
PasswordAuthentication no  # Disable password login (use SSH keys only)

Reinicie o SSH:

sudo systemctl restart ssh

.

Instalar o Fail2Ban

O Fail2Ban protege seu servidor banindo temporariamente endereços IP que tentam falhas repetidas de login SSH.

sudo apt install fail2ban -y

Edite a configuração:

sudo nano /etc/fail2ban/jail.local

Adicione o seguinte:

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 600

Habilite o Fail2Ban:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Endurecendo o Apache

Ocultar informações de versão do Apache

sudo nano /etc/apache2/conf-available/security.conf

Altere as seguintes configurações:

ServerTokens Prod
ServerSignature Off

Aplique as alterações:

sudo systemctl restart apache2

Desativar listagem de diretórios

sudo nano /etc/apache2/apache2.conf

Localize o bloco de diretório e atualize:

<Directory /var/www/>
    Options -Indexes +FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Reinicie o Apache:

sudo systemctl restart apache2

Desativar módulos desnecessários do Apache

sudo a2dismod autoindex
sudo a2dismod status
sudo systemctl restart apache2

Adicionando cabeçalhos de segurança

Os cabeçalhos de segurança protegem seu site contra ataques como cross-site scripting e clickjacking.

Habilitar mod_headers

sudo a2enmod headers
sudo systemctl restart apache2

Adicionar cabeçalhos de segurança

sudo nano /etc/apache2/sites-available/example.com.conf

Adicione o seguinte dentro do bloco <VirtualHost>:

<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

Reinicie o Apache:

sudo systemctl restart apache2

Solução de Problemas

Verificar configurações do firewall

sudo ufw status

Verificar configuração do Apache em busca de erros

sudo apachectl configtest

Exemplo de saída:

Syntax OK

Não é possível conectar via SSH após mudar a porta

Se o SSH não conectar após mudar a porta, especifique a nova porta ao conectar:

ssh -p 2222 user@server-ip

Resumo

Esta seção explicou como fortalecer a segurança do seu servidor web.
Principais pontos:

  • Configuração de regras de firewall UFW
  • Segurança do SSH (mudança de porta, Fail2Ban)
  • Endurecimento da segurança do Apache (ocultar informações de versão, desativar listagem)
  • Adição de cabeçalhos de segurança

7. Otimização de Desempenho

Ajustando o Apache

A configuração padrão do Apache pode não oferecer desempenho ideal. Aplicando os ajustes a seguir, você pode alcançar um desempenho significativamente maior.

Otimização do MPM (Módulo de Multi-Processamento)

O MPM (Módulo de Multi-Processamento) determina como o Apache lida com as requisições.

Verifique o MPM atual:

apachectl -M | grep mpm

Exemplo de saída:

mpm_prefork_module (shared)

Se o mpm_prefork_module estiver habilitado, mudar para mpm_event pode melhorar o desempenho.

Altere o MPM:

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2

Habilitar KeepAlive

KeepAlive (conexões persistentes) permite que os clientes reutilizem conexões existentes, reduzindo a sobrecarga de requisições.

Edite o arquivo de configuração:

sudo nano /etc/apache2/apache2.conf

Confirme as seguintes configurações:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Reinicie o Apache:

sudo systemctl restart apache2

Usando Cache

Ao utilizar cache de navegador e cache no servidor, você pode reduzir requisições desnecessárias e melhorar significativamente a velocidade de resposta.

Habilitar mod_expires (Cache do Navegador)

sudo a2enmod expires
sudo systemctl restart apache2

Adicione o seguinte a /etc/apache2/sites-available/example.com.conf:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
</IfModule>

Reiniciar o Apache:

sudo systemctl restart apache2

Habilitar mod_cache (Cache do Servidor)

sudo a2enmod cache cache_disk
sudo systemctl restart apache2

Adicione o seguinte a /etc/apache2/sites-available/example.com.conf:

<IfModule mod_cache.c>
    CacheEnable disk /
    CacheRoot /var/cache/apache2/mod_cache_disk
    CacheDefaultExpire 86400
</IfModule>

Reiniciar o Apache:

sudo systemctl restart apache2

Habilitar Compressão

Use mod_deflate para comprimir os dados do site e reduzir o tamanho da transferência.

Habilitar mod_deflate

sudo a2enmod deflate
sudo systemctl restart apache2

Adicione o seguinte a /etc/apache2/sites-available/example.com.conf:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

Reiniciar o Apache:

sudo systemctl restart apache2

Limitação de Recursos

Para se preparar para tráfego intenso ou acesso potencialmente malicioso, defina limites de recursos usando módulos do Apache.

Habilitar mod_ratelimit

sudo a2enmod ratelimit
sudo systemctl restart apache2

Adicione o seguinte a /etc/apache2/sites-available/example.com.conf:

<Location />
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 200
</Location>

Reiniciar o Apache:

sudo systemctl restart apache2

Solucionando Problemas de Desempenho

Verificar o Log de Erros do Apache

sudo tail -f /var/log/apache2/error.log

Verificar o Status de Carga do Apache

sudo apachectl status

Verificar o Uso de CPU e Memória

top

ou

htop

Se o htop não estiver instalado:

sudo apt install htop

Resumo

Esta seção explicou como otimizar o desempenho do servidor web.
Principais pontos:

  • Ajuste do Apache (otimização do MPM e configurações KeepAlive)
  • Uso de cache (cache do navegador e cache do servidor)
  • Compressão de dados com mod_deflate
  • Controle de recursos usando mod_ratelimit

8. Solução de Problemas

Apache Não Inicia

Se o Apache falhar ao iniciar, um erro de configuração é a causa mais comum.

1. Verificar Mensagens de Erro

sudo systemctl status apache2

2. Testar Configuração

sudo apachectl configtest

Se a saída incluir “Erro de sintaxe”, verifique o caminho ou as configurações listadas na mensagem de erro.

3. Reiniciar o Apache

sudo systemctl restart apache2

Não é Possível Acessar o Servidor

Se o servidor não puder ser acessado em um navegador, verifique os itens a seguir.

1. Verificar Configurações do Firewall

sudo ufw status

Certifique-se de que as portas 80 e 443 estejam permitidas.

2. Verificar Status do Apache

sudo systemctl status apache2

3. Verificar Endereço IP do Servidor

hostname -I

Virtual Hosts Não Funcionando

Se os virtual hosts não se comportarem como esperado, verifique novamente a configuração.

1. Confirmar que os Arquivos de Virtual Host Estão Habilitados

ls /etc/apache2/sites-enabled/

Se o seu .conf não estiver listado, habilite-o:

sudo a2ensite example.com.conf
sudo systemctl restart apache2

2. Verificar Resolução de Nome de Host

Se estiver testando localmente, certifique-se de que o arquivo /etc/hosts contenha:

127.0.0.1 example.com

3. Verificar o Caminho do DocumentRoot

Caminhos incorretos frequentemente causam problemas de virtual host.

DocumentRoot /var/www/example.com/public_html

Problemas com Certificado SSL

1. HTTPS Não Funciona

Confirme que o SSL está habilitado:

sudo apachectl -M | grep ssl

Ative se necessário:

sudo a2enmod ssl
sudo systemctl restart apache2

2. Certificado Expirou

sudo certbot renew

3. Falha na Validação do Let’s Encrypt

A validação HTTP requer que a porta 80 esteja aberta.

sudo ufw allow 80/tcp
sudo systemctl restart apache2

Desempenho Lento do Site

1. Verificar Carga do Servidor

top

2. Revisar Logs do Apache

sudo tail -f /var/log/apache2/access.log

3. Confirmar Configurações de Cache

Certifique‑se de que mod_expires, mod_cache e mod_deflate estejam habilitados.

Erros de Permissão (403 Proibido)

Esse erro geralmente indica permissões incorretas de arquivos ou diretórios.

1. Verificar Propriedade do Diretório

sudo chown -R www-data:www-data /var/www/example.com

2. Verificar Permissões do Diretório

sudo chmod -R 755 /var/www/example.com

Monitoramento de Logs de Erro

Sempre monitore os logs de erro durante a solução de problemas:

sudo tail -f /var/log/apache2/error.log

Resumo

Esta seção forneceu métodos para solucionar problemas comuns com seu servidor web Ubuntu.
Pontos principais:

  • Erros de inicialização do Apache e verificações de configuração
  • Problemas relacionados ao firewall e rede
  • Problemas de configuração de hosts virtuais
  • Erros e renovações de certificados SSL
  • Solução de problemas de desempenho e permissões

9. Resumo

Neste artigo, explicamos como construir um ambiente completo de servidor web no Ubuntu usando o Apache, juntamente com aprimoramentos de segurança, otimização de desempenho e técnicas de solução de problemas.

Seguindo este guia, você pode operar um servidor web estável, seguro e de alto desempenho adequado tanto para projetos pessoais quanto para aplicações de nível empresarial.

✔ Pontos Principais Abordados neste Guia

  • Instalar o Ubuntu e realizar a configuração inicial do sistema
  • Instalar e configurar o Apache
  • Configurar hosts virtuais para gerenciar múltiplos sites
  • Habilitar HTTPS usando certificados SSL gratuitos do Let’s Encrypt
  • Aprimorar a segurança do servidor (UFW, endurecimento do SSH, configurações do Apache)
  • Melhorar o desempenho (cache, compressão, ajuste do MPM)
  • Solucionar problemas comuns durante a operação do servidor

✔ O que Você Pode Conquistar Após Concluir Este Guia

  • Hospedar múltiplos sites em um único servidor Ubuntu
  • Garantir comunicação segura usando SSL/TLS moderno
  • Melhorar a velocidade e confiabilidade do site usando cache e compressão
  • Diagnosticar e resolver rapidamente problemas usando logs do Apache e ferramentas do sistema

✔ Próximos Passos Recomendados

  • Instalar PHP e MySQL/MariaDB para construir um ambiente LAMP completo
  • Implantar WordPress ou outro CMS
  • Implementar soluções de backup automático
  • Considerar o uso de serviços em nuvem (AWS, GCP, Azure, etc.)

Com configuração e manutenção adequadas, um servidor web Ubuntu pode oferecer estabilidade a longo prazo e desempenho excepcional.
Esperamos que este guia ajude você a construir um ambiente de servidor confiável e seguro.