Linux — Apache

Installation, VirtualHost, droits, logs et dépannage

Installation et service

sudo apt update
sudo apt install apache2
sudo systemctl enable --now apache2
systemctl status apache2
curl -I http://127.0.0.1

Fichiers importants

EmplacementRôle
/etc/apache2/apache2.confConfiguration générale
/etc/apache2/ports.confPorts écoutés
/etc/apache2/sites-available/VirtualHosts disponibles
/etc/apache2/sites-enabled/Liens vers les sites activés
/etc/apache2/mods-available/Modules disponibles
/var/www/Contenus web
/var/log/apache2/Logs d’accès et d’erreur

VirtualHost minimal

<VirtualHost *:80>
    ServerName wiki.example.fr
    DocumentRoot /var/www/wiki

    <Directory /var/www/wiki>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

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

Enregistrer dans /etc/apache2/sites-available/wiki.conf.

sudo mkdir -p /var/www/wiki
sudo a2ensite wiki.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
sudo apache2ctl -S

Modules

sudo a2enmod rewrite
sudo a2dismod rewrite
apache2ctl -M

rewrite n’est utile que si l’application ou les règles de réécriture l’exigent.

Droits

sudo chown -R root:www-data /var/www/wiki
sudo find /var/www/wiki -type d -exec chmod 750 {} \;
sudo find /var/www/wiki -type f -exec chmod 640 {} \;

Donner l’écriture à www-data seulement sur les dossiers nécessaires : uploads, cache, sessions… MariaDB écrit normalement dans /var/lib/mysql, pas dans /var/www.

Diagnostic

sudo apache2ctl configtest
sudo apache2ctl -S
sudo ss -lntp | grep -E ':80|:443|:8080'
sudo journalctl -u apache2 -n 50 --no-pager
sudo tail -f /var/log/apache2/error.log
curl -I -H "Host: wiki.example.fr" http://127.0.0.1
ErreurPiste
403 ForbiddenDroits Unix ou directive Require
404Mauvais DocumentRoot, nom d’hôte ou fichier absent
Address already in usePort déjà occupé : contrôler avec ss -lntp
502 via reverse proxyApache arrêté, mauvais port ou destination inaccessible