Como instalar e configurar o Apache no Ubuntu e Windows
Aprende a instalar o servidor web Apache no Ubuntu e Windows, configurar virtual hosts, mod_rewrite e firewall.

Nesta página
Apache HTTP Server existe desde 1995 e continua a ser um dos web servers mais utilizados: recebe as requisições do browser e devolve as páginas, sozinho ou em conjunto com o PHP e uma base de dados. Vamos ver a instalação nos dois sistemas e depois os detalhes que vais precisar logo de seguida: firewall, hosts virtuais e módulos.
Instalar Apache no Ubuntu #
Os comandos funcionam no Ubuntu 26.04 LTS, a última versão com suporte de longo prazo (LTS), tal como nas versões LTS anteriores ainda suportadas, a 24.04 e a 22.04. São necessárias permissões de administrador.
Atualiza a lista de pacotes e instala o servidor:
sudo apt update sudo apt install apache2Verifica se o serviço arrancou:
sudo systemctl status apache2Se leres
active (running)está tudo em ordem. Caso contrário, arranca-o comsudo systemctl start apache2.Abre o browser em
http://localhost: deve aparecer a página predefinida «Apache2 Default Page». Se o servidor for outra máquina, vais precisar do endereço IP dela, que obténs comhostname -I(normalmente é o primeiro da lista), para escreveres no browser comohttp://indirizzo-ip.
Se vires esta página, o servidor está instalado e em escuta
Os comandos que vais usar com mais frequência daqui para a frente são quatro:
sudo systemctl start apache2 # avvia
sudo systemctl stop apache2 # ferma
sudo systemctl restart apache2 # riavvia
sudo systemctl reload apache2 # ricarica la configurazione senza interrompere le connessioni
Após uma alteração na configuração, usa reload: as requisições em curso não serão interrompidas.
O Apache arranca sozinho sempre que ligas o computador. Se não quiseres assim, desativa-o com sudo systemctl disable apache2 e reativa-o com sudo systemctl enable apache2.
A firewall UFW #
No Ubuntu, a firewall chama-se UFW e tem de ser instruída sobre quais as portas que deve deixar abertas. O Apache regista automaticamente três perfis:
sudo ufw app list
A lista mostra Apache (apenas porta 80), Apache Secure (apenas 443) e Apache Full (ambas). Eu abro diretamente a Apache Full, porque mais cedo ou mais tarde vais adicionar o certificado HTTPS; se por agora só precisares de HTTP, usa 'Apache':
sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status
sudo ufw allow OpenSSH. Ativar o UFW sem essa regra fecha a porta pela qual estás ligado e bloqueia-te o acesso ao servidor.Onde estão os ficheiros #
| Caminho | Conteúdo |
|---|---|
/var/www/html | Os ficheiros do site predefinido |
/etc/apache2/apache2.conf | Configuração principal |
/etc/apache2/ports.conf | As portas em que o Apache fica à escuta (80, e 443 com SSL) |
/etc/apache2/sites-available/ | Hosts virtuais disponíveis |
/etc/apache2/sites-enabled/ | Hosts virtuais ativos (ligações aos anteriores) |
/var/log/apache2/access.log | Log de acessos |
/var/log/apache2/error.log | Log de erros: o primeiro sítio onde deves olhar quando algo corre mal |
Instalar Apache no Windows #
Para Windows, o projeto distribui apenas o código-fonte e remete para compilações feitas por terceiros. A mais utilizada e atualizada é a da Apache Lounge, listada na página de download oficial. O Apache Haus, que encontras em muitos tutoriais, está desatualizado desde 2022: esquece isso.
Liberta a porta 80. Se tiveres ativado o IIS (o web server da Microsoft incluído nas edições Pro), desativa-o em Ativar ou desativar funcionalidades do Windows, retirando a marca de seleção a Serviços de Informações da Internet. Mais abaixo, encontras como descobrir que outro programa está a ocupar a porta.
Instala o Visual C++ Redistributable exigido pela compilação que escolheste: está indicado na página de download e é a causa mais comum de falhas no arranque.
Descarrega o ficheiro ZIP de 64 bits e extrai a pasta
Apache24paraC:\, para obteresC:\Apache24. É o caminho que a configuração predefinida espera encontrar.Abre o
C:\Apache24\conf\httpd.confcom um editor de texto. Se descompactaste noutro local, corrige a variávelSRVROOTno topo do ficheiro, que todas as outras diretivas usam como base, sempre utilizando barras normais:Define SRVROOT "c:/Apache24"Já que estás aí, retira o comentário à frente de
ServerNamee escreveServerName localhost:80: evitas o aviso AH00558 em cada arranque.Abre a Linha de Comandos (Prompt de comandos) como administrador e testa a configuração:
cd C:\Apache24\bin httpd.exe -tA resposta esperada é
Syntax OK. Se houver um erro, a mensagem indica o ficheiro e a linha que deves corrigir.Regista o Apache como um serviço do Windows, para que ele arranque sozinho sempre que ligas o PC:
httpd.exe -k installInicia o serviço e verifica em
http://localhost:httpd.exe -k start
Para o gerir mais tarde: httpd.exe -k stop para o parar, httpd.exe -k restart para o reiniciar, httpd.exe -k uninstall para remover o serviço. Também o encontras nos Serviços do Windows (services.msc) com o nome Apache2.4: ao dares um duplo clique, podes escolher se queres que ele arranque automaticamente ou manualmente. Em modo manual, inicias-no com net start Apache2.4 através de uma linha de comandos como administrador.
A instalação também inclui o ApacheMonitor.exe, um pequeno ícone na área de notificação para iniciares e parares o servidor sem teres de abrir a linha de comandos.
Se a porta 80 já estiver ocupada
No Windows, a porta 80 é frequentemente ocupada por outros programas: IIS, Skype em versões mais antigas ou alguns serviços do sistema. Para descobrires quem a está a usar, usa um prompt com privilégios de administrador:
netstat -aon | findstr :80
O último número da linha é o ID do processo, que podes procurar no Gestor de Tarefas, na aba Detalhes. Podes fechar esse programa ou mudar o Apache para outra porta, alterando em httpd.conf:
Listen 8080
Nesse caso, o site responderá em http://localhost:8080.
Mudar os ficheiros do site #
De uma forma geral, o Apache serve os ficheiros de C:\Apache24\htdocs. Se preferires manter os sites noutro disco, por exemplo para simplificar os backups, altera tanto em httpd.conf como em DocumentRoot e no bloco <Directory> que se segue:
DocumentRoot "D:/Siti"
<Directory "D:/Siti">
Depois, coloca um ficheiro index.html na pasta, reinicia o serviço e recarrega http://localhost.
E no macOS? #
O macOS tem uma versão do Apache pré-instalada, mas está desatualizada. É mais fácil instalares uma nova com Homebrew:
brew install httpd
brew services start httpd
Os ficheiros de configuração ficam em /opt/homebrew/etc/httpd/ nos Macs com Apple Silicon e o servidor responde, por defeito, na porta 8080.
Host virtuais: vários sites no mesmo servidor #
Um host virtual diz ao Apache qual a pasta deve servir com base no nome do site solicitado. Vale a pena usá-lo mesmo que tenhas apenas um site, porque manténs a configuração separada da predefinida.
No Ubuntu #
Cria a pasta do site e atribui as permissões:
sudo mkdir -p /var/www/esempio.test/public_html sudo chown -R $USER:$USER /var/www/esempio.test/public_htmlCria o ficheiro
/etc/apache2/sites-available/esempio.test.confcom este conteúdo:<VirtualHost *:80> ServerName esempio.test ServerAlias www.esempio.test DocumentRoot /var/www/esempio.test/public_html <Directory /var/www/esempio.test/public_html> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/esempio.test-error.log CustomLog ${APACHE_LOG_DIR}/esempio.test-access.log combined </VirtualHost>Ativa o site, desativa o predefinido e recarrega:
sudo a2ensite esempio.test.conf sudo a2dissite 000-default.conf sudo apache2ctl configtest sudo systemctl reload apache2Para testares localmente, adiciona a linha
127.0.0.1 esempio.testao ficheiro/etc/hosts.
A diretiva AllowOverride All é a que permite que os ficheiros .htaccess funcionem: sem ela, as regras de reescrita nas subpastas são ignoradas.
No Windows #
O mecanismo é o mesmo, mas os hosts virtuais ficam em conf/extra/httpd-vhosts.conf, que deve ser habilitado removendo o comentário na linha correspondente em httpd.conf:
Include conf/extra/httpd-vhosts.conf
Depois, defines os hosts com a mesma sintaxe vista acima, usando caminhos no estilo Windows (c:/siti/esempio/public_html), e adicionas a correspondência no ficheiro C:\Windows\System32\drivers\etc\hosts, que deve ser aberto com um editor como administrador.
Ativar mod_rewrite e outros módulos #
O mod_rewrite reescreve os endereços: é usado pelos URLs amigáveis do WordPress, pelo roteamento de frameworks PHP e por qualquer redirecionamento escrito num ficheiro .htaccess. Por defeito, está desativado.
No Ubuntu:
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod ssl
sudo systemctl restart apache2
No Windows, deves intervir em httpd.conf, removendo o comentário à frente das linhas dos módulos:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule headers_module modules/mod_headers.so
Em ambos os casos, o mod_rewrite só funciona se também houver AllowOverride All no bloco <Directory> da pasta do site. Quando as regras não funcionam, geralmente é porque falta precisamente isso.
Para veres a lista de módulos ativos: apache2ctl -M no Ubuntu, httpd.exe -M no Windows.
Quando algo não funciona #
O Apache não arranca. Testa a configuração com apache2ctl configtest ou httpd.exe -t: o erro indica o ficheiro e a linha. No Windows, verifica se instalaste o Visual C++ Redistributable necessário.
Erro 403 Forbidden. Permissões de pasta ou falta da diretiva Require all granted no bloco <Directory>. No Ubuntu, os ficheiros devem ser legíveis pelo utilizador www-data.
As regras de reescrita são ignoradas. Módulo desativado ou AllowOverride configurado para None.
A página predefinida aparece no lugar do site. O host virtual não foi ativado, ou o nome no ficheiro hosts não corresponde ao que está escrito em ServerName.
Em todos os casos, o primeiro sítio a verificar é o log de erros: /var/log/apache2/error.log no Ubuntu, C:\Apache24\logs\error.log no Windows.
Perguntas frequentes #
Qual é melhor, Apache ou Nginx? #
Depende da carga e do que precisas de servir. O Nginx aguenta melhor muitas conexões simultâneas consumindo pouco, sendo o mais usado em sites de alto tráfego. O Apache é mais simples para quem está a começar, aceita a configuração por pasta com os ficheiros .htaccess (o Nginx não) e é o que encontras na maioria das alojamentos partilhados. Frequentemente, usam-se juntos: Nginx à frente e Apache atrás.
Como adiciono suporte para PHP? #
No Ubuntu é apenas um comando: sudo apt install php libapache2-mod-php, seguido de um reinício do serviço. No Windows, o PHP deve ser descarregado à parte na versão «Thread Safe» e ligado ao Apache adicionando as linhas LoadModule e PHPIniDir em httpd.conf, tendo atenção para usar uma compilação a 64 bits como a do Apache.
Preciso de abrir portas no router para ser acessível pela internet? #
Sim, para seres visível externamente tens de fazer o encaminhamento das portas 80 e 443 para o teu computador. Pensa bem antes de o fazeres: um servidor exposto deve estar sempre atualizado e monitorizado. Se precisares apenas de mostrar um site a alguém, um túnel temporário ou um alojamento simples são opções mais seguras.
Como atualizo o Apache no Windows? #
Para o serviço com httpd.exe -k stop e faz uma cópia de httpd.conf, da pasta conf e dos ficheiros do site. Depois, extrai a nova versão por cima da antiga, sem sobrescrever a tua configuração, verifica com httpd.exe -t e reinicia. O serviço registado permanece o mesmo, não precisas de o reinstalar.
Como ativo o HTTPS? #
Num servidor público, o padrão é usar Let’s Encrypt com a ferramenta Certbot, que obtém o certificado e configura o Apache sozinho. Em ambiente local não precisas de uma autoridade de certificação: basta um certificado autofirmado. O browser vai sinalizá-lo como não confiável, mas podes testar o site em HTTPS na mesma.
Qual é a diferença entre restart e reload? #
restart para e reinicia o processo, cortando as conexões em curso. reload faz com que a configuração seja relida, permitindo que as requisições já iniciadas terminem: num servidor em uso, após uma alteração, usa este.

