Configuration d'un serveur Apache

En root, lancer la commande suivante :

apt install apache2

Afin de vérifier que le serveur Apache est bien opérationnel, il suffit de taper son adresse dans un navigateur. Il devrait afficher « It Works » qui est le contenu de la page /var/www/index.html.

Les fichiers de configuration du serveur Apache sont dans le dossier /etc/apache2. Les principaux fichiers sont apache2.conf, ports.conf, envvars et les fichiers de configuration des vhosts.

Configuration d’un vhost

Dans le dossier /etc/apache2/sites-enabled, on trouve le fichier de configuration du vhost par défaut qu’on peut supprimer via la commande (ce n’est pas obligatoire) :

a2dissite 000-default

Ce fichier définit la racine d’apache sur /var/www. Nous allons donc créer un dossier www dans /home et donner les droits nécessaires pour qu’Apache puisse afficher le contenu du dossier.

mkdir /home/www
chown webadmin:www-data /home/www

Attention : Apache est exécuté avec l’utilisateur www-data qui doit pouvoir lire les fichiers des différents projets web pour pouvoir les afficher. Cependant, il ne doit pas avoir le droit d’écriture dessus. En effet, si un utilisateur réussit à pénétrer dans le système, il sera identifié en tant que www-data. Sans les droits d’écriture, il ne pourra pas modifier ou supprimer nos fichiers.

Ensuite, chacun des sites hébergés sur notre serveur aura son sous-dossier dans /home/www.

Nous créons donc un nouveau fichier dans /etc/apache2/sites-available pour chacun des sites hébergés (Vhost) sur le serveur Apache :

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/domaine.tld

Puis on édite le fichier créé. La configuration doit ressembler à ça :

<VirtualHost *:80>
	ServerName www.domaine.tld
	ServerAlias domaine.tld *.domaine.tld
	ServerAdmin webmaster@domaine.tld

	ErrorLog /home/www/domaine.tld/logs/error_log
	CustomLog /home/www/domaine.tld/logs/access_log combined

	DocumentRoot /home/www/domaine.tld

	<Directory /home/www/domaine.tld>
			Options Indexes FollowSymLinks MultiViews
			AllowOverride None
			Order allow,deny
			allow from all
	</Directory>

	LogLevel warn
</VirtualHost>

Pour activer cette configuration, il suffit de lancer la commande a2ensite domaine.tld et de recharger la configuration apache avec service apache2 reload après avoir vérifié qu’il n’y avait pas d’erreur via apache2ctl -t.

Mise en place de PHP avec Apache

Pour que notre serveur Apache suppporte PHP, nous devons l’installer via la commande :

apt install php7.4  libapache2-mod-php7.4

On peut vérifier que tout fonctionne bien en remplaçant le fichier index.html par défaut par un fichier index.php qui contient le code suivant :

<?php
	phpinfo();
?>

Il peut également être possible de séparer l’exécution du code PHP d’Apache. Pour cela on utilise PHP-FPM. La configuration est plus complexe mais les performances sont meilleures.