Guia Completo do Servidor Web Ubuntu | Apache + SSL + Otimização [Para Iniciantes]

目次

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 o mais amplamente usado no Ubuntu é Apache.
O Ubuntu é leve, altamente estável e de código aberto, tornando-o uma escolha popular tanto para indivíduos quanto para empresas. Ele é particularmente adequado para construir uma pilha LAMP (Linux, Apache, MySQL/MariaDB, PHP), que é comumente usada para executar sites e aplicativos web.

Para Quem é Este Guia?

Este artigo é destinado a iniciantes que estão configurando um servidor web pela primeira vez. Ele fornece um guia passo a passo sobre como instalar o Apache no Ubuntu, configurar hosts virtuais, configurar certificados SSL, otimizar o desempenho e aprimorar a segurança.

O Que Você Aprenderá

  • Como configurar um servidor web no Ubuntu (Instalando e configurando Apache)
  • Configurando hosts virtuais para gerenciar múltiplos sites
  • Instalando certificados SSL gratuitos com Let’s Encrypt
  • Aprimorando segurança e otimizando o desempenho do servidor
  • Solucionando problemas comuns de servidores web

2. Instalando e Configuração Inicial do Ubuntu

Requisitos do Sistema

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

ComponentMinimum 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

Você pode baixar o Ubuntu do site oficial: https://ubuntu.com/download/server. Uma vez que você obtenha o arquivo ISO, você pode instalá-lo usando VirtualBox ou VMware para um ambiente virtual, ou em um servidor dedicado ou VPS.

Passos de Instalação:

  1. Criar mídia de instalação
  • Use um pendrive (com ferramentas como Rufus)
  • Monte o arquivo ISO em uma máquina virtual
  1. Seguir o assistente de instalação
  • Defina o idioma como Inglês
  • Verifique a conectividade de rede
  • Configure nome de usuário e senha
  • Instale o servidor SSH (opcional, pode ser feito depois)
  1. Completar a configuração do SO e reiniciar
  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 pacotes do sistema
sudo apt update && sudo apt upgrade -y

→ Isso garante que patches de segurança e atualizações de software sejam aplicados.

  1. Definir o fuso horário
sudo timedatectl set-timezone America/New_York

→ Defina o fuso horário para corresponder à localização do seu servidor.

  1. Ativar o firewall
sudo ufw enable

→ Isso protege o servidor contra acesso não autorizado.

  1. Configurar SSH (para gerenciamento remoto)
  • Verifique se o SSH está ativado: sudo systemctl status ssh
  • Se não estiver ativado, inicie-o: sudo systemctl enable --now ssh

Uma vez que essas configurações iniciais sejam aplicadas, o servidor Ubuntu está pronto para ser configurado como um servidor web.

3. Instalando e Configurando o Apache

O que é o Apache?

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

Principais Recursos:

  • Gratuito e de código aberto
  • Arquitetura modular para personalização fácil
  • Suporte a SSL/TLS para conexões HTTPS seguras
  • Suporte a host virtual para gerenciar 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 você vir esta mensagem, o Apache foi instalado com sucesso.

Iniciando, Parando e Reiniciando o Apache

O Apache é gerenciado usando o comando systemctl.

Iniciar o Apache

sudo systemctl start apache2

Ativar o Apache para Iniciar na Inicialização

sudo systemctl enable apache2

Verificar o Status do Apache

Para confirmar que o Apache está em execução:

sudo systemctl status apache2

Se o Apache estiver em execução, você verá um status “active (running)”.

Reiniciar ou Parar o Apache

Se precisar reiniciar o Apache após fazer alterações de configuração:

sudo systemctl restart apache2

Para parar o Apache temporariamente:

sudo systemctl stop apache2

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

O que é um Host Virtual?

Um host virtual é um recurso que permite que um único servidor Apache hospede múltiplos domínios (ou subdomínios). Por exemplo, um único servidor pode hospedar tanto example.com quanto test.com.

Existem dois tipos de hosts virtuais:

  1. Host Virtual baseado em Nome
  • Hospeda vários sites no mesmo endereço IP
  • A forma mais comum de gerenciar múltiplos sites
  1. Host Virtual baseado em IP
  • Cada site recebe um endereço IP diferente
  • Requer múltiplas interfaces de rede no servidor

Normalmente, utiliza‑se o host virtual baseado em nome.

Passos para Configurar Hosts Virtuais

1. Criar Diretórios para Cada Site

Cada host virtual requer um diretório dedicado para armazenar os arquivos do site.

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

2. Alterar a Propriedade dos Diretórios

Para garantir que o Apache possa acessar os arquivos, defina 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. Criar um Arquivo HTML de Teste

Para verificação, crie um arquivo index.html para cada site.

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. Criar Arquivos de Configuração do Host Virtual

As configurações dos hosts virtuais são armazenadas em /etc/apache2/sites-available/.

Configuração para example.com

Crie e edite um arquivo de configuração:

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

Adicione a seguinte 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 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 Hosts Virtuais

Depois que os arquivos de configuração forem criados, habilite‑os com a2ensite.

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

Testar Configuração do Apache

Verifique se há erros de sintaxe:

sudo apachectl configtest

Se a saída for:

Syntax OK

Reinicie o Apache para aplicar as alterações:

sudo systemctl restart apache2

6. Testando Localmente (Editando o Arquivo hosts)

Para verificar se os hosts virtuais funcionam corretamente, edite seu arquivo hosts local.

sudo nano /etc/hosts

Adicione as linhas a seguir:

127.0.0.1 example.com
127.0.0.1 test.com

Após salvar, abra um navegador e digite:

http://example.com/

Se você vir “Welcome to example.com”, a configuração foi bem‑sucedida.

5. Habilitando SSL/TLS (HTTPS)

O que é SSL/TLS?

SSL (Secure Sockets Layer) e TLS (Transport Layer Security) são tecnologias de criptografia que protegem a comunicação na internet.

Benefícios do SSL/TLS:

Criptografa a comunicação (reduz os riscos de roubo de dados e adulteração)
Aumenta o ranking de SEO (Google prioriza sites HTTPS nos resultados de busca)
Previne avisos do navegador (sites HTTP podem exibir “Não Seguro”)
Protege pagamentos online e credenciais de login

Usando Let’s Encrypt para SSL Gratuito

Let’s Encrypt é uma autoridade certificadora que fornece certificados SSL gratuitos. Usamos certbot para configurá-lo facilmente.

Instalar Certbot

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

Configurar SSL Automaticamente para Apache

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

Verificar se o HTTPS está Funcionando

Após a instalação, verifique:

https://example.com/

Se você vir um ícone de cadeado no navegador, o SSL está funcionando.

6. Melhorando a Segurança do Servidor Web

Configurando um Firewall (UFW)

Ativar o Firewall e Abrir Portas Necessárias

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp   # SSH
sudo ufw allow 80/tcp   # HTTP
sudo ufw allow 443/tcp  # HTTPS
sudo ufw enable

Protegendo o SSH

Alterar a Porta do SSH

sudo nano /etc/ssh/sshd_config

Alterar:

Port 2222  # Change 22 to a custom port

Reiniciar o SSH:

sudo systemctl restart ssh

7. Otimização de Desempenho

Ajuste do Apache

Por padrão, o Apache nem sempre está otimizado para lidar com alto tráfego de forma eficiente. Você pode ajustar as seguintes configurações para melhorar o desempenho.

Otimizando o MPM (Módulo de Multi-Processamento)

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

Verifique a configuração atual do MPM:

apachectl -M | grep mpm

Exemplo de saída:

mpm_prefork_module (shared)

Se você vir mpm_prefork_module, considere mudar para mpm_event para melhor desempenho.

Mudar para MPM Event:

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2

Habilitando KeepAlive

KeepAlive permite conexões persistentes, reduzindo o número de novas requisições.

Edite o arquivo de configuração do Apache:

sudo nano /etc/apache2/apache2.conf

Adicione ou modifique as seguintes configurações:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Reinicie o Apache:

sudo systemctl restart apache2

Aproveitando o Cache

Usar cache no navegador e no servidor reduz requisições redundantes, melhorando os tempos de resposta.

Habilitar mod_expires para Cache no Navegador

sudo a2enmod expires
sudo systemctl restart apache2

Edite o arquivo de configuração do seu host virtual:

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

Adicione:

<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>

Reinicie o Apache:

sudo systemctl restart apache2

Habilitar Compressão Gzip

Habilite a compressão para reduzir o tamanho dos arquivos e melhorar a velocidade de carregamento.

Habilitar mod_deflate

sudo a2enmod deflate
sudo systemctl restart apache2

Edite o arquivo de configuração do host virtual:

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

Adicione:

<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>

Reinicie o Apache:

sudo systemctl restart apache2

Limitando Recursos

Para evitar uso excessivo de recursos, limite o número de conexões por IP.

Habilitar mod_ratelimit

sudo a2enmod ratelimit
sudo systemctl restart apache2

Edite o arquivo de configuração do host virtual:

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

Adicione:

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

Reinicie o Apache:

sudo systemctl restart apache2

8. Solução de Problemas

O Apache Não Inicia ou Para Inesperadamente

Verificar o Status do Apache

sudo systemctl status apache2

Se a saída contiver:

Active: failed

Então ocorreu um erro.

Verificar os Logs de Erro

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

Verificar Conflitos de Porta

sudo netstat -tulnp | grep ':80'

Ou:

sudo lsof -i:80

Problemas com Certificado SSL

Certificado SSL Expirado

sudo certbot renew --force-renewal

Erro de Configuração SSL do Apache

Edite o arquivo de configuração SSL do Apache:

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

Verifique:

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

Reinicie o Apache:

sudo systemctl restart apache2

Site Não Carrega (Erros 403, 404, 500)

403 Proibido

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

404 Não Encontrado

Verifique a configuração do host virtual:

DocumentRoot /var/www/example.com/public_html

Habilite mod_rewrite se necessário:

sudo a2enmod rewrite
sudo systemctl restart apache2

500 Erro Interno do Servidor

Verifique os logs de erro:

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

Tente renomear .htaccess:

mv /var/www/example.com/public_html/.htaccess /var/www/example.com/public_html/.htaccess.bak

9. Resumo

O Que Você Aprendeu

Vamos revisar os principais tópicos abordados neste guia.

SectionKey Points
1. IntroductionOverview of Ubuntu Web Server and the purpose of this guide
2. Installing and Initial Setup of UbuntuSetting up Ubuntu, updating packages, and configuring the firewall
3. Installing and Configuring ApacheInstalling Apache, starting the service, and verifying functionality
4. Configuring Virtual HostsHosting multiple websites on a single Apache server
5. Enabling SSL/TLSUsing Let’s Encrypt for HTTPS setup
6. Enhancing Web Server SecurityFirewall setup, SSH security, and Apache hardening
7. Performance OptimizationUsing caching, compression, and tuning Apache settings
8. TroubleshootingFixing Apache errors, SSL issues, and common website errors

Próximos Passos

Agora que seu servidor web Ubuntu está configurado e em funcionamento, considere aprender sobre tópicos mais avançados para melhorar as capacidades do seu servidor:

Implantando aplicações WordPress ou PHP
Configurando um servidor de banco de dados (MySQL / MariaDB)
Configurando Nginx como proxy reverso para Apache
Implementando autoescalonamento com plataformas de nuvem (AWS, GCP, Azure)
Log avançado e monitoramento (Fail2Ban, Logwatch, Prometheus)

Perguntas Frequentes (FAQ)

Q1: Devo escolher Nginx ou Apache para o meu servidor web?

A1: Se o seu site serve principalmente conteúdo estático, Nginx é recomendado. Se você precisa de processamento de conteúdo dinâmico (como PHP), Apache é uma escolha melhor. Você também pode usar Nginx como proxy reverso na frente do Apache.

Q2: Os certificados SSL podem ser renovados automaticamente?

A2: Sim, o Certbot suporta renovação automática. Você pode verificar o status da renovação com:

sudo certbot renew --dry-run

Para renovação totalmente automática, recomenda-se configurar um job cron.

Q3: Como posso melhorar ainda mais a segurança do meu servidor?

A3: Implemente Fail2Ban para prevenir ataques de força bruta, oculte detalhes da versão do Apache, desative módulos não usados e aplique práticas de segurança SSH robustas.

Q4: Como posso melhorar o desempenho do Apache?

A4: Troque para MPM Event, habilite cache (mod_cache), use compressão gzip (mod_deflate) e otimize as configurações KeepAlive.

Q5: Por que estou recebendo um erro “403 Proibido”?

A5: Certifique-se de que a propriedade do diretório esteja definida como www-data e ajuste as permissões dos arquivos:

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

Considerações Finais

Configurar um servidor web Ubuntu envolve várias etapas, desde a instalação e configuração até a otimização e solução de problemas. Contudo, uma vez que você compreenda o processo, pode construir e gerenciar um ambiente de hospedagem web poderoso.

🚀 Siga este guia para criar um servidor web seguro, rápido e confiável, e continue aprimorando suas habilidades como administrador de servidores! 🚀

年収訴求