Skip to content
VDS · Sites web et serveurs web

Apache : installation et hôtes virtuels

Installer Apache sur un VPS, configurer les hôtes virtuels et les modules, et résoudre les conflits courants avec Nginx sur le port 80.

Mis à jour le 23 août 2026

Choisissez Apache lorsque vous avez besoin de .htaccess, d'un ancien CMS ou d'un guide prêt à l'emploi fourni par le développeur de l'application. Il consomme plus de mémoire que Nginx, mais sur VDS-1 avec un petit site, vous ne le remarquerez pas.

Installation

apt update && apt install -y apache2        # Debian, Ubuntu
dnf install -y httpd && systemctl enable --now httpd   # AlmaLinux, CentOS Stream

Le nom du service diffère : apache2 sur Debian et Ubuntu, httpd dans la famille RHEL. Les répertoires de configuration sont également différents — /etc/apache2 et /etc/httpd.

Vérifiez :

systemctl status apache2
curl -I http://127.0.0.1

Hôte virtuel

Fichier /etc/apache2/sites-available/example.ru.conf :

<VirtualHost *:80>
    ServerName example.ru
    ServerAlias www.example.ru
    DocumentRoot /var/www/example.ru

    <Directory /var/www/example.ru>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.ru-error.log
    CustomLog ${APACHE_LOG_DIR}/example.ru-access.log combined
</VirtualHost>

Activation et vérification :

a2ensite example.ru
a2dissite 000-default
apachectl configtest && systemctl reload apache2

AllowOverride All n'est nécessaire que si vous utilisez réellement .htaccess. Sinon, mettez None : Apache cessera de chercher ces fichiers dans chaque répertoire à chaque requête.

Modules

a2enmod rewrite headers ssl
systemctl restart apache2

Pour lister ce qui est activé — apache2ctl -M. N'activez pas tout : chaque module est chargé dans chaque processus worker.

Pour PHP, utilisez PHP-FPM plutôt que l'obsolète mod_php : PHP-FPM.

Apache et Nginx ensemble

Les deux serveurs écoutent sur le port 80 par défaut, donc le second ne démarrera tout simplement pas et lancera Address already in use. Vous avez deux options :

  • ne garder qu'un seul serveur ;
  • placer Nginx devant, basculer Apache sur Listen 127.0.0.1:8080 et faire un proxy vers lui — voir reverse proxy.

Pour voir ce qui utilise le port :

ss -tulpn | grep :80

Erreurs courantes

SymptômeCause
AH00558: Could not reliably determine ... server's fully qualified domain nameServerName n'est pas défini — c'est un avertissement, mais définissez-le quand même
.htaccess ne fonctionne pasAllowOverride None dans le bloc Directory
Le service ne démarre pas après une modificationSyntaxe — exécutez toujours apachectl configtest avant de recharger
403 sur un répertoireRequire all granted manquant ou www-data n'a pas les permissions

Journaux : /var/log/apache2/ (Debian, Ubuntu) ou /var/log/httpd/ (AlmaLinux).

Copiez la configuration avant chaque modification : cp file file.bak. Sur une machine virtuelle, revenir en arrière est plus simple que d'essayer de se rappeler ce que vous avez changé il y a une heure.