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:8080et faire un proxy vers lui — voir reverse proxy.
Pour voir ce qui utilise le port :
ss -tulpn | grep :80
Erreurs courantes
| Symptôme | Cause |
|---|---|
AH00558: Could not reliably determine ... server's fully qualified domain name | ServerName n'est pas défini — c'est un avertissement, mais définissez-le quand même |
.htaccess ne fonctionne pas | AllowOverride None dans le bloc Directory |
| Le service ne démarre pas après une modification | Syntaxe — exécutez toujours apachectl configtest avant de recharger |
| 403 sur un répertoire | Require 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.