Aller au contenu

Apache : installation sur Ubuntu

Apache HTTP Server est un serveur web modulaire, très répandu. Ce guide l’installe sur Ubuntu 24.04 et 26.04. Les exemples utilisent des noms génériques (exemple.com).

Ubuntu Paquet apache2
24.04 Apache 2.4.58
26.04 Apache 2.4.66

Les deux appartiennent à la série 2.4. Ubuntu rétroporte les correctifs de sécurité dans chaque version.

Fenêtre de terminal
sudo apt update
sudo apt install apache2
apache2 -v
sudo systemctl status apache2
sudo systemctl enable --now apache2
curl -I http://localhost # 200 OK
Fenêtre de terminal
sudo ufw app list # Apache, Apache Full, Apache Secure, OpenSSH
sudo ufw allow 'Apache Full' # ports 80 et 443
sudo ufw allow OpenSSH # à ne pas oublier avant d'activer UFW
sudo ufw status
Profil Ports
Apache 80
Apache Secure 443
Apache Full 80 et 443
Élément Emplacement
Configuration principale /etc/apache2/apache2.conf
Ports d’écoute /etc/apache2/ports.conf
Sites disponibles / activés /etc/apache2/sites-available/ et sites-enabled/
Configurations supplémentaires /etc/apache2/conf-available/ et conf-enabled/
Modules disponibles / activés /etc/apache2/mods-available/ et mods-enabled/
Variables (utilisateur, journaux) /etc/apache2/envvars
Racine par défaut /var/www/html
Journaux /var/log/apache2/access.log, /var/log/apache2/error.log
Utilisateur des processus www-data

Ubuntu fournit des commandes qui créent ou retirent les liens symboliques « disponible » vers « activé » :

Commande Rôle
sudo a2ensite exemple.com / a2dissite exemple.com Active / désactive un site
sudo a2enmod rewrite / a2dismod rewrite Active / désactive un module
sudo a2enconf security / a2disconf security Active / désactive un fragment de configuration
apache2ctl configtest Teste la syntaxe
apache2ctl -S Affiche les sites virtuels reconnus
apache2ctl -M Liste les modules chargés
apache2ctl -V Version, MPM et chemins de compilation

Toute modification se teste avant d’être appliquée :

Fenêtre de terminal
sudo apache2ctl configtest # doit répondre « Syntax OK »
sudo systemctl reload apache2 # applique sans couper les connexions
AH00558: apache2: Could not reliably determine the server's fully qualified domain name
Fenêtre de terminal
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf
sudo a2enconf servername
sudo apache2ctl configtest && sudo systemctl reload apache2
Fenêtre de terminal
sudo mkdir -p /var/www/exemple.com
echo '<h1>Bonjour</h1>' | sudo tee /var/www/exemple.com/index.html
sudo tee /etc/apache2/sites-available/exemple.com.conf <<'CONF'
<VirtualHost *:80>
ServerName exemple.com
ServerAlias www.exemple.com
DocumentRoot /var/www/exemple.com
<Directory /var/www/exemple.com>
Options -Indexes
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/exemple.com.error.log
CustomLog ${APACHE_LOG_DIR}/exemple.com.access.log combined
</VirtualHost>
CONF
sudo a2ensite exemple.com
sudo apache2ctl configtest && sudo systemctl reload apache2
curl -H "Host: exemple.com" http://localhost

Pour désactiver le site par défaut (page « Apache2 Default Page ») : sudo a2dissite 000-default.

Fenêtre de terminal
sudo chown -R $USER:www-data /var/www/exemple.com
sudo chmod -R u=rwX,g=rX,o=rX /var/www/exemple.com
Méthode Principe Quand
PHP-FPM (recommandé) Apache transmet à un service PHP séparé (proxy_fcgi) ; compatible avec le MPM event Usage courant, meilleures performances
libapache2-mod-php PHP intégré à Apache ; impose le MPM prefork Applications anciennes

Le paquet libapache2-mod-php désactive le MPM event et active prefork : préférer PHP-FPM (voir Sites virtuels).

Fenêtre de terminal
sudo apt update && sudo apt upgrade # mises à jour de sécurité avec le système
sudo systemctl restart apache2
Fenêtre de terminal
sudo apt purge apache2 apache2-utils apache2-bin
sudo apt autoremove
Symptôme Piste
Address already in use: AH00072: make_sock: could not bind to address [::]:80 Un autre serveur écoute sur le port 80 (souvent Nginx) : sudo ss -tlnp | grep ':80'
403 Forbidden Require all granted manquant dans <Directory>, ou droits insuffisants pour www-data
404 Not Found DocumentRoot incorrect, ou site non activé (a2ensite)
AH00526: Syntax error sudo apache2ctl configtest : fichier et ligne indiqués
Le mauvais site s’affiche ServerName incorrect : le premier site (par ordre alphabétique) répond par défaut. apache2ctl -S
Le service ne démarre pas sudo journalctl -u apache2 -n 50 et sudo tail /var/log/apache2/error.log

Ubuntu 24.04 et 26.04 : différences à connaître

Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »

Les commandes d’installation sont identiques sur les deux versions.