Activité : Apache2

Situation

Votre entreprise vous a chargé de tester l’intégration d’Apache2 dans sa ferme de serveur. Pour cela, on vous demande d’installer et de configurer, sur un serveur Linux, Apache2.

Apache est un serveur web (http Server) développé par la fondation Apache. Il s’agit d’un logiciel libre. C’est le serveur web le plus populaire, même si depuis quelque temps il a été rattrapé par un autre logiciel libre : Nginx.

Le serveur Apache existe depuis 1995.

Son principe repose sur des modules permettant d’étendre ses fonctionnalités.

Dans cette activité, nous allons configurer une version de base d’Apache, et activer le support du langage PHP.

Consigne

  • Lisez les instructions ci-après et réalisez les tâches demandées.
  • Votre machine virtuelle doit avoir les caractéristiques suivantes :
    • Paramètres de base de la machine :
    • Serveur : Ubuntu22.04LTS server, sans interface graphique
    • Hostname : ubuntu
    • Username : epai
    • Password : epai1.2
    • L’utilisateur epai doit faire partie du groupe sudo

Objectifs

À la fin de ce travail, vous devez :

  1. Être capable d’installer et de configurer Apache2.
  2. Être capable d’installer et de configurer PHP.

Installation d’Apache

Comme pour toutes interactions avec le système, il est nécessaire d’avoir des privilèges étendus. La plupart des commandes sont donc précédées de sudo.

sudo apt install apache2

Sur le PC hôte, dans VirtualBox, configurez la machine virtuelle en créant une redirection de port afin d’accéder au serveur web depuis le navigateur local. Exemple :

Redirigez le port tcp 8080 vers le port tcp 80

Dans ce cas, dans le navigateur, il faudra saisir l’adresse comme suit : http://localhost:8080

La page par défaut de Apache2 doit s’afficher :

Apache2

Manipulation du serveur :

Pour arrêter le serveur, vous avez à choix une des commandes suivantes :

sudo systemctl stop apache2

ou

sudo apachectl stop

Le navigateur ne doit plus rien afficher :

Apache stopped

Pour démarrer le serveur, adapter les commandes précédentes en remplaçant stop par start.

sudo systemctl start apache2

ou

sudo apachectl start

Vérifiez le statut du serveur :

sudo systemctl status apache2

Quelle est la version du serveur installé ?

sudo apache2 –v

Apache version

À l’aide de la commande tail lire le contenu des fichiers journaux. Fichier d’erreur par défaut : /var/log/apache2/error.log

Fichier d’accès par défaut : /var/log/apache2/access.log

Dans le fichier des accès, repérez la requête effectuée depuis le navigateur.

Configuration d’Apache2

Les fichiers de configuration se trouvent dans /etc/apache2.

Selon l’OS, la structure des fichiers de configuration peut différer. Sous les systèmes Debian et dérivés, la structure est définie ainsi :

  • apache2.conf : fichier principal
  • ports.conf : gestion des ports d’écoute (TCP)
  • mods-enables : la gestion des modules
  • conf-enables : gestion de la configuration globale
  • sites-enabled : gestion des sites (hôtes virtuels)

![Structure Apache]((https://www.epai-ict.ch/ict-modules/assets/m127/apache-structure.png)

Dossier des pages web

Recherchez dans la configuration où se trouvent les fichiers des sites web, en particulier la page par défaut affichée :

Lisez le fichier sites-enabled/000-default.conf pour trouver l’information. Il s’agit de la racine où se trouvent les pages web, soit la directive DocumentRoot.

Votre réponse : ____________________________________

Port d’écoute

Changez le port d’écoute du serveur, dans le fichier ports.conf.

Rechargez la configuration du serveur (sans le redémarrer) :

sudo systemctl reload apache2

Vérifiez avec le navigateur que la connexion avec le serveur Apache est impossible.

Adaptez (ou ajoutez) une redirection de port dans VirtualBox, afin d’atteindre le serveur via le nouveau port.

Vérifiez avec le navigateur que la page par défaut s’affiche à nouveau.

Annonce dans les en-têtes de réponse

Depuis le navigateur, appelez une page qui n’existe pas sur le serveur. Exemple : test.html.

Une erreur “http 404 Not found” doit être retournée.

Apache not found

Avec le message d’erreur, nous voyons la « signature » du serveur.

Cachons cette signature !

Pour cela, ouvrez le fichier de configuration security.conf.

Remplacez ServerSignature On par Off et relancez le serveur.

Apache signature off

Depuis le navigateur, appelez à nouveau la page inexistante.

Apache without signature

Le message d’erreur 404 est toujours présent, mais la signature du serveur a disparu.

PHP

Installation de PHP et configuration d’Apache pour interpréter les scripts PHP.

Installation de PHP

Pour installer PHP :

sudo apt install php

Dans le dossier DocumentRoot créer un fichier info.php, et y mettre simplement le contenu suivant :

<?php phpinfo(); ?> 

Aller sur le navigateur est appeler le fichier info.php http://localhost:{votre_port}/info.php

La page n’affiche pas les informations attendues :

PHP not found

Pourquoi ?

PHP est un langage de script utilisable en ligne de commande (comme perl, python, …). Afin qu’il puisse être interprété par Apache, il faut encore que vous installiez et activiez le module apache compatible.

sudo apt install libapache2-mod-php

Ensuite, vous devez recharger le serveur apache :

sudo systemctl reload apache2

Cette fois, le navigateur affiche bien la page d’information de PHP.

Un petit script pour tester l’installation

Écrivez un petit script PHP (mult.php) qui affiche la table des multiplications (de 1 à 12).

Le résultat doit ressembler à ceci :

Table de multiplication