---
title: "Como instalar e configurar o Apache no Ubuntu e Windows"
description: "Aprende a instalar o servidor web Apache no Ubuntu e Windows, configurar virtual hosts, mod_rewrite e firewall."
url: "https://www.alemasone.com/pt/instalar-configurar-apache-ubuntu-windows/"
language: "pt"
published: 2024-03-20
updated: 2026-09-19
categories: ["Programação E Desenvolvimento"]
translations:
  it: "https://www.alemasone.com/it/installare-apache-ubuntu-windows/"
  en: "https://www.alemasone.com/en/install-configure-apache-ubuntu-windows/"
  es: "https://www.alemasone.com/es/instalar-configurar-apache-ubuntu-windows/"
  fr: "https://www.alemasone.com/fr/installer-configurer-apache-ubuntu-windows/"
  de: "https://www.alemasone.com/de/apache-ubuntu-windows-installieren-konfigurieren/"
---

# Como instalar e configurar o Apache no Ubuntu e Windows

No Ubuntu o Apache instala-se com um comando e arranca sozinho. No Windows, por outro lado, tens de o descarregar, descompactar e registar como serviço manualmente, porque a Apache Software Foundation não distribui um instalador. A versão estável atual é a 2.4.68, lançada a 8 de junho de 2026.

[Apache HTTP Server](https://httpd.apache.org/) 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.

1. Atualiza a lista de pacotes e instala o servidor:

   ```bash
   sudo apt update
   sudo apt install apache2
   ```

2. Verifica se o serviço arrancou:

   ```bash
   sudo systemctl status apache2
   ```

   Se leres `active (running)` está tudo em ordem. Caso contrário, arranca-o com `sudo systemctl start apache2`.

3. 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 com `hostname -I` (normalmente é o primeiro da lista), para escreveres no browser como `http://indirizzo-ip`.

   ![Página «Apache2 Ubuntu Default Page» aberta no browser após a instalação](pagina-predefinita-apache-ubuntu.png "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:

```bash
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:

```bash
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'`:

```bash
sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status
```

> **Atenção ao SSH.** Se estiveres a trabalhar num [servidor remoto via SSH](/pt/configurar-ssh-ubuntu-seguranca/), autoriza a ligação SSH **antes** de ativares a firewall, com `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](https://www.apachelounge.com/)**, listada na [página de download oficial](https://httpd.apache.org/download.cgi). O **Apache Haus**, que encontras em muitos tutoriais, está desatualizado desde 2022: esquece isso.

> **Só precisas de um ambiente de desenvolvimento?** Se quiseres trabalhar localmente com PHP e MySQL, um pacote completo como o Laragon ou WampServer poupa-te todos os passos seguintes. A instalação manual faz sentido quando queres escolher a tua própria versão e configuração, perceber como o servidor funciona ou mantê-lo ligado permanentemente.

1. Liberta a porta 80. Se tiveres ativado o [IIS](/pt/instalar-certificado-ssl-windows-lets-encrypt/) (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.

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

3. Descarrega o ficheiro ZIP de 64 bits e extrai a pasta `Apache24` para `C:\`, para obteres `C:\Apache24`. É o caminho que a configuração predefinida espera encontrar.

4. Abre o `C:\Apache24\conf\httpd.conf` com um editor de texto. Se descompactaste noutro local, corrige a variável `SRVROOT` no topo do ficheiro, que todas as outras diretivas usam como base, sempre utilizando barras normais:

   ```apache
   Define SRVROOT "c:/Apache24"
   ```

   Já que estás aí, retira o comentário à frente de `ServerName` e escreve `ServerName localhost:80`: evitas o aviso AH00558 em cada arranque.

5. Abre a Linha de Comandos (Prompt de comandos) **como administrador** e testa a configuração:

   ```bat
   cd C:\Apache24\bin
   httpd.exe -t
   ```

   A resposta esperada é `Syntax OK`. Se houver um erro, a mensagem indica o ficheiro e a linha que deves corrigir.

6. Regista o Apache como um serviço do Windows, para que ele arranque sozinho sempre que ligas o PC:

   ```bat
   httpd.exe -k install
   ```

7. Inicia o serviço e verifica em `http://localhost`:

   ```bat
   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:

```bat
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`:

```apache
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:

```apache
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](https://brew.sh/):

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

1. Cria a pasta do site e atribui as permissões:

   ```bash
   sudo mkdir -p /var/www/esempio.test/public_html
   sudo chown -R $USER:$USER /var/www/esempio.test/public_html
   ```

2. Cria o ficheiro `/etc/apache2/sites-available/esempio.test.conf` com este conteúdo:

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

3. Ativa o site, desativa o predefinido e recarrega:

   ```bash
   sudo a2ensite esempio.test.conf
   sudo a2dissite 000-default.conf
   sudo apache2ctl configtest
   sudo systemctl reload apache2
   ```

4. Para testares localmente, adiciona a linha `127.0.0.1 esempio.test` ao 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`:

```apache
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:

```bash
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:

```apache
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](https://nginx.org/) 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](https://letsencrypt.org/) com a ferramenta [Certbot](https://certbot.eff.org/), 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.
