---
title: "Installer et configurer Apache sur Ubuntu et Windows"
description: "Guide complet pour installer le serveur web Apache sur Ubuntu et Windows, incluant la configuration des virtual hosts, mod_rewrite et du pare-feu."
url: "https://www.alemasone.com/fr/installer-configurer-apache-ubuntu-windows/"
language: "fr"
published: 2024-03-20
updated: 2026-09-19
categories: ["Programmation Et Développement"]
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/"
  pt: "https://www.alemasone.com/pt/instalar-configurar-apache-ubuntu-windows/"
  de: "https://www.alemasone.com/de/apache-ubuntu-windows-installieren-konfigurieren/"
---

# Installer et configurer Apache sur Ubuntu et Windows

Sur Ubuntu, Apache s'installe avec une commande et démarre automatiquement. Sur Windows, en revanche, vous devez le télécharger, l'extraire et l'enregistrer manuellement en tant que service, car la Apache Software Foundation ne fournit pas de programme d'installation. La version stable actuelle est la 2.4.68, parue le 8 juin 2026.

[Apache HTTP Server](https://httpd.apache.org/) existe depuis 1995 et reste l'un des serveurs web les plus utilisés : il reçoit les requêtes du navigateur et renvoie les pages, seul ou en combinaison avec PHP et une base de données. Voyons l'installation sur les deux systèmes, puis les éléments dont vous aurez besoin juste après : le pare-feu, les hôtes virtuels et les modules.

## Installer Apache sur Ubuntu

Les commandes sont valables pour Ubuntu 26.04 LTS, la dernière version avec support à long terme, ainsi que pour les versions LTS précédentes encore supportées, la 24.04 et la 22.04. Les permissions d'administrateur sont nécessaires.

1. Mettez à jour la liste des paquets et installez le serveur :

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

2. Vérifiez que le service est bien démarré :

   ```bash
   sudo systemctl status apache2
   ```

   Si vous lisez `active (running)`, tout est en ordre. Sinon, démarrez-le avec `sudo systemctl start apache2`.

3. Ouvrez votre navigateur sur `http://localhost` : la page par défaut « Apache2 Default Page » doit apparaître. Si le serveur est une autre machine, vous aurez besoin de son adresse IP, que vous obtiendrez avec `hostname -I` (généralement la première de la liste), à saisir dans le navigateur comme `http://indirizzo-ip`.

   ![Page « Apache2 Ubuntu Default Page » ouverte dans le navigateur après l'installation](pagina-predefinita-apache-ubuntu.png "Si vous voyez cette page, le serveur est installé et en écoute")

Les quatre commandes que vous utiliserez le plus souvent par la suite sont les suivantes :

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

Après une modification de la configuration, utilisez `reload` : les requêtes en cours ne seront pas interrompues.

Apache démarre automatiquement à chaque démarrage du système. Si vous ne le souhaitez pas, désactivez-le avec `sudo systemctl disable apache2` et réactivez-le avec `sudo systemctl enable apache2`.

### Le pare-feu UFW

Sur Ubuntu, le pare-feu s'appelle UFW et doit être configuré pour autoriser certaines ports. Apache enregistre automatiquement trois profils :

```bash
sudo ufw app list
```

La liste affiche `Apache` (uniquement le port 80), `Apache Secure` (uniquement le 443) et `Apache Full` (les deux). Je recommande d'ouvrir directement `Apache Full`, car vous ajouterez tôt ou tard un certificat HTTPS ; si l'HTTP vous suffit pour l'instant, utilisez `'Apache'` :

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

> **Attention au SSH.** Si vous travaillez sur un [serveur distant via SSH](/fr/installer-configurer-ssh-ubuntu-securite/), autorisez la connexion SSH **avant** d'activer le pare-feu avec `sudo ufw allow OpenSSH`. Activer UFW sans cette règle fermera le port par lequel vous êtes connecté et vous coupera l'accès au serveur.

### Emplacement des fichiers

| Chemin | Contenu |
|----------|-----------|
| `/var/www/html` | Les fichiers du site par défaut |
| `/etc/apache2/apache2.conf` | Configuration principale |
| `/etc/apache2/ports.conf` | Les ports sur lesquels Apache reste en écoute (80, et 443 avec SSL) |
| `/etc/apache2/sites-available/` | Hôtes virtuels disponibles |
| `/etc/apache2/sites-enabled/` | Hôtes virtuels actifs (liens vers les précédents) |
| `/var/log/apache2/access.log` | Journal d'accès (logs) |
| `/var/log/apache2/error.log` | Journal d'erreurs : le premier endroit à vérifier quand quelque chose ne fonctionne pas |

## Installer Apache sur Windows

Pour Windows, le projet ne distribue que le code source et renvoie vers des compilations réalisées par des tiers. La plus utilisée et la plus à jour est celle de **[Apache Lounge](https://www.apachelounge.com/)**, répertoriée sur la [page de téléchargement officielle](https://httpd.apache.org/download.cgi). **Apache Haus**, que vous trouverez dans de nombreux guides, n'a pas été mis à jour depuis 2022 : oubliez-la.

> **Vous avez seulement besoin d'un environnement de développement ?** Si vous souhaitez travailler en local avec PHP et MySQL, un pack complet comme Laragon ou WampServer vous évitera toutes les étapes suivantes. L'installation manuelle est pertinente si vous voulez choisir votre version et votre configuration, comprendre le fonctionnement du serveur ou le maintenir allumé en permanence.

1. Libérez le port 80. Si vous avez activé [IIS](/fr/installer-certificat-ssl-windows-lets-encrypt/), le serveur web de Microsoft inclus dans les éditions Pro, désactivez-le via **Activer ou désactiver des fonctionnalités Windows** en décochant **Services Internet (IIS)**. Plus bas, vous trouverez comment identifier quel autre programme occupe le port.

2. Installez le **Visual C++ Redistributable** requis par la version choisie : il est indiqué sur la page de téléchargement et constitue la cause la plus fréquente d'échecs au démarrage.

3. Téléchargez l'archive ZIP 64 bits et extrayez le dossier `Apache24` dans `C:\`, afin d'obtenir `C:\Apache24`. C'est le chemin attendu par la configuration par défaut.

4. Ouvrez `C:\Apache24\conf\httpd.conf` avec un éditeur de texte. Si vous avez extrait les fichiers ailleurs, corrigez la variable `SRVROOT` en haut du fichier, qui sert de base à toutes les autres directives, en utilisant toujours des barres obliques :

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

   Profitez-en pour retirer le dièse devant `ServerName` et écrivez `ServerName localhost:80` : cela vous évitera l'avertissement AH00558 à chaque démarrage.

5. Ouvrez l'Invite de commandes **en tant qu'administrateur** et testez la configuration :

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

   La réponse attendue est `Syntax OK`. En cas d'erreur, le message indique le fichier et la ligne à corriger.

6. Enregistrez Apache en tant que service Windows pour qu'il démarre automatiquement au lancement du système :

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

7. Démarrez le service et vérifiez sur `http://localhost` :

   ```bat
   httpd.exe -k start
   ```

Pour le gérer ultérieurement : `httpd.exe -k stop` l'arrête, `httpd.exe -k restart` le redémarre, `httpd.exe -k uninstall` supprime le service. Vous le trouverez également dans les services Windows (`services.msc`) sous le nom **Apache2.4** : en double-cliquant, vous pouvez choisir de le lancer automatiquement ou manuellement. En mode manuel, vous pouvez le lancer avec `net start Apache2.4` depuis une invite de commandes en tant qu'administrateur.

L'installation inclut également `ApacheMonitor.exe`, une petite icône dans la zone de notification permettant de démarrer et d'arrêter le serveur sans ouvrir l'invite de commandes.

**Si le port 80 est déjà occupé**

Sous Windows, le port 80 est souvent utilisée par d'autres programmes : IIS, les anciennes versions de Skype ou certains services système. Pour découvrir lequel l'utilise, utilisez un invite de commande avec des privilèges d'administrateur :

```bat
netstat -aon | findstr :80
```

Le dernier numéro de la ligne est l'identifiant du processus, que vous pouvez rechercher dans le Gestionnaire des tâches sous l'onglet **Détails**. Vous pouvez fermer ce programme ou changer le port d'Apache en modifiant `httpd.conf`:

```apache
Listen 8080
```

Dans ce cas, le site répondra sur `http://localhost:8080`.

### Déplacer les fichiers du site

Par défaut, Apache sert les fichiers de `C:\Apache24\htdocs`. Si vous préférez stocker vos sites sur un autre disque, par exemple pour simplifier les sauvegardes, modifiez `httpd.conf` ainsi que le bloc `DocumentRoot` qui suit dans `<Directory>` :

```apache
DocumentRoot "D:/Siti"
<Directory "D:/Siti">
```

Ensuite, placez un fichier `index.html` dans le dossier, redémarrez le service et rechargez `http://localhost`.

### Et sur macOS ?

macOS possède une version d'Apache préinstallée, mais elle n'est pas à jour. Il est préférable d'en installer une via [Homebrew](https://brew.sh/) :

```bash
brew install httpd
brew services start httpd
```

Les fichiers de configuration se trouvent sous `/opt/homebrew/etc/httpd/` sur les Mac avec Apple Silicon et le serveur répond par défaut sur le port 8080.

## Hôtes virtuels : plusieurs sites sur le même serveur

Un hôte virtuel indique à Apache quel dossier servir en fonction du nom de domaine demandé. Il est conseillé de l'utiliser même pour un site unique, afin de séparer sa configuration de la configuration par défaut.

### Sur Ubuntu

1. Créez le dossier du site et attribuez les permissions :

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

2. Créez le fichier `/etc/apache2/sites-available/esempio.test.conf` avec ce contenu :

   ```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. Activez le site, désactivez le site par défaut et rechargez :

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

4. Pour tester en local, ajoutez la ligne `127.0.0.1 esempio.test` au fichier `/etc/hosts`.

La directive `AllowOverride All` est celle qui permet aux fichiers `.htaccess` de fonctionner : sans elle, les règles de réécriture dans les sous-dossiers sont ignorées.

### Sur Windows

Le mécanisme est le même, mais les hôtes virtuels se trouvent dans `conf/extra/httpd-vhosts.conf`, qu'il faut d'abord activer en supprimant le commentaire (le dièse) sur la ligne correspondante dans `httpd.conf` :

```apache
Include conf/extra/httpd-vhosts.conf
```

Définissez ensuite les hôtes avec la même syntaxe que précédemment, en utilisant des chemins de style Windows (`c:/siti/esempio/public_html`), et ajoutez la correspondance dans le fichier `C:\Windows\System32\drivers\etc\hosts`, qui doit être ouvert avec un éditeur lancé en tant qu'administrateur.

## Activer mod_rewrite et les autres modules

`mod_rewrite` réécrit les adresses : c'est ce qu'utilisent les URL "propres" de WordPress, le routage des frameworks PHP et toute redirection écrite dans un fichier `.htaccess`. Par défaut, il est désactivé.

Sur Ubuntu :

```bash
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod ssl
sudo systemctl restart apache2
```

Sous Windows, l'intervention se fait sur `httpd.conf`, en supprimant le dièse devant les lignes des modules :

```apache
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule headers_module modules/mod_headers.so
```

Dans les deux cas, `mod_rewrite` ne fonctionne que si `AllowOverride All` est également présent dans le bloc `<Directory>` du dossier du site. Si les règles ne fonctionnent pas, il manque souvent précisément cela.

Pour voir la liste des modules actifs : `apache2ctl -M` sur Ubuntu, `httpd.exe -M` sur Windows.

## Quand quelque chose ne fonctionne pas

**Apache ne démarre pas.** Testez la configuration avec `apache2ctl configtest` ou `httpd.exe -t` : l'erreur indique le fichier et la ligne. Sous Windows, vérifiez que vous avez installé la version requise de Visual C++ Redistributable.

**Erreur 403 Forbidden.** Problème de permissions du dossier ou directive `Require all granted` manquante dans le bloc `<Directory>`. Sur Ubuntu, les fichiers doivent être lisibles par l'utilisateur `www-data`.

**Les règles de réécriture sont ignorées.** Module non activé ou `AllowOverride` configuré sur `None`.

**La page par défaut s'affiche à la place du site.** L'hôte virtuel n'a pas été activé, ou le nom dans le fichier `hosts` ne correspond pas à celui écrit dans `ServerName`.

Dans tous les cas, le premier endroit où regarder est le journal d'erreurs : `/var/log/apache2/error.log` sur Ubuntu, `C:\Apache24\logs\error.log` sur Windows.

## Foire aux questions

### Mieux vaut Apache ou Nginx ?

Cela dépend de la charge et de ce que vous devez servir. [Nginx](https://nginx.org/) gère mieux de nombreuses connexions simultanées tout en consommant peu, et c'est le plus utilisé pour les sites à fort trafic. Apache est plus simple pour les débutants, il accepte la configuration par dossier avec les fichiers `.htaccess` (ce que Nginx ne fait pas) et c'est celui que l'on trouve chez la plupart des hébergeurs mutualisés. On utilise souvent les deux ensemble : Nginx en frontal et Apache en arrière-plan.

### Comment ajouter le support de PHP ?

Sur Ubuntu, il s'agit d'une seule commande : `sudo apt install php libapache2-mod-php`, suivie d'un redémarrage du service. Sous Windows, PHP doit être téléchargé séparément dans sa version « Thread Safe » et lié à Apache en ajoutant les lignes `LoadModule` et `PHPIniDir` dans `httpd.conf`, en veillant à utiliser une compilation 64 bits comme celle d'Apache.

### Dois-je ouvrir les ports sur le routeur pour être accessible depuis Internet ?

Oui, pour être visible de l'extérieur, vous devez rediriger les ports 80 et 443 vers votre ordinateur. Réfléchissez bien avant : un serveur exposé doit être maintenu à jour et surveillé. Si vous voulez simplement montrer un site à quelqu'un, un tunnel temporaire ou un petit hébergement sont des options plus prudentes.

### Comment mettre à jour Apache sur Windows ?

Arrêtez le service avec `httpd.exe -k stop` et faites une copie de `httpd.conf`, du dossier `conf` et des fichiers du site. Extrayez ensuite la nouvelle version par-dessus l'ancienne sans écraser votre configuration, vérifiez avec `httpd.exe -t` et redémarrez. Le service enregistré reste le même, il n'est pas nécessaire de le réinstaller.

### Comment activer l'HTTPS ?

Sur un serveur public, la méthode standard est [Let's Encrypt](https://letsencrypt.org/) avec l'outil [Certbot](https://certbot.eff.org/), qui obtient le certificat et configure Apache automatiquement. En local, une autorité de certification n'est pas nécessaire : un certificat auto-signé suffit. Le navigateur le signalera comme non fiable, mais vous pouvez tout de même tester votre site en HTTPS.

### Quelle est la différence entre `restart` et `reload` ?

`restart` arrête et redémarre le processus, coupant ainsi les connexions en cours. `reload` force la relecture de la configuration tout en laissant les requêtes déjà lancées se terminer : sur un serveur en production, utilisez cette option après une modification.
