Apache2 : installation et configuration

C’est partie, si vous suivez cette formation depuis le début, nous allons maintenant procéder à l’installation et la configuration de notre serveur Apache.

Installer Apache2

Dans le terminal (client SSH) de votre serveur Ubuntu entrer la commande ci-dessous pour installer le paquet apache2.

Comment vous pouvez le voir, l’installation n’est pas compliqué.

Quelques informations pratiques avant de continuer :

  • Par défaut apache2 créer un vhost qui écoute sur toutes les ip du serveur sur le port 80.
  • Le dossier du site par défaut est /var/www/html.

Premier test de votre serveur apache2

Avant de passer à des choses plus « technique », nous allons tester notre serveur Web.

Pour cela rien de plus simple, depuis un navigateur, aller à l’adresse suivante : http://ip_du_serveur

La page It’s Work doit s’afficher, ce qui signifie que le serveur Web fonctionne.

Ce que je vous propose maintenant, c’est aller voir cette page sur notre serveur Web.

Depuis le terminal, aller dans le dossier /var/www/html et lister le contenu.

Dans le dossier on retrouve notre page index.html qui s’est affichée.

Pour information, il n’a pas été nécessaire d’ajouter à l’url dans le navigateur index.html, car par défaut si aucun fichier n’est passé dans l’URL, apache2 cherche automatiquement un fichier index. Nous verrons cela plus en détail quand nous irons voir le fichier de configuration.

Ce que je vous propose de faire maintenant, c’est de créer votre première page internet sur votre serveur apache, un peu sous la forme d’un TP.

Dans le dossier /var/www/html créer une page web test.html avec le code ci-dessous dedans :

Correction en vidéo :

Vous savez maintenant comment ajouter des pages en lignes de commandes sur votre serveur Web Apache2.

Dans cette formation, je ne vais pas rentrer dans le détail de création d’un site Internet, ici le but est de vous faire comprendre le fonctionnement d’un serveur Web et vous familiarisez avec les lignes des commandes.

Gérer le service apache2

Voici la liste des commandes à utiliser pour gérer le service Apache2 sur votre serveur Ubuntu :

La configuration d’Apache2

On va maintenant attaquer la partie la plus « compliquée », qui est la configuration d’Apache2.

Je vous invite à tester les différentes commandes sur votre serveur afin de voir leur retour.

Où trouver les fichiers de configuration

Comment la plupart des applications sur Ubuntu, vous trouverez la configuration d’Apache2 dans le dossier /etc et ensuite il y a un dossier Apache2, qui va contenir les différents fichiers d configuration.

Dans le dossier /etc/apache2, on va retrouver plusieurs fichiers et dossiers qui vont nous permettre d’agir la configuration du service web.

Maintenant que vous savez où se trouve la configuration d’Apache2, je vais vous expliquer à quoi servent les fichiers et dossiers.

  • apache2.conf : contient la configuration du service web, certains paramètres du fichier peuvent être surchargé par des directives dans la configuration des vhosts
  • envvars : contient la définition de variable d’environnement du service Apache2, qui peuvent ensuite être utilisé dans les différents fichiers de configuration.
  • magic : contient les directives pour terminer le MIME type des fichiers
  • ports.conf : contient les ports par défaut utilisés par le service web, le port peut être modifié dans la configuration du vhost d’un site.
  • conf-available/ : contient différents fichiers de configuration qui peuvent être chargés par le service Apache2.
  • conf-enabled/ : contient des liens symboliques vers les fichiers de configuration activés, généralement dans le dossier conf-available.
  • mod-available/ : contient les différents modules disponibles sur apaches comme SSL, Rewrite …
  • mod-enabled/ : contient les liens symboliques des mods actif
  • sites-available/ : contient la configuration des différents virtuals hosts
  • sites-enabled/ : contient les liens symboliques des différents virtuals hosts actifs

Apache2 et les dossiers *-available et *-enabled

Avant d’aller plus loin, on va faire un petit focus sur les dossiers disponibles dans la configuration d’Apache2.

Comment vous avez pu le voir, on a des dossiers qui avec le prefix available (disponible), qui vont contenir différents éléments (configurations / mods) disponible sur votre serveur et des dossiers au prefix enabled (activé) qui vont contenir des liens symbolique vers des éléments disponibles.

La philosophie d’utilisation, c’est de créer un lien symbolique dans le dossier enabled correspondant à l’élément que l’on souhaite activer.

Les virtualhosts

On va maintenant s’intéresser à la partie la plus importante, qui sont les virtualhosts.

La configuration des virtualhosts va vous permettre de configurer l’hébergement des différents sites que vous allez mettre sur votre serveur Web.

Comment on l’a vu précédemment, les configurations des virtualhosts sont stockées dans le dossier site-available et activer via un lien symbolique dans le dossier site-enabled.

Avant d’aller voir le site par défaut, apache2 permet de gérer les virtuals hosts de plusieurs manières :

  • Par les ports d’écoute, par défaut les services web utilise le port 80 (http) et 443 (https), il est possible de définir des vhosts qui vont utiliser par exemple le port 8080 et 8443.
  • Par l’adresse IP, une autre solution, si vous avez plusieurs IP sur votre serveur Web, c’est de configurer un site sur adresse IP dédiés, ce qui permet d’utiliser plusieurs fois le port 80 et 443
  • Par le nom (url), qui est la solution la plus pratique et la plus utilisé, on va définir le vhost par les urls (nom), ce qui permet sur une adresse IP d’héberger plusieurs sites sur le port 80 et 443, car apache2 va router la requête HTTP vers le virtual host en fonction de l’URL.

Virtualhost par défaut

On va s’intéresser maintenant au virtualhost par défaut en analysant sa configuration.

On va regarder le fichier 000-default.conf qui se trouve dans le dossier site-available.

Le virtualhost par défaut est assez simple à analyser.

LigneDescription
<VirtualHost *:80>Déclaration du virtualhost, on indique qu’il écoute sur toute les adresses ip (*) sur le port 80
ServerAdmin webmaster@localhostOn définit l’adresse email du « Webmaster »
DocumentRoot /var/www/htmlOn indique ici l’emplacement des fichiers et dossiers du site Internet
ErrorLog ${APACHE_LOG_DIR}/error.logEmplacement des logs d’erreur lié au virtualhost, on peut voir qu’ici une variable environnement est utilisé
CustomLog ${APACHE_LOG_DIR}/access.log combinedEmplacement des logs des requêtes HTTP avec le format (combined)
</VirtualHost>Fermeture de la configuration du virtualhost

Si on traduit en français le virtualhost voici ce que ça donne : Toutes requêtes HTTP sur n’importe quelle adresse IP sur le port 80, on recherche le fichier dans /var/www/html. Les logs d’erreurs et d’accès sont à stocker à dans le dossier défini par ${APACHE_LOG_DIR}.

Maintenant que l’on sait comment est constitué un virtualhost simple, on va en créer nous même.

Créer un virtualhost

C’est partie, on va maintenant créer notre propre virtualhost avec les paramètres suivants :

  • Il doit répondre aux requêtes HTTP dont l’url du site sera formation-apache.mon-domaine.local
  • Les fichiers du site seront stockés dans l’emplacement suivant : /var/www/formation-apache

La première étape va être de créer le dossier pour stocker les fichiers :

sudo mkdir /var/www/formation-apache

Afin d’avoir une page qui va s’affiche, créer un fichier index.html dans le dossier avec le code HTML de votre choix.

Pour créer notre virtualhost, on va utiliser le fichier du virtualhost par défaut, utiliser la commande ci-dessous pour le copier :

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/formation-apache.conf 

Maintenant on va le modifier pour répondre à nos paramètres.

sudo nano /etc/apache2/sites-available/formation-apache.conf 

Ajouter la directive ServerName pour indiquer l’url :

ServerName formation-apache.mon-domaine.local

Modifier la directement DocumentRoot pour indiquer l’emplacement de notre site.

DocumentRoot /var/www/formation-apache

Sauvegarder et fermer le fichier de configuration.

La configuration est prête, on va maintenant activer le virtualhost à l’aide de la a2ensite.

sudo a2ensite formation-apache.conf

Recharger la configuration d’Apache2 avec la commande :

sudo systemctl reload apache2

Si l’on regarde dans le dosser /etc/apache2/site-enabled, on peut voir le lien symbolique.

Sur votre ordinateur, éditer le fichier hosts et ajouter la ligne ci-dessous afin de pouvoir accéder à votre site :

192.168.1.37		formation-apache.mon-domaine.local

Ouvrir un navigateur et aller à l’adresse http://formation-apache.mon-domaine.local. La page d’index que vous avez créée doit s’afficher.

Voici la mienne :

Pour désactiver un virtualhost, il faut utiliser la commande suivante :

sudo a2dissite vhost-file.conf

Ensuite recharger la configuration apache2 :

sudo systemctl reload apache2

Les mods

Je ne vais rentrer dans le détail des différents mods disponibles pour Apache2, mais je vais vous en parler en « rapidement » dans cette partie.

Les mods permettent d’ajouter des fonctionnalités à Apache2, les mods les plus utilisées sont :

  • ssl : qui permet d’avoir l’HTTPS sur les sites Internets
  • rewrite : qui va permettre de réécrire les urls des sites Internet.

Les mods fonctionne sur le même principale que les virtualhosts.

Activer un mod :

sudo a2enmod ssl

Ensuite en fonction du mode activé, il faut soit redémarrer ou recharger Apache2, pour savoir quoi faire, il suffit de lire le message à l’activation du mod, ici pour le mod SSL, il est nécessaire de redémarrer le service Apache2.

Pour désavtiver un mod :

sudo a2dismod NomDuMod

Pour afficher la liste des mods disponible sur votre serveur, utiliser la commande sudo a2enmod <tabulation><tabulation> :

Pour finir sur les mods, voici ce que vous aurez besoin dans la pluspart des serveurs Web :

  • SSL afin de pouvoir passer votre site en HTTPS (on reviendra dessus avec le certbot)
  • REWRITE qui va permettre d’activer la réécriture d’url

Les mods suivants sont optionnels mais permettent une optimisation des sites Internet :

  • brotli
  • deflate
  • http2

Nous verrons plus tard dans cette formation, que nous aurons d’autre mod en fonction de la façon dont PHP sera exécuté sur le serveur.

Les fichiers .htaccess

Là aussi, je ne vais pas rentrer dans le détail dans le fonctionnement des fichiers .htaccess, car ils vont principalement dépendre du fonctionnement de vos applications Web, mais je dois vous en parler dans la partie configuration.

Les fichiers .htaccess sont des fichiers de configuration apache2 disponible au niveau des sites Internet, qui vont permettre de modifier des instructions de configuration qui ont été déclaré dans le fichier de configuration du vistualhost.

Pour autoriser l’utilisation des fichiers .htaccess, il faut ajouter le groupe d’instruction ci-dessous dans la configuration du virtualhost :

Ce qui donne pour le virtualhost que l’on a créé au début :

Les fichiers de logs

Dernier point que nous allons voir dans ce chapitre, les fichiers de logs.

Il y a deux fichiers logs générés par Apache2 :

  • error.log : qui contient les erreurs rencontrées par le service Apache2, comme une mauvaise configuration.
  • access.log : qui stocke l’ensemble des accès au site.

Pour chaque virtualhost, il est possible d’indiquer des fichiers différents, afin d’avoir une séparation des logs.

Par défaut les fichiers de log sont stockés dans le dossier : /var/log/apache2.

Les fichiers de log dispose d’une tâche de rotation automatique, qui est configuré dans le fichier /etc/logrotate.d/apache2.

Par défaut, 14 jours de log sont gardés sur le serveur et une compression des fichiers est appliqués à partir des logs qui ont plus de deux jours.

Voici un exemple du dossier /var/log/apache2 :


Vous avez maintenant les connaissances nécessaires pour commencer à exploiter Apache2.

Dans le prochain chapitre, je vais vous expliquer comment installer et configurer nginx, si vous préférez passer tout de suite à l’installation de PHP sur Apache2, aller à la leçon :