Mise en place des serveurs Apache et DNS
Last updated on Tuesday, November 19, 2013
  • 2 semaines
  • Moyen

Free online content available in this course.

Got it!

Introduction du cours

Apache est un serveur web permettant de partager des pages web stockées localement à des utilisateurs connectés : des clients. La configuration d'un tel serveur peut paraître fastidieuse puisqu'elle demande quelques connaissances de base de Linux, mais ce tutoriel a pour but de vous prouver que cette configuration peut être très simple.

Pour vous mettre l'eau à la bouche, voici ce que vous devriez obtenir !

Image utilisateur

Configuration IP du serveur

Introduction

Avant de mettre en place notre serveur apache, il est nécessaire d'attribuer des paramètres réseaux pour notre machine. Je veux bien sur parler d'une adresse IP et d'un nom de machine grâce au serveur DNS.

Ohh non, je suis déjà perdu, je ne sais pas faire ça !

Pas de panique, voici dans les parties suivantes, un petit rappel sur la configuration d'une adresse IP et d'un serveur DNS.

La configuration d'une adresse IP peut se faire de différentes manières. Dans notre cas, il s'agit d'attribuer à notre serveur, une adresse IP qui soit persistante, c'est à dire qu'elle soit toujours la même après un redémarrage de l'ordinateur.

Attribution d'une adresse IP à notre machine

Pour attribuer une adresse IP à votre machine, il est nécessaire d'ouvrir un fichier de configuration : le fichier interfaces.

vi /etc/network/interfaces

C'est quoi "vi" ?

Il s'agit d'un éditeur de texte présent sous Linux, qui va nous permettre d'ouvrir notre fichier. Vous pouvez en utiliser un autre comme gedit par exemple.

Une fois le fichier ouvert, remplacez simplement les quelques lignes présentes à l'intérieur, par celles-ci :

iface eth0 inet static
address 192.168.21.6
netmask 255.255.255.0
broadcast 192.168.21.255

Pour prendre en compte les modifications, enregistrez votre travail sous vi (en tapant ":wq"), et redémarrez votre interface en tapant ceci :

/etc/init.d/networking restart

Félicitations, vous venez d'attribuer une adresse IP fixe à votre machine !

Passons désormais à la mise en place du serveur DNS !

Configuration du serveur DNS

Le réseau est un réseau local en 192.168.21.0/24. Il n’y a aucune passerelle. L’ordinateur salon.sdz.tp (192.168.21.1) est le serveur DNS. Cela indique que chaque client doit renseigner sa configuration sur cette machine. Quand je parle de configuration, il s'agit de renseigner l'adresse IP du client et un nom de machine associé. Chaque poste est connecté au réseau en utilisant l’interface eth0.

Comme vous le voyez, nous avons choisi un nom de domaine: sdz.tp.
Cela veut dire que chaque ordinateur client possédant un nom pourra être accessible via l'adresse suivante : nomduclient.sdz.tp.

Pour créer ce nom de domaine, il faut se rendre dans le fichier named.conf :

vi /etc/named.conf

Dans ce fichier se trouve la configuration de notre nom de domaine:

Zone « sdz.tp » {                //Il s'agit de la zone direct. Voir explications ci-dessous
Type master;                        //Cette ligne indique que le type est maître c'est à dire qu'il s'agit du nom de domaine principal
File « /var/cache/bind/sdz.tp.hosts » ;    //Il s'agit du chemin pour accéder au fichier de zone direct
};

Zone “21.168.192.in-addr.arpa”{    //Il s'agit de la zone inverse. Voir explications ci-dessous
Type master;                       //Cette ligne indique que le type est maître c'est à dire qu'il s'agit du nom de domaine principal
File “ /var/cache/bind/sdz.tp.rev”;      //Il s'agit du chemin pour accéder au fichier de zone inverse
};

Le fichier de zone directe permet à partir de n'importe quel nom du type *.sdz.tp de fournir l'adresse IP de la machine.
On dit que la machine serveur DNS a autorité sur la zone sdz.tp.

Le fichier de zone inverse permet à partir de n'importe quelle adresse IP du type 21.168.192.* de fournir l'adresse de la machine.
On dit que la machine serveur DNS a autorité sur la zone 110.50.210.IN-ADDR-ARPA.

Notre serveur DNS a donc autorisé sur 2 zones : sdz.tp et 21.168.192.in-addr.arpa

Maintenant que notre nom de domaine est créé, il faut déclarer chaque machine cliente avec un nom associé. Cette déclaration se fait dans les fichiers de zone directe et inverse associé à notre nom de domaine : sdz.tp.hosts et sdz.tp.rev.

vi /var/cache/bind/sdz.tp.rev

Et ajoutez la ligne suivante :

4 IN PTR sdz.sdz.tp.

Qu'est-ce que ça veut dire ?

PTR associe une adresse IP à un enregistrement de nom de domaine, aussi dit « reverse » puisqu'il fait exactement le contraire du A (ci-dessous).

Ajoutons maintenant l'enregistrement dans le fichier de zone direct :

vi /var/cache/bind/sdz.tp.hosts
sdz IN A 192.168.21.6

Qu'est-ce que ça veut dire ?

À faire correspondre un nom d'hôte à une adresse IPv4 de 32 bits distribués sur quatre octets (exemple : 192.168.21.2).

Il ne reste qu'à configurer les clients pour leur indiquer l'adresse du serveur DNS.

Sur chaque client, ouvrez le fichier resolv.conf :

Vi etc/resolv.conf

Et complétez le avec ces lignes :

Search sdz.tp.                                //Le client cherchera le nom de domaine sdz.tp
Nameserver 192.168.21.1                        //L'adresse IP du serveur DNS (la machine "salon")

Pas mal, non ? ^^

Mise en place du serveur Apache

Voilà, nous y sommes ! :lol:

C'est dans cette partie que vous allez mettre en place notre serveur HTTP apache et le tester !

Au travail !

Installation du paquet apache2 sous Linux

La première étape est l'installation du paquet apache2. Le paquet ? :euh: Oui, sous Linux, pour ajouter un composant supplémentaire, il faut installer "son paquet" correspondant, et dans notre cas le paquet à installer s'appelle "apache2".

Pour ce faire, ouvrez une console et tapez ceci :

sudo apt-get install apache2

Quelques explications :

  • sudo est un mot-clé qui permet de faire des manipulations en mode root c'est à dire en mode "administrateur" ;

  • apt-get install est la commande par défaut pour installer un paquet ;

  • apache2 est le nom du paquet que je souhaite installer.

Vous venez maintenant d'installer le paquet apache2 qui contient tous les fichiers de configuration du serveur. Il ne reste plus qu'à le configurer ! Enfin, plus que... façon de parler quoi. ;)

Création d'une page HTML de test

Avant de passer à la configuration du serveur apache, nous allons créer une mini page web en HTML qui sera la page d'accueil de notre serveur Apache.

Créons tous d'abord le dossier qui contiendra cette page :

mkdir /var/www/sdz

On se déplace dans ce dossier :

cd /var/www/sdz

À l’intérieur de ce dossier, on crée une page HTML nommée index.html :

vi index.html

Cette commande crée le fichier index.html, et nous ouvre le fichier vide. Ajoutons maintenant ces quelques lignes:

<html>
<head> <title> Notre serveur Apache </title> </head>
<body> <p> Voici la page d'accueil de votre serveur Apache ! </p> </body>
</html>

Enregistrez votre travail, et voilà, nous possédons maintenant une page web pour notre serveur apache. Passons désormais à la configuration du serveur. Enfin !

Configuration du serveur Apache

Nous allons aborder deux exemples de configuration du serveur.

1er exemple : Configuration du serveur apache sans restrictions d’accès c'est à dire sans mot de passe. Dans ce cas, tout le monde peut accéder à notre serveur.
2ème exemple : Configuration du serveur apache avec authentification basique des utilisateurs en respectant simultanément les règles suivantes : accès permis seulement à partir de la machine salon identifiée par son adresse IP ou son nom et accès par mot de passe pour les utilisateurs admin et master.

1er exemple :

Déplaçons-nous dans le dossier apache2 :

cd /etc/apache2/sites-available

Créons dans ce dossier le fichier sdz. Ce fichier contiendra la configuration du serveur apache pour le nom de domaine sdz.

vi sdz

Et insérez à l'intérieur les quelques lignes suivantes :

NameVirtualHost 192.168.21.6:80          //Indiquez ici l'adresse IP de la machine serveur, suivie du port 80 qui est le port http
        <VirtualHost 192.168.21.6 :80>  //Indiquez également ici l'adresse IP de la machine serveur</couleur>
        ServerName sdz.truc.tp         //Cette ligne est optionnelle. Vous pouvez indiquez le nom de domaine de la machine si elle en possède un
        DocumentRoot /var/www/sdz      //Indiquez ici le chemin de l'accès au fichier index.html
        <Directory /var/www/sdz>       //Indiquez ici le chemin du répertoire apache par défaut
                Order allow,deny       //Cette ligne représente les différentes options pour un utilisateur. Soit permettre, soit inetrdire l'accès
                Allow from all       //Cette ligne permet l'accès au serveur à tous les utilisateurs
        </Directory>
</VirtualHost>

Maintenant que vous avez créé le fichier de configuration dans le dossier sites-available, il est nécessaire "d'activer" ce domaine en créant un lien symbolique dans le dossier sites-enabled (qui est le dossier contenant les sites dits "actifs") :

sudo ln -s /etc/apache2/sites-available/sdz /etc/apache2/sites-enabled/sdz

Afin de prendre en compte votre configuration, redémarrez le serveur apache.

/etc/init.d/apache2 restart

Vous pouvez désormais tester l'accès à votre serveur apache en tapant dans un navigateur web (Internet Explorer ou Mozilla Firefox) :

http://192.168.21.6

ou (si vous avez configurez un serveur DNS)
http://sdz.truc.tp

tail -f /var/log/apache2/access.log

ou encore

tail -f /var/log/apache2/error.log

Ceci termine notre premier exemple. Comme vous le voyez, dans ce cas tout le monde peut accéder à notre page.

2ème exemple :

Intéressons-nous maintenant au deuxième exemple, un peu plus intéressant en configurant l'accès au serveur apache qu'à partir d'une seule machine (salon) et en protégeant l'accès par mot de passe pour les utilisateurs admin et superadmin.

Les modifications se font au niveau du même fichier :

vi /etc/apache2/sites-available/sdz

Remplacez maintenant les lignes du fichier par celles-ci :

NameVirtualHost 192.168.21.6:80
<VirtualHost 192.168.21.6:80>
        ServerName sdz.sdz.tp
        DocumentRoot /var/www/sdz
        <Directory /var/www/sdz>
        Order allow,deny
        Allow from 192.168.21.1   //Cette ligne définit l'accès au serveur uniquement à partir de la machine possedant l'adresse IP 192.168.21.1
        Authname “salon”          //Indiquez sur cette ligne le nom de la machine qui pourra se connecter.
        Authtype basic            //Cette ligne indique que le système utilisera le fichier .htpasswd pour gérer les utilisateurs
        AuthUserFile /var/www/sdz/.htpasswd   //Il s'agit du fichier qui sera utilisé pour gérer les connexions.
        Require valid-user        //Cette ligne indique que pour que la connexion s'effectue, il est necessaire que l'utilisateur existe.
        Satisfy all
</Directory>
</VirtualHost>

Enregistrez et quittez le fichier. Passons maintenant à la configuration du fichier .htaccess.

Authname « Accès protégé » //Cette ligne permettra d'afficher Accès protégé lors de l'accès au serveur
AuthType Basic
AuthUserFile /var/www/sdz/htpasswd    //Cette ligne indique le chemin du fichier qui contiendra les mots de passe de connexion des utilisateurs.
Require valid-user

Pour finir, créons l'accès pour les deux utilisateurs admin et superaddmin. Tapez simplement dans une terminal les lignes suivantes :

htpasswd -c -m htpasswd admin
htpasswd -m htpasswd superadmin

Enfin, afin de prendre en compte votre configuration, redémarrez le serveur apache.

/etc/init.d/apache2 restart

Voilà, vous pouvez tester l'accès à votre serveur apache. Normalement, vous ne devriez pouvoir y accéder qu'à partir de la machine "salon" identifiée par l'adresse IP 192.168.21.1 et en utilisant un des deux utilisateurs admin ou superadmin.

Ceci termine la partie concernant la configuration d'un serveur HTTP apache.

Passons maintenant aux différents types d'hébergements possibles pour un serveur apache.

Hébergement virtuel

Hébergement virtuel par nom de domaine

Ce type d'hébergement est utilisé pour accueillir plus d'un nom de domaine sur le même ordinateur sur la même adresse IP.

Afin de tester ce type d’hébergement virtuel, chaque machine doit être recensée sous plusieurs noms différents sur le DNS en utilisant les enregistrements de type A et CNAME.

Maintenant que la configuration DNS n'a plus de secret pour vous, rajouter dans le fichier hosts du domaine (/var/cache/bind/sdz.truc.hosts), les informations suivantes :

sdzVH1 IN CNAME sdz
sdzVH2 IN CNAME sdz

Créons les trois fichiers index.html contenant comme informations le nom de domaine du serveur virtuel et plaçons-les dans les répertoires correspondant :

mkdir /var/www/sdzVH1
mkdir /var/www/sdzVH2

À l’intérieur de chaque dossier, on crée une page HTML nommée index.html :

<html>
<head> <title> Notre serveur Apache </title> </head>
<body> <p> Voici la page d'accueil de votre serveur Apache sdzVH1 ! </p> </body>
</html>
<html>
<head> <title> Notre serveur Apache </title> </head>
<body> <p> Voici la page d'accueil de votre serveur Apache sdzVH2 ! </p> </body>
</html>

On crée deux fichiers de configuration pour nos deux nouveaux domaines dans le dossier /etc/apache2/sites-available afin de créer ces deux serveurs virtuels pointant sur deux répertoires différents.

vi /etc/apache2/sites-available/sdzVH1

On ajoute dans ce fichier les lignes suivantes :

NameVirtualHost 192.168.21.6:80
<VirtualHost 192.168.21.6:80>
        ServerName sdzVH1.truc.tp
        ServerAlias sdzVH1
        DocumentRoot /var/www/sdzVH1
        <Directory /var/www/sdzVH1>
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

De même pour l'autre domaine :

vi /etc/apache2/sites-available/sdzVH2

On ajoute dans ce fichier les lignes suivantes :

NameVirtualHost 192.168.21.6:80
<VirtualHost 192.168.21.6:80>
        ServerName sdzVH2.truc.tp
        ServerAlias sdzVH2
        DocumentRoot /var/www/sdzVH2
        <Directory /var/www/sdzVH2>
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

C'est l'heure d'activer nos deux hébergements virtuels. Pour ce faire, il faut créer des liens symboliques dans le dossier /etc/apache2/sites-enabled (qui recensent les sites actifs) pour que la configuration soit lue lors du démarrage d'apache.

sudo ln -s /etc/apache2/sites-available/sdzVH1 /etc/apache2/sites-enabled/sdzVH1
sudo ln -s /etc/apache2/sites-available/sdzVH2 /etc/apache2/sites-enabled/sdzVH2
/etc/init.d/apache2 restart

Il ne vous reste plus qu'à tester. Vous devriez pouvoir accéder à chaque page web correspondante à chaque nom de domaine.

Hébergement virtuel par port

Ce type d'hébergement permet d'utiliser un serveur web en précisant le port qu'il utilise. Si le port n'est pas précisé, la connexion ne s'effectuera pas ! ;)

Dans ce cas, chaque serveur sera adressé par une requête HTTP à l’aide d’un numéro de port différent. Par exemple pour la machine "salon" :

http://sdz.truc.tp:80
http://sdzVH1.truc.tp:40001
http://sdzVH2.truc.tp:40002

Afin que apache écoute sur les ports correspondants, on les ajoute dans le fichier ports.conf :

/etc/apache2/ports.conf
Listen 80
Listen 40001
Listen 40002

Effectuons maintenant les modifications dans chaque fichier de configuration pour nos différents domaine (que vous connaissez maintenant par cœur) :

vi /etc/apache2/sites-available/sdz
NameVirtualHost 192.168.21.6:80
<VirtualHost 192.168.21.6:80>
        ServerName sdz.truc.tp
        ServerAlias sdz
        DocumentRoot /var/www/sdz
        <Directory /var/www/sdz>
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Puis dans le fichier de configuration du domaine sdzVH1 :

NameVirtualHost 192.168.21.6:80
<VirtualHost 192.168.21.6:40001>
        ServerName sdzVH1.truc.tp
        ServerAlias sdzVH1
        DocumentRoot /var/www/sdzVH1
        <Directory /var/www/sdzVH1>
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Puis dans le fichier de configuration du domaine sdzVH2 :

NameVirtualHost 192.168.21.6:80
<VirtualHost 192.168.21.6:40002>
        ServerName sdzVH2.truc.tp
        ServerAlias sdzVH2
        DocumentRoot /var/www/sdzVH2
        <Directory /var/www/sdzVH2>
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

C'est fini ! Il ne vous reste plus qu'à tester :

Hébergement virtuel par adresse IP

Ce type d'hébergement permet, tout en associant deux adresses IP à une interface, de se connecter aux pages associées à chaque adresse IP.

Pour démarrer, on doit créer un alias eth0 :1 sur l’interface eth0 afin d'associer 2 adresses ip à une seule interface. On ajoute pour cela les lignes suivantes dans le fichier /etc/network/interfaces :

Auto eth0 :1
Iface eth0 :1 inet static
Address 192.168.21.106
Netmask 255.255.255.0
Broadcast 192.168.21.255

On modifie notre fichier adoré ! ;)
Pour le domaine sdz :

vi /etc/apache2/sites-available/sdz
NameVirtualHost 192.168.21.6:80
<VirtualHost 192.168.21.106:80> //On indique simplement que pour accéder au domaine sdz.truc.tp, il faudra utiliser l'adresse IP 192.168.21.106
        ServerName sdz.truc.tp
        ServerAlias sdz
        DocumentRoot /var/www/sdz
        <Directory /var/www/sdz>
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Vous pouvez faire la même chose pour les domaines sdzVH1 et sdzVH2 si vous le souhaitez. :-°

:D Il ne reste qu'à apprécier votre travail, à vous lancer des roses, des fleurs, et à dérouler le tapis rouge à vos pieds ! :D

Eh bien voilà ! Je crois que vous avez fait le tour de ce qu'il faut savoir sur les serveurs Apache et DNS.

N'hésitez pas à partager vos expériences !

@wawanopoulos

How courses work

  • 1

    You have now access to the course contents and exercises.

  • 2

    You will advance in the course week by week. Each week, you will work on one part of the course.

  • !

    Exercises must be completed within one week. The completion deadline will be announced at the start of each new part in the course. You must complete the exercises to get your certificate of achievement.

  • 3

    At the end of the course, you will get an email with your results. You will also get a certificate of achievement if you are a <a href="/premium>Premium</a> Member and if you got at least 70% of your answers right.

Example of certificate of achievement
Example of certificate of achievement