Partie 3. Comment configurer Apache sur Debian 11 ?

Introduction

Cette page fait partie d'un tutoriel complet sur l'installation d'un serveur web sur une machine virtuelle. Cette troisième partie du tutoriel explique comment configurer Apache sur notre Debian fraîchement installée. Elle suppose que la machine virtuelle est créée et que Debian 11 est déjà installée. Si ce n'est pas le cas, veuillez vous rendre sur la page d'accueil et suivre le guide.

Configuration du réseau

La première étape pour faire fonctionner notre serveur est de configurer le réseau de notre machine virtuelle. Si votre machine est en cours d'exécution, arrêtez-la. Sinon, vous ne pourrez pas modifier les paramètres du réseau. Une fois la machine éteinte, cliquez sur les paramètres de votre machine, et sélectionnez Réseau dans le menu de gauche :

VirtualBox paramètres réseau

Sélectionnez Bridged Adpater pour connecter la machine virtuelle sur le réseau hôte. Cela suppose que votre ordinateur hôte est connecté sur un réseau DHCP. Si ce n'est pas le cas, vous devrez choisir une autre configuration, mais cela pourrait être problématique pour atteindre votre serveur web à partir de l'ordinateur hôte.

Sélectionnez bridged adapter dans les paramètres réseau de VirtualBox.

Redémarrez votre machine et connectez-vous. Une fois connecté, exécutez la commande suivante :

ip a

Cette commande affiche l'adresse IP de la machine invitée :

Get IP address of the host machine

L'IP devrait être sur le même réseau que l'ordinateur hôte. Dans mon cas, l'IP de l'invité est 162.168.3.78 et l'ordinateur hôte est sur 192.168.3.4. Les deux systèmes sont sur le même réseau. Notez l'adresse IP, nous en aurons besoin plus tard.

SSH

Pendant l'installation de Debian, nous avons installé ssh et un server web:

Installation de ssh et d'un serveur web sur Debian 11

Dans ce qui suit, nous allons nous connecter à la machine virtuelle via SSH. De cette façon, nous pourrons faire des copier/coller de certaines commandes dans le terminal SSH. Ce sera plus facile que de travailler dans la machine virtuelle. Ça revient à travailler sur un server distant.

Comme ma machine hôte est sous Ubuntu, je vais me connecter au serveur avec la commande ssh à partir d'un terminal (Ctrl+Alt+ T) :

ssh USERNAME@IP_ADDRESS

Bien sûr, vous devez remplacer USERNAME et IP_ADDRESS par vos propres paramètres. Sur d'autres systèmes, vous devrez utiliser des outils comme PuTTY par exemple.

A la première connexion ssh, il est dit que vous n'avez pas le certificat. Dites simplement yes, entrez votre mot de passe, et vous serez connecté à votre machine virtuelle :

philippe@philippe-Precision-T1700:~$ ssh student@192.168.3.78
The authenticity of host '192.168.3.78 (192.168.3.78)' can't be established.
ED25519 key fingerprint is SHA256:O5ASenZlfoQCQfTEGVT/CwbuziU9FDEJt0gXuxtErQU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.3.78' (ED25519) to the list of known hosts.
student@192.168.3.78's password: 
Linux debianwebserver 5.10.0-19-amd64 #1 SMP Debian 5.10.149-2 (2022-10-21) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Dec  7 16:40:50 2022
student@debianwebserver:~$ 

Pour les prochaines connexions, il vous suffira de saisir votre mot de passe.

Apache

Vous êtes maintenant connecté à distance à votre serveur. Si vous suivez ce guide depuis le début, vous avez probablement remarqué que le serveur web Apache a déjà été installé avec Debian. Apache est le serveur web le plus populaire, il sert des fichiers html situés dans un dossier dédié. Vérifions que le deamon Apache fonctionne avec la commande suivante :

sudo systemctl status apache2

La sortie devrait ressembler à ça :

student@debianwebserver:~$ sudo systemctl status apache2
[sudo] password for student: 
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-12-07 17:05:48 CET; 2min 21s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 317 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 404 (apache2)
      Tasks: 55 (limit: 4563)
     Memory: 11.8M
        CPU: 44ms
     CGroup: /system.slice/apache2.service
             ├─404 /usr/sbin/apache2 -k start
             ├─405 /usr/sbin/apache2 -k start
             └─406 /usr/sbin/apache2 -k start

Dec 07 17:05:48 debianwebserver systemd[1]: Starting The Apache HTTP Server...
Dec 07 17:05:48 debianwebserver apachectl[382]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Dec 07 17:05:48 debianwebserver systemd[1]: Started The Apache HTTP Server.

Le statut devrait être actif. Si c'est le cas, ouvrez votre navigateur préféré et entrez l'adresse IP de votre machine dans la barre URL :

Page d'accueil du serveur Apache

Si vous obtenez la page ci-dessus : félicitations ! Votre serveur web fonctionne !

Configuration d'Apache

Le serveur Apache sert le dossier /var/www/html par défaut. Si nous plaçons de nouveaux fichiers ou dossiers dans ce répertoir, ils seront publiquement disponibles pour le client. Si vous listez les fichiers de ce dossier, vous verrez le fichier index.html qui est affiché dans le navigateur.

student@debianwebserver:~$ ls /var/www/html/ -al
total 20
drwxr-xr-x 2 root root  4096 Dec  7 16:02 .
drwxr-xr-x 3 root root  4096 Dec  7 16:01 ..
-rw-r--r-- 1 root root 10701 Dec  7 16:02 index.html

Dans la prochaine partie de notre tutoriel, nous allons installer un serveur ftp afin que les utilisateurs puissent télécharger des fichiers sur le serveur. Comme le dossier /var/www/html a besoin de privilèges pour être modifié, nous allons déplacer ce dossier dans notre espace personnel.

D'abord, créons un nouveau dossier sur notre serveur qui servira de raine au serveur Apache. Appelons-le www :

mkdir ~/www

Je vous recommande de sauvegarder les fichiers qui seront modifiés avec les commandes suivantes. Si quelque chose devait mal se passer, on pourra toujours revenir à la configuration d'origine.

sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.backup
sudo cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/000-default.conf.backup

Modifions la configuration d'Apache :

sudo nano /etc/apache2/apache2.conf 

Trouvez et remplacez la ligne suivante :

<Directory /var/www/>

par (n'oubliez pas de remplacer username par votre nom d'utilisateur) :

<Directory /home/username/www/>

Vous pouvez aussi activer le module mod_rewrite (redirection d'une URL vers une autre adresse) en mofifiant cette ligne :

AllowOverride None

par celle-ci:

AllowOverride All

Sauvegardez et quittez nano.

Pour activer le mod_rewrite, vous devez exécuter la commande suivante et redémarrer le serveur Apache:

sudo a2enmod rewrite
sudo systemctl restart apache2

Editez le fichier 000-default.conf avec la commande suivante :

sudo nano /etc/apache2/sites-enabled/000-default.conf

Trouvez et remplacez la ligne suivante :

DocumentRoot /var/www/html

par (n'oubliez pas de remplacer username par votre nom d'utilisateur) :

DocumentRoot /home/username/www

Redémarrez le serveur pour que les changements soient pris en compte :

sudo systemctl restart apache2.service

Créez une fichier index.html dans le dossier www et insérer une ligne de HTML dans le fichier :

echo "<h1>Apache root directory changed</H1>" > ~/www/index.html

Allez dans votre navigateur et vérifiez la nouvelle page d'accueil de votre serveur :

Apache root directory changed

Apache est fonctionnel. La prochaine étape consiste à installer PHP.

Voir aussi


Dernière mise à jour : 11/12/2022