Passo a passo para instalar o servidor web Apache no Ubuntu 24.04 ou 22.04, liberar o firewall, ativar o PHP e testar o site no navegador.
O Apache é o servidor web mais usado em servidores Linux. No Ubuntu ele vem pronto no repositório oficial, com o pacote apache2, e em poucos minutos já entrega páginas. Aqui você instala o Apache, libera as portas 80 e 443, acrescenta o PHP e aprende os comandos do dia a dia.
Antes de começar
- Acesso ao servidor por SSH com um usuário que tenha
sudo(veja como acessar o SSH). - Nenhum outro servidor web (como o Nginx) ocupando a porta 80.
Como instalar o Apache no Ubuntu
- Atualize a lista de pacotes e instale o Apache.
No Ubuntu e no Debian o serviço já fica ativo e configurado para subir junto com o servidor.sudo apt update sudo apt install apache2 - Confira se o serviço está rodando.
O esperado ésystemctl status apache2active (running). Tecle q para sair. - Libere o Apache no firewall. Se o UFW estiver ativo (veja com
sudo ufw status), libere HTTP e HTTPS de uma vez:
O perfilsudo ufw allow 'Apache Full'Apache Fullabre as portas 80 e 443. Se o UFW estiver inativo, pule este passo. - Teste no navegador. Descubra o IP com
hostname -Ie abrahttp://203.0.113.10(troque pelo seu IP). Deve aparecer a página Apache2 Default Page. Pelo próprio terminal,curl -I http://localhostdeve responderHTTP/1.1 200 OK.
Onde ficam os arquivos do site
/var/www/html: pasta do site padrão. Troque oindex.htmlpelos seus arquivos./etc/apache2/sites-available/: configuração de cada site (virtual host). O padrão é o000-default.conf./var/log/apache2/error.logeaccess.log: logs de erro e de acessos.
Para hospedar mais de um domínio no mesmo servidor, crie um virtual host para cada um, como explicado em Apache Virtual Hosts no Ubuntu e no Debian.
Como instalar o PHP no Apache
O artigo antigo instalava o php5, que não existe mais. Hoje o pacote php instala a versão padrão de cada sistema: PHP 8.3 no Ubuntu 24.04, PHP 8.1 no Ubuntu 22.04 e PHP 8.2 no Debian 12.
sudo apt install php libapache2-mod-php php-mysql
sudo systemctl restart apache2
Para testar, crie uma página de diagnóstico, abra http://203.0.113.10/info.php e confira a versão:
echo '<?php phpinfo();' | sudo tee /var/www/html/info.php
info.php logo depois do teste (sudo rm /var/www/html/info.php). Ele mostra detalhes do servidor que ajudam quem procura falhas.Comandos do dia a dia
| Comando | Para que serve |
|---|---|
sudo systemctl reload apache2 | Aplica mudanças de configuração sem derrubar conexões |
sudo systemctl restart apache2 | Reinicia o serviço (necessário ao ativar módulos) |
sudo apache2ctl configtest | Confere a configuração; o esperado é Syntax OK |
sudo a2enmod rewrite | Ativa o mod_rewrite (URLs amigáveis do WordPress e de outros sistemas) |
sudo a2ensite site.conf / sudo a2dissite site.conf | Ativa ou desativa um site |
configtest antes do reload. Um erro de digitação na configuração impede o Apache de voltar, e todos os sites ficam fora do ar.Ativar o HTTPS
Com o domínio já apontado para o IP do servidor e um virtual host com ServerName configurado, o Certbot emite um certificado gratuito da Let's Encrypt e ajusta o Apache:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d seudominio.com.br -d www.seudominio.com.br
Problemas comuns
AH00558: Could not reliably determine the server's fully qualified domain name
É só um aviso: o Apache funciona assim mesmo. Para eliminá-lo, defina um nome global:
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf
sudo a2enconf servername
sudo systemctl reload apache2
Address already in use: could not bind to address 0.0.0.0:80
Outro programa ocupa a porta 80, quase sempre o Nginx. Descubra qual é com sudo ss -tlnp | grep ':80 ' e pare ou remova o outro serviço.
O navegador baixa o arquivo PHP ou mostra o código
O módulo PHP do Apache não está ativo. Instale o libapache2-mod-php como mostrado acima e reinicie o Apache.
Funciona no servidor, mas não abre de fora
Confira o firewall (sudo ufw status) e se existe algum firewall externo, no painel do provedor, bloqueando as portas 80 e 443.
As regras do arquivo .htaccess são ignoradas
No Ubuntu, a pasta /var/www vem com AllowOverride None. Mude para AllowOverride All no bloco <Directory> do seu site, ative o rewrite e recarregue o Apache.