Vous êtes sur la page 1sur 87

N° d’ordre : 15 / L3/ TCO Année Universitaire : 2013/2014

UNIVERSITE D’ANTANANARIVO
----------------------
ECOLE SUPERIEURE POLYTECHNIQUE
-----------------------
DEPARTEMENT TELECOMMUNICATION

MEMOIRE DE FIN D’ETUDES

en vue de l’obtention

du DIPLOME de LICENCE
Mention : Télécommunication
Parcours : Réseaux et Systèmes

par : RAMASY Heritier Arantès

« CONCEPTION ET REALISATION D’UNE PLATEFORME


D’EXPLOITATION DE DONNEES IMPLEMENTEE DANS UN
RESEAU LOCAL »

Soutenu le 27 mars 2015 devant la Commission d’Examen composée de :

Président :
M. RATSIMBAZAFY Andriamanga

Examinateurs :
Mme RAMAFIARISONA Malalatina
Mme ANDRIATSILAVO Haja
M. RAJAONARISON Tianandrasana Romeo

Directeur de mémoire : RAVONIMANANTSOA Manda-Vy


REMERCIEMENTS

Tout d’abord, je remercie notre Seigneur DIEU, car sans sa Grace, sa Bénédiction, et sa
Bienveillance ; ce travail n’aurait pu être réalisé

Mes sincères remerciements s’adressent aussi à :


Monsieur ANDRIANARY Philippe : Professeur Titulaire, Directeur de l’Ecole Supérieure
Polytechnique d’Antananarivo,
Monsieur RAKOTOMALALA Mamy Alain, Maitre de Conférences à l’Ecole Supérieure
Polytechnique d’Antananarivo, Chef de Département Télécommunications et qui nous fait
l’honneur de présider ce présent mémoire.
Je tiens à témoigner ma reconnaissance à Monsieur RAVONIMANANTSOA Manda-Vy,
Maitre de Conférences à l’Ecole Supérieure Polytechnique d’Antananarivo, Département
Télécommunications, qui m’a dirigé et conseillé durant la réalisation de ce travail de mémoire.
Messieurs les Membres de jury qui ont accepté d’examiner ce mémoire :
Madame RAMAFIARISONA Malalatina, Maitre de Conférences, Enseignants Chercheurs au
sein du Département Télécommunication
Madame ANDRIATSILAVO Haja Maitre de Conférences, Enseignants Chercheurs au sein du
Département Télécommunication
Monsieur RAJAONARISON Tianandrasana Romeo, Maitre de Conférences, Enseignants
Chercheurs au sein du Département Télécommunication

J’adresse un grand Merci à tous les Membres de ma Famille, à tous les Enseignants Chercheurs
et Personnels administratifs de l’Ecole Supérieure Polytechnique d’Antananarivo ainsi qu’à
tous mes collègues et mes amis qui de près ou de loin, ont contribué à l’accomplissement de ce
travail.

i
TABLE DE MATIERE

REMERCIEMENTS .............................................................................................................................. i

TABLE DE MATIERE ......................................................................................................................... ii

NOTATIONS ET ABREVIATIONS .................................................................................................. vi

INTRODUCTION GENERALE .......................................................................................................... 1

CHAPITRE 1 : LES RESEAUX INFORMATIQUES ...................................................................... 2

1.1 Introduction et Définition ........................................................................................................... 2

1.2 Classification réseaux .................................................................................................................. 2

1.3 Différents topologie réseaux ....................................................................................................... 3

1.3.1 Topologie en Bus ................................................................................................................... 3

1.3.2 Topologie en Anneaux........................................................................................................... 4

1.3.3 Topologie en étoile ................................................................................................................. 5

1.3.4 Topologie maillé .................................................................................................................... 6

1.4 Structuration en couches ............................................................................................................ 6

1.4.1 Modèle OSI ............................................................................................................................ 6

1.4.2 Modèle TCP/IP ...................................................................................................................... 9

1.4.3 Correspondance et comparaison entre modèle OSI et TCP ............................................... 11

1.4.3.1 Similitude entre OSI et TCP/IP: .................................................................................... 11

1.4.3.2 Différence entre OSI et TCP/IP: .................................................................................... 12

1.5 Environnement Client/serveur ................................................................................................. 12

1.5.1 Présentation de l'environnement ........................................................................................ 12

1.5.2 Architecture réseaux............................................................................................................ 14

1.5.2.1 Architecture 1-tiers ........................................................................................................ 14

1.5.2.2 Architecture 2-tiers ........................................................................................................ 14

1.5.2.3 Architecture 3-tiers ........................................................................................................ 14

1.5.2.4 Comparaisons entre architecture.................................................................................. 16

1.6 Conclusion ................................................................................................................................... 17

ii
CHAPITRE 2 : CONCEPTION PLATEFORME ........................................................................... 18

2.1 Présentation plateforme ............................................................................................................ 18

2.2 Squelette ..................................................................................................................................... 19

2.2.1 Serveur DHCP ..................................................................................................................... 19

2.2.1.1 Protocole DHCP ............................................................................................................ 19

2.2.1.2 Installation Serveur DHCP ............................................................................................ 21

2.2.1.3 Configuration Serveur DHCP........................................................................................ 22

2.2.2 Serveur DNS ........................................................................................................................ 24

2.2.2.1 Service de résolution de nom ....................................................................................... 24

2.2.2.2 Installation serveur de nom ........................................................................................... 26

2.2.2.3 Configuration du serveur de résolution de nom ............................................................ 27

2.2.3 Serveur web .......................................................................................................................... 30

2.2.3.1 Principe.......................................................................................................................... 30

2.2.3.2 Le serveur web Apache ................................................................................................. 31

2.2.4 Serveur de base de données ................................................................................................. 31

2.2.4.1 Notion de Base de données............................................................................................ 31

2.2.4.2 Le Système de Gestion de Base de Données MySQL ................................................... 33

2.2.4.3 Administration de base de données avec phpMyAdmin ............................................... 34

2.3 Conclusion .................................................................................................................................. 36

CHAPITRE 3 : MISE EN PLACE MOTEUR DE RECHERCHE ................................................ 37

3.1 Présentation modèle conceptuelle ............................................................................................ 37

3.2 Principe....................................................................................................................................... 37

3.3 Scanne du web ........................................................................................................................... 38

3.3.1 Présentation Scrapy ............................................................................................................. 38

3.3.2 Installation et configuration Scrapy ................................................................................... 39

3.3.3 Création des Spiders ............................................................................................................ 40

3.4 Indexation de la base de données ............................................................................................. 40

3.4.1 Définition ............................................................................................................................. 40

iii
3.4.2 SphinxSearch ....................................................................................................................... 41

3.4.3 Installation et Configuration de SphinxSearch.................................................................. 41

3.4.4 Utilisation de sphinx ............................................................................................................ 43

3.5 Portail pour moteur de recherche ............................................................................................ 43

3.5.1 Définition ............................................................................................................................. 43

3.5.2 Croquis du site ..................................................................................................................... 44

3.5.3 Réalisation ........................................................................................................................... 45

3.5.3.1 Mise en œuvre coté HTML ........................................................................................... 45

3.5.3.2 Mise en œuvre coté CSS................................................................................................ 47

3.5.3.3 Mise en œuvre coté PHP ............................................................................................... 49

3.5.3.4 Mise en œuvre coté JavaScript ...................................................................................... 50

3.5.3.5 Tableau Récapitulatifs ................................................................................................... 51

3.5.3.6 Rendu du portail ............................................................................................................ 52

3.6 Conclusion .................................................................................................................................. 53

CHAPITRE 4 : MISE EN PLACE DU SERVEUR DE MESSAGERIE ....................................... 54

4.1 Principe....................................................................................................................................... 54

4.2 Protocole utilise.......................................................................................................................... 55

4.2.1 Protocole Telnet ................................................................................................................... 55

4.2.2 Protocole SMTP................................................................................................................... 56

4.2.3 Protocole POP/IMAP .......................................................................................................... 58

4.3 Les agents de messageries ......................................................................................................... 59

4.3.1 Les MTA............................................................................................................................... 59

4.3.2 Les MDA .............................................................................................................................. 59

4.3.3 Les MUA .............................................................................................................................. 59

4.4 Installation et configuration des agents de messagerie .......................................................... 60

4.4.1 Installation et configuration postfix ................................................................................... 60

4.4.2 Installation et configuration Dovecot ................................................................................. 61

4.4.3 Sécurisation service mails ................................................................................................... 62

4.6 Notion de webmail ..................................................................................................................... 63

iv
4.6.1 Definition ............................................................................................................................. 63

4.6.2 Roundcube et son installation ............................................................................................. 64

4.6.3 Hébergement Webmail ........................................................................................................ 66

4.7 Envoi et réception de courrier .................................................................................................. 68

4.7.1 Client léger ........................................................................................................................... 68

4.7.2 Client lourd .......................................................................................................................... 69

4.8 Conclusion .................................................................................................................................. 71

CONCLUSION GENERALE............................................................................................................. 72

ANNEXE 1 ........................................................................................................................................... 73

ANNEXE 2 ........................................................................................................................................... 74

FICHE DE RENSEIGNEMENT ....................................................................................................... 77

RESUME .............................................................................................................................................. 78

ABSTRACT ......................................................................................................................................... 78

v
NOTATIONS ET ABREVIATIONS

AJAX Asynchronous JavaScript and XML


ANSI American National Standard Institute
API Application Programing Interface
ARCNET Attached Resource Computer Network
CPU Central Processor Unit
CSMA / CA Carrier Sense Multiple Access / Collision Avoidance
CSMA / CD Carrier Sense Multiple Access / Collision Detection
CSS Cascading Style Sheets
CSV Comma-separated values
DARPA Defense Advanced Research Project Agency
DHCP Dynamic Host Configuration Protocol
DNA Digital Network Architecture
DNS Domain Name Service
DOD Department Of Defense
DOM Document Object Model
DSA-DCM Distributed System Architecture-Distributing Computing Model
FAI Fournisseur d’Accès Internet
FTP File Transfer Protocol
GPL General Public Licence
HSTR High Speed Token Ring
HTML HyperText Markup Language
HTTP HyperText Transfer Protocol
ICMP Internet Control Message Protocol
IEEE Institute of Electrical and Electronics Engineers
IGMP Internet Group Managment Protocol
IMAP Internet Message Access Protocol
IP Internet Protocol
IPv4 Internet Protocol version 4
IPv6 Internet Protocol version 6
ISO International Standard Organisation
IUT International Union of Telecommunication

vi
JSON JavaScript Object Notation
LAN Local Area Network
MAC Media Access Control
MAN Metropolitan Area Network
MDA Mail Delivery Agent
MTA Mail Transfer Agent
MUA Mail User Agent
NS Name Server
OSI Open System Interconnection
PC Personal Computer
PHP Hypertext Preprocessor
POP Post Office Protocol
PPP Point to Point Protocol
RAM Random Access Memory
SGBD Système de Gestion de Base de Données
SGBDR Système de Gestion de Base de Données Relationnel
SMTP Simple Mail Transport Protocol
SNA System Network Architecture
SOA Start Of Authority
SQL Structured Query Language
SSL Secure Socket Layer
STP Shielded Twisted Pair
TCP Transmission Control Protocol
TLS Transport Layer Security
URL Uniform Resource Locator
UUCP Unix to Unix Copy Protocol
XML Extensible Markup Language

vii
INTRODUCTION GENERALE
Les réseaux de télécommunication constituent de nos jours une formidable passerelle entre les
hommes et les différentes cultures et viennent nous apporter de multiples conforts à notre mode
de vie en révolutionnant le travail des individus, d’une part, et en rapprochant les distances
d’autre part, mais transporter des informations aussi différentes que la voix, les données et les
images nécessite des techniques de plus en plus élaborées et une bonne connaissance des
mécanismes de base ainsi qu’une maîtrise des technologies utilisées c’est-à-dire bien connaître
les limites technologies pour être capable de concevoir, de spécifier et d’utiliser correctement
les moyens mis à notre disposition

Aujourd’hui grâce à son déferlant développement, le réseau public Internet est devenu la banque
de données la plus vaste qui soit au monde. Malheureusement, cette énorme quantité
d’information peut parfois paraitre sous exploité car seule quelques institutions et entreprise
tels que Google ou Facebook qui prennent l’initiative de l’exploiter. En effet aux yeux du grand
public, Internet ne constitue qu’un vaste terrain de jeu ou il peut naviguer et s’informer lorsqu’il
en a besoin. Mais derrière ces usages que l’on en fait, Internet constitue et présente une
mécanique bien huilés pour collecter les informations qui transite par lui et ensuite le mettre à
disposition à des tierces qui ont les connaissances nécessaires pour en extraire les données.

L’objectif principal de ce mémoire consiste donc comme son titre l’indique, à présenter les
notions et connaissances nécessaire pour pouvoir exploiter ces données qui se trouve sur
internet puis de donner les diffèrent techniques mis en œuvre pour parvenir à cette fin. Par
conséquent, cette ouvrage vas définir les outils utilisé dans ce contexte et vas aboutir à la
réalisation d’une plateforme constitué d’un outil de recherche sur internet, mais aussi d’un outil
qui permet de gérer les courrielle électroniques qui seront tous deux accessible via le réseau
locale de la plateforme.

1
CHAPITRE 1 : LES RESEAUX INFORMATIQUES
1.1 Introduction et Définition

L’évolution générale des systèmes d’information et des moyens d’y accéder ont engendré une
modification significative des méthodes de travail. D’individuel, le travail est devenu collectif.
Les besoins d’information et de communication dans le groupe de travail ont été décuplés. Le
micro-ordinateur et le réseau local sont à l’épicentre de cette mutation. Un réseau est un
ensemble de moyens matériels et logiciels géographiquement dispersés destiné à s’échanger
des informations entre eux.

Figure 1.01: Illustration réseau


Les réseaux informatiques sont donc nés, du besoin de relier des terminaux distants à un site
central puis des ordinateurs entre eux et enfin des machines terminales, telles que stations de
travail.

1.2 Classification réseaux


On peut distinguer les réseaux selon différents critères, cette classification est fondée sur la
notion d’étendue géographique. Ceci correspond aussi à un ensemble de contraintes que le
concepteur devra prendre en compte lors de la réalisation de son réseau.

Généralement donc, on peut citer les variations suivantes :

– Le LAN ou Local Area Network, qui est un réseau local d’étendue limitée à une
circonscription géographique réduite c’est adire a un seul bâtiment par exemple, ces réseaux
destinés au partage local de ressources informatiques que se soit matérielles ou logicielles
offrent des débits élevés de 10 à 100 Mbit/s.

– Le MAN ou Metropolitan Area Network. Ce type de réseau peut couvrir une zone étendue de
l’ordre d’une centaine de kilomètres, les MAN sont généralement utilisées pour lier ensemble

2
plusieurs réseaux locaux. Ainsi c’est dans les campus ou dans les villes que l’on peut déployer
le réseau MAN.

–Le WAN ou Wide Area Network. A l’instar du MAN le WAN assurent aussi le transport
d’information sur de grande distance qui peut être à l'échelle d'un pays, d'un continent, voire
même de la planète entière. Lorsque ces réseaux appartiennent à des opérateurs, les services
sont offerts contre une redevance. Les débits offerts sont très variables de quelques kbit/s à
quelques Mbit/s. Notons qu’internet est aussi un WAN, le plus grand qui existe à ce jour [1][2].

1.3 Différents topologie réseaux

Une topologie de réseau est en informatique une définition de l'architecture d'un réseau.
Définissant les connexions entre ces postes et une hiérarchie éventuelle entre eux, elle peut
avoir des implications sur la disposition géographique des différents postes informatiques du
réseau. Dans cette partie on va citer les différents types de topologie et détailler leurs
caractéristiques.

1.3.1 Topologie en Bus

Figure 1.02 : Topologie en bus

Comme on le voit ci-dessous la topologie en bus consiste à utiliser un câble unique sur lequel
sont connectées toutes les machines du réseau. C'est le modèle le plus simple avec lequel les
premiers LAN étaient constitués. Ce câble est communément nommé "bus" car c'est par lui que
toutes les informations passent en tous points. Ce modèle de réseau a été progressivement
abandonné à cause de sa fragilité. En effet, dans ce type de réseau, une simple défaillance du
câble peut couper l'ensemble du réseau, et il peut être difficile de localiser cette défaillance.
Une panne sur un nœud peut perturber l'ensemble du réseau. Enfin, cette topologie favorise de
nombreuses collisions de trames, notamment si le réseau est constitué de nombreux nœuds.

3
Avec cette topologie, lorsqu'un nœud émet, le message est envoyé des deux côtés du bus, et
donc si beaucoup de machines émettent simultanément, cela provoque une surcharge sur le bus,
un affaiblissement de la bande passante et une probabilité de collisions très élevée. C'est ce
défaut le manque de fiabilité et de souplesse qui ont conduit la topologie en bus à disparaître au
profit d’autre topologie plus performant.

1.3.2 Topologie en Anneaux

Figure 1.03 : Topologie en Anneau

Ici on peut voir la topologie en anneau qui est l’évolution directe de la topologie en bus, comme
pour la topologie en bus il implique une circulation unidirectionnelle des messages, c’est-à-dire
qu’il est interdit a deux machines appartenant au réseaux d’émettre en même temps sur le
support de transmission. La principale différence de cette topologie du celle en bus est qu’elle
utilise une méthode d’accès appelle CSMA/CA ou Carrier Sense Multiple Access with Collision
Avoidance qui utilise le système d’anti collision plus performant, le système a jeton.

Le principe du système à jeton est assez simple : une machine connectée au réseau possède un
jeton virtuel. Ce jeton, c'est une autorisation de communiquer. Une fois que la machine a
transmis ce qu'elle voulait, elle passe le jeton à la machine suivante, et ainsi de suite. Si le
détenteur du jeton n'a rien à dire, il le passe au suivant. Le message est relayé par toutes les
stations jusqu’à son destinataire. Dans ce type de topologie le droit d’émettre représenté par le
jeton est transmis à la station qui suit physiquement celle qui le détient jeton non adressé

4
1.3.3 Topologie en étoile

Figure 1.04 : Topologie en étoile

Comme le montre cette figure si cette topologie s’appelle topologie en étoile c’est à cause de
la structure ou la forme physique qu’elle a. Dans ce type de topologie en étoile, la
communication entre deux nœuds du réseau se fait par l'intermédiaire d'un élément centrale.
Les systèmes qui se connectent sur l'élément central sont simples, et toute la complexité réside
dans l'élément central. Cet élément doit être fiable et fournir une séparation des signaux entre
les ports reliés aux différents systèmes afin qu'un problème sur l'un des ports ne se transmette
pas aux autres ports. Les réseaux à topologie en étoile sont très couramment utilisés dans les
réseaux LAN domestiques ou de petite entreprise. L'élément central est alors un hub ou un
switch.

La topologie en étoile présente certains points forts par rapport aux topologies citées
précédemment. En effet contrairement aux autres ici chaque liaisons est indépendante les uns
aux autres et permet une communication simultané de deux ou plusieurs machines sur les
réseaux dans le cas où l’élément centrale est un switch ou commutateur. En plus de cela
l'évolution du réseau dont la topologie est en étoile ne nécessite pas de modifications dans le
câblage du réseau existant, car il suffit d'ajouter des câbles supplémentaires raccordé à l’élément
central.

La topologie en étoile présente tout de même l’inconvénient de se trop se reposer sur l’élément
qui se trouve au milieu, car en cas de panne de cette dernière tout le réseau seras indisposé [6]
[8].

5
1.3.4 Topologie maillé

Figure 1.05 : Topologie en maille

Une topologie maillée correspond à plusieurs liaisons point à point, son principe est de relier
tous les ordinateurs entre eux. Comme ça, aucune risque de panne générale si une machine
tombe en panne car l'information peut parcourir le réseau suivant des itinéraires divers, sous le
contrôle de puissants superviseurs de réseau, ou grâce à des méthodes de routage réparties. En
revanche le nombre de liaisons nécessaires devient très élevé lorsque le nombre de terminaux
présent au sein du réseau l’est. En effet quand les machines qui participent aux réseaux
deviennent nombreuses, les chiffres obtenus pour les liaisons nécessaires peuvent sembler
paradoxale parce que si n est le nombre de matérielle à mettre en réseau avec ce type de
𝑛(𝑛−1)
topologie alors il faudra câbles pour parvenir à bout de notre tâche.
2

Même si cette modèle peut paraitre adaptée aux petits réseaux, précisons quand même qu’elle
se rencontre très souvent aussi dans les grands réseaux de distribution dont internet en fait
partie.

1.4 Structuration en couches


1.4.1 Modèle OSI
Le modèle OSI ou Open System Interconnexion a été développé en 1978 par l’ISO
(International Standard Organization) afin de définir est un standard de communication pour la
communication en réseau, de tous les systèmes informatiques. Ce modèle décrit théoriquement
les spécifications nécessaires pour que les machines ou terminales situé dans un même réseau
parle le même langage lors des étapes de transmission de donnée. L’Open System
Interconnexion est un concept architectural présenté en 7 couches illustré par la figure suivante :

6
Figure 1.06 : Modèle OSI:

Ce modèle OSI aussi appelé modèle de référence ne définit pas seulement des fonctionnalités
en couche mais précise aussi comme le montre la figure ci-dessus le modèle d’interconnexion
entre les entités du réseaux, censé aider les constructeurs de matériels de réseau à savoir
comment fabriquer leurs matériels, et donc à garantir la compatibilité entre les matériels.

Dans ce modèle cette architecture chaque couche ne peut communiquer qu’avec le couche qui
se trouve directement à côté de lui, c’est-à-dire la couche directement au-dessus lors d’une
réception de donnée et la couche directement au-dessous lors d’une émission. Toutes les
couches du modèle OSI est donc parcourue lors d’un échange effectué sur le réseau [1].

Chaque couche de cette modèle possède évidemment son caractéristique spécifique et joue un
rôle important dans l’accomplissement des échanges que l’on va présenter dans le tableau
suivant :

7
Couche Rôle
La couche physique assure le transfert des bits sur le canal physique
Couche 1/ couche ou le support. À cet effet, elle définit les supports et les moyens d’y
physique accéder, à savoir les spécifications mécaniques c’est-à-dire a propos
des connecteurs, spécifications sur les niveaux de tension,
spécifications fonctionnelles des éléments de raccordement
nécessaires l’établissement, au maintien et à la libération de la ligne.
La couche liaison assure, sur la ligne, un service de transfert de blocs
Couche 2/ couche de données que l’on appelle trame entre deux systèmes adjacents en
liaison de donnée assurant le contrôle, l’établissement, le maintien et la libération du
lien entre les machines.
Les protocoles de cette couche fournissent les moyens permettant de
Couche 3/ couche transmette les paquets grâce aux techniques de routage et d’adressage
réseau des sous-réseaux utilisé.
Cette couche a le rôle d’assurer le contrôle du transfert de bout en
Couche 4/ couche bout des informations entre les deux systèmes d’extrémité. La couche
transport transport est la dernière couche de contrôle des informations, elle doit
assurer aux couches supérieures un transfert fiable quelle que soit la
qualité du sous-réseau de transport utilisé.
La couche session quant à lui gère les transactions entre les
Couche 5/ couche applications distantes. La fonction essentielle de la couche session est
session la synchronisation des échanges et la définition de points de reprise.
Cette couche se présente comme étant le responsable de la mise en
Couche 6/ couche forme des données, elle gère donc pour cela les conversions de code
présentation nécessaires pour délivrer à la couche supérieure un message dans une
syntaxe compréhensible par celle-ci. En outre, elle peut,
éventuellement, réaliser des transformations spéciales, comme la
compression de données.
Fournit au programme utilisateur, l’application proprement dite,
Couche 7/ couche c’est-à-dire un ensemble de fonctions ou entités d’application
applicative permettant le déroulement correct des programmes communicants
(transferts de fichiers, courrier électronique…).

Tableau 1.01: Couches du modèle OSI

8
1.4.2 Modèle TCP/IP
L’architecture TCP/IP a été développée, dans le milieu des années 1970, par la DARPA
(Defense Advanced Research Project Agency), une agence du département de la Défense des
États-Unis chargée de la recherche et développement des nouvelles technologies destinées à un
usage militaire. Initialement, elle a été créée pour répondre aux besoins d’interconnexion des
systèmes informatiques de l’armée américaine car à l’époque les machines utilisait des
protocoles différents et de ce faite était le plus souvent incompatible. Le modèle TCP/IP tire
son nom de ses deux protocoles principaux qui est le TCP ou Transmission Control Protocol et
IP ou Internet Protocol, mais en fait il regroupe en son sein un ensemble de protocoles
permettant de résoudre les problèmes d’interconnexion en milieu hétérogène que l’on a parlé
précédemment. À cet effet, TCP/IP décrit un réseau logique ou réseau IP au-dessus du ou des
réseaux physiques réels auxquels sont effectivement connectés les ordinateurs.[2]

Comme le modèle OSI le modèle TCP/IP présente une structure en couche. Précisons que
contrairement au modèle OSI de l’ISO qui n’est en fait qu’une présentation théorique des
échanges le TCP/IP est plus pratique. De nos jours, c’est sur ce modèle que repose
principalement tout le fonctionnement des grands réseaux telle qu’internet. Contrairement au
modèle OSI, le modèle TCP/IP ne comporte que quatre couches : la couche accès réseau, la
couche Internet, la couche transport et la couche application

Figure 1.07 : Modèle TCP/IP

Pour ce modèle, désirant alléger et simplifier au maximum les couches inter-réseau, les
concepteurs de TCP/IP ont choisi ce structure globale pour le représenter, est comme nous
pouvons le voir elle reste assez similaire au modèle OSI. Les rôles des couches vue sur la figure

9
ci-dessus ressemble beaucoup à celles du modèle de référence de l’ISO et est cité dans le tableau
ci-dessous.

Couche Rôle
Ce couche représente la connexion physique avec les câbles et
Couche 1/ Accès réseau tous les détails associés comme les connecteurs, les types de
codage utilisé ou encore le niveau des signaux, mais aussi les
protocoles d'accès au réseau.
Cette couche a le rôle de fournir une adresse logique pour
l'interface physique. Cette couche fournit un mappage entre
l'adresse physique et l'adresse logique grâce aux protocoles ARP
Couche 2/ Internet (Address Resolution Protocol) et RARP (Reverse Address
Resolution Protocol).
Ce couche est aussi implémentée du protocole ICMP (Internet
Control Message Protocol), qui s'occupe des problèmes et
diagnostique associés au protocole IP.
C’est également à ce niveau que l’on gère le routage des paquets
entre les hôtes des différents sous réseaux.
C’est la couche responsable de la transmission des paquets. Deux
protocoles sont associés à cette couche, le TCP et l’UDP. TCP
est responsable du service de transporter fiablement les messages
Couche 3/ Transport avec des fonctions de détection et de correction d'erreurs. UDP
est quant à lui, un protocole peu fiable, il est
spécialement utilisé dans les applications n'exigeant pas la
fiabilité de TCP, comme dans les
applications temps réel.
C’est à ce niveau que se situent les protocoles d'application
fournissant des services à l’utilisateur. Elle interface donc les
Couche 4/ Application applications utilisateurs avec la pile de protocole TCP/IP.
C’est donc dans se couche que l’on rencontre les protocoles telle
que HTTP pour le service Web, FTP pour le transfert de fichiers,
SMTP pour la messagerie, etc…

Tableau 1.02 : Couche du modèle TCP/IP

10
1.4.3 Correspondance et comparaison entre modèle OSI et TCP
Les modèles OSI et TCP/IP sont tous les deux fondés sur le concept de piles de protocoles
indépendants représenté en couche. De plus, les fonctionnalités des couches sont globalement
les mêmes comme on l’a cité plus haut. On peut voir sur la figure suivante les rapprochements
entre ces deux modèles :

Figure 1.08 : correspondance OSI et TCP/IP

En comparant le modèle OSI au modèle TCP/IP, on remarque des similitudes et des différences
dont certains que l’on va citer ci-dessous.

1.4.3.1 Similitude entre OSI et TCP/IP:

 Les deux modèles sont tous les deux fondés sur le concept de piles de protocoles
indépendants. De plus, les fonctionnalités des couches sont globalement les mêmes.
 Les deux modèles possèdent une couche de transport. La couche réseau du modèle OSI
correspond à la couche Internet du modèle TCP/IP, de même que pour la couche
transport.

11
1.4.3.2 Différence entre OSI et TCP/IP:

 Comme on peut le voir sur la figure, le modèle TCP/IP n’est constitué que de quatre
couches. Ce sont des couches d’abstraction, autrement dit des couches qui cachent les
détails d’implémentation de la communication, alors que le modèle OSI, quant à lui, est
constitué de sept couches bien définies.
 Les trois premières couches du modèle OSI correspondent à la couche applicative du
modèle TCP/IP.
 Le modèle OSI a été développé à vocation normative, c’est-à-dire pour servir de
référence dans le déroulement de la communication entre deux hôtes, au contraire de
cela le modèle TCP/IP a une vocation descriptive, c’est-à-dire qu'il décrit la façon dont
se passe la communication entre deux hôtes

Pour conclure cette comparaison on peut dire donc que même si ces deux modèle peut paraitre
similaire par leur structures et les noms des couches, lorsque les regarde de très près on
s’aperçoit qu’elle diffère fortement, non seulement par le nombre de couches, mais aussi par
l’approche sur les quelle elles ont été construit. En effet tandis que le modèle OSI spécifie des
services avec une approche formaliste que l’on peut qualifier de théorique, le TCP/IP est un
modèle qui est basée sur une approche plus pragmatique.

1.5 Environnement Client/serveur


Aussi bien dans la théorie que dans la pratique, on distingue généralement deux types de réseaux
informatiques ou modèle de communication: les réseaux poste à poste ou peer to peer ou encore
d’égal à égal, et les réseaux organisés autour des serveurs qui est le modèle Client/serveur. C’est
cette dernière que l’on va expliquer en détail dans cette partie.

1.5.1 Présentation de l'environnement


L’architecture Client-serveur est l’un des modes de communications à travers notamment le
réseau local (LAN) et surtout l’Internet, dans lequel des machines clientes contactent un
serveur, une machine généralement très puissante en termes de capacités d'entrée-sortie, qui
leur fournit des services. Ces services sont des programmes fournissant des données telles que
des pages web, des fichiers, du courrier électronique, et bien d’autres. Précisons tout de même
que ce terme désigne aussi bien l’interaction entre les programmes et logicielle que l’on qualifie
de Client ou de Serveur que les ordinateur sur lesquelles ils opèrent.

12
Voici une illustration de cette architecture

Figure 1.09 : Modèle Client-serveur

Ici le serveur est représenté par un ordinateur spécial dont la capacité de calcul et de traitement
de données est supérieure à celles des ordinateurs personnels et muni des logiciels particuliers
qui leur permettent de fournir plusieurs services aux postes et programme clients.

Le client quant à lui n’a pas besoin d’être puissant car il ne fait que solliciter les services du
serveur, et peut être représenté par nos ordinateurs, téléphones, etc…

Ces client émet des requête vers le serveur grâce à son adresse et éventuellement son port pour
désigne un service particulier du serveur, tandis que le serveur attend qu’un client utilisant le
même protocole de communication que lui, car cela est nécessaires le sollicite pour établir la
connexion [2].

Comme on peut le deviner la principale avantage de cette modèle se situe sur le plan
d’accessibilité pour les clients des services parce que la majorité des opérations de traitement
de donnée est déjà effectué au niveau du serveur, donc plus besoin pour les clients de disposer
de matériels avec des puissances de calculs élevés. Du fait aussi de son architecture centralisé
elle a la caractéristique d’être facile à maintenir puisque les données ne sont éparpillées.

Grace à cette centralisation il suffit de mettre à jour les données du serveur pour que les clients
la reçoivent.

Du fait de la popularité de du modèle client-serveur dans les domaines des réseaux informatique
plusieurs générations d’architecture ont vu le jour.

13
1.5.2 Architecture réseaux
1.5.2.1 Architecture 1-tiers
Cette première génération est née vers les années 70. Le client est passif et n’exécute
rien, il se présente sous forme de terminal ou émulation de terminal. Ainsi, le flux de données
entre le client et le serveur ne véhicule que des informations de présentation

1.5.2.2 Architecture 2-tiers


La deuxième génération est apparue avec la vague de PC du milieu des années 80. La loi de
Grash stipule qu’à puissance égale, plusieurs petites machines coûtent moins chères qu’un
groupe de grosses machines. Ici, le serveur ne s’occupe plus que de la gestion des données. Ce
type d’architecture est aussi appelé architecture à deux niveaux, le niveau un est le client et le
niveau deux est celui du serveur.

On peut représenter cette architecture par le schéma ci-dessous.

Figure 1.10 : Architecture 2-tiers

Ici les traitements sont faites côté client qui possède une Interface Homme Machine dite
« lourde » ou « légère » selon si l’architecture est orienté client ou serveur et les données
manipulées sont sur le serveur. Par conséquent, dans cette architecture les performances de
l’application dépendent beaucoup des ressources clients.

1.5.2.3 Architecture 3-tiers


La troisième génération a vu le jour vers le début des années 90. Pour pallier à certains
problèmes que présente l’architecture à deux niveaux, l’ajout d’un autre niveau s’est avéré
nécessaire.

14
La représentation d'une architecture 3-tier est la suivante.

Figure 1.11 : Architecture 3-tires

Comme on le voit sur la figure Dans cette architecture, on a séparé la partie applicative ou
traitement de l'IHM et des données. On obtient donc les trois couches suivantes:

 Niveau présentation qui est l’interface pour l’utilisateur,


 la couche application
 Niveau données ou métier qui possède les données de l’application. En général,
ce sont les serveurs de base de données et documents XML.

Chacune de ces trois couches ont un rôle spécifique :

-La couche présentation est chargée du traitement de l'interaction avec l'utilisateur. C'est un rôle
d'affichage et d'interaction.

-La couche application effectue les traitements applicatifs. Elle effectue de plus le tampon entre
la présentation et les données. Elle effectue aussi les règles de gestion de l'application

-La partie donnée stocke les données pérennes de l'entreprise ou de l'application.

Remarquons que cette séparation en trois couche, simplifie les procédures d'installations de
logiciel, le partage d'information entre applications et enfin la réutilisation de composant.

15
1.5.2.4 Comparaisons entre architecture

De nos jours, reste l’architecture 2-tiers et 3-tiers qui sont largement utilisée dans la pratique de
conception d’un mode de communication au sein d’un réseau informatique. Pour cette raison,
ici on va se limiter aux comparaisons de ces deux types d’architectures

Fonctionnalités Architecture 2-tiers Architecture 3-tiers


Plus ou moins complexe car Plus facile car les
a couche application est applications peuvent être
Administration du système
physiquement répartie sur gérées centralement sur le
plusieurs postes clients serveur
Moins fiable car plusieurs Plus fiable car seul les
requêtes SQL sont appels de services et les
Sécurité
transmises sur le réseau, les réponses sont mis sur le
données sélectionnées réseau
doivent être acheminées vers
le client pour analyse
Facilité de développement Facile Plus ou moins difficile
Réutilisation Inexistante Les services et les objets
sont réutilisables
Lien Impossible Possible via le middleware
Serveur-serveur
Sources de données Non Oui car les applications 3-
hétérogènes tier peuvent utiliser plusieurs
bases de données dans la
même transaction

Tableau 1.03 : Comparaison 2-tiers/3-tiers

Au terme de cette comparaison il devient évident que l’Architecture 3-tiers présente de


nombreuses avantages décisifs sur l’Architecture 2-tiers, mais il apparait comme étant plus
complexe à mettre en œuvre.

16
1.6 Conclusion

Dans ce chapitre nous avons pu voir les différents types d’architecture système connus ainsi
que leurs caractéristiques. Cette architecture permet de mettre en œuvre des applications multi-
niveau. Depuis l’utilisation des Mainframes jusqu’à nos jours, elle a rencontré divers
changement du fait des évolutions de la technologie, des besoins et des demandes des
utilisateurs et des clients. Avec l’ouverture du réseau sur le monde extérieur le système doit
être bien architecturé pour avoir un maximum de sécurité et une facilité de déploiement pour
les composants. En effet, un système tournant sur une architecture client/serveur est à la
fois pratique et fiable. Et c’est sur ce type d’architecture que va s’appuyer le présent
mémoire.

17
CHAPITRE 2 : CONCEPTION PLATEFORME

2.1 Présentation plateforme


Cette ouvrage a pour but principale de de présenter la conception et la réalisation d’une
plateforme d’exploitation de données, ici données est pris dans le sens informatique du terme.
La plateforme conçu a l’ambition de brassé et de manipuler l’énorme quantité d’information
qu’il collecte du web en plus de celles que les utilisateurs décident de le confier. Le projet
comporte alors une mise en place d’un moteur de recherche qui permettra aux utilisateurs dans
le réseau locale de la plateforme d’effectuer une recherche sur le web (internet). La plateforme
est aussi constituée d’un service de messagerie ou de courriels électronique avec le quelle les
utilisateurs peuvent envoyer et recevoir des mails. Voici donc comment se présente cette
plateforme.

Figure 2.01 : Structure Plateforme

Dans cette image on aperçoit le serveur physique de la plateforme qui est faite un ordinateur
DELL INSPIRON 6400 tournant sous Debian 7 wheezy et sur lequel s’exécute à la fois un
serveur mail, un serveur web, un serveur DNS, un serveur DHCP et puis le moteur de recherche.
On a choisi d’utiliser le système d’exploitation Debian une distribution de Linux pour
constituer notre serveur parce qu’elle possède les caractéristiques idéales pour implémenter un
serveur Internet stable [18], performant, sécurisé et flexible car e plus d’être un logiciel libre
que l’on peut obtenir gratuitement, il est livré avec toutes les fonctionnalités, les outils et les
utilitaires habituellement livrés avec les variantes commerciales des autres systèmes
d’exploitation.

18
2.2 Squelette
2.2.1 Serveur DHCP
2.2.1.1 Protocole DHCP
Le protocole DHCP ou Dynamic Host Configuration Protocol est une norme IP permettant de
simplifier la gestion de la configuration IP hôte dans un réseau ou sous réseau. Ce protocole
permet d’utiliser des serveurs pour gérer l’allocation dynamique des adresses IP et des autres
données de configuration de la machine, qui sont utile pour qu’elle accède au réseau. Pour les
réseaux basés sur le protocole TCP/IP, le protocole DHCP facilite beaucoup et réduit de façon
conséquent le travail administratif requis pour la configuration des ordinateurs. Pour bien
comprendre en quoi le protocole DHCP simplifie la configuration du protocole d’adressage
réseau sur des ordinateurs clients, il est nécessaire de savoir les difficultés que l’on rencontre
lorsqu’on essaye d’attribuer nous même les adresses IP des machines connecté à notre réseau.

En effet, lorsqu’on essaye de configurer les données de configuration IP pour chaque hôte en
entrant manuellement les informations, telles que l’adresse IP, le masque de sous-réseau ou la
passerelle par défaut, Il subsiste la possibilité que l’on effectue des fautes et des erreurs
typographiques. Des erreurs qui peuvent et vont surement créer des problèmes de
communication ou des incidents liés aux adresses IP dupliquées au sein du réseau. De plus, en
utilisant cette méthode d’attribution statique des adresses rajoutent des taches lourdes
supplémentaires pour l’administrateur réseau, surtout si dans ce dit réseaux il comporte de
nombreux ordinateurs et que ces derniers sont souvent déplacés d’un sous-réseau à l’autre, car
lorsqu’on doit modifier une valeur IP pour plusieurs clients, il faudra donc mettre à jour la
configuration IP de chaque client sur place. C’est cette manière de faire qui a été utilisé avant
l’apparition de du protocole DHCP

Depuis l’avènement de la technique d’attribution automatique d’adresse IP qu’est le DHCP les


travails des administrateurs réseau et des concepteurs de réseau s’en est trouvé énormément
allégé. Ainsi, lorsqu’on configure le serveur DHCP de manière à ce qu’il prenne en charge les
configurations IP des clients DHCP, il fournit automatiquement les informations de
configuration, puis s’assure également que les clients du réseau utilisent des informations de
configuration exactes. En outre, si vous devez modifier les données de configuration IP de
plusieurs clients, il suffit d’effectuer une seule fois des modifications au niveau du serveur pour
que le protocole DHCP mette automatiquement à jour les informations de configuration des
clients.

19
Sur la figure ci-dessous on peut voir le processus complet qui est effectué entre le serveur et le
client en vue de la réalisation du protocole DHCP

Figure 2.02 : Protocole DHCP

Comme nous le montre le schéma suivant, le protocole DHCP utilise un processus en quatre
étapes pour louer des informations d’adressage IP aux clients. Ces quatre étapes sont nommées
en fonction des types et de la nature des paquets transmis [3].

a. DHCP DISCOVER :

La découverte DHCP Consiste pour le client à diffuser (Broadcast) des paquets pour demander
les informations d’adresse IP à un serveur c’est le commencement du processus de création du
bail.

b. DHCP OFFER :

Apres avoir reçu les paquets de découverte décrit ci-dessus le serveur diffuse ce paquet aux
clients, qui est un message utilisé par les serveurs DHCP pour proposer le bail d’une adresse IP
à un client. Ici en attendant la réponse du client réserve l’adresse IP proposée, pour ne pas la
proposer à un autre client DHCP avant l’acceptation par le client en ayant fait la demande.

c. DHCP REQUEST

Dans cette étape le client répond au premier paquet DHCPOFFER qu’il reçoit en diffusant un
paquet DHCPREQUEST pour accepter l’offre. Ce paquet contient l’identification du serveur
dont il a accepté l’offre, car dans un réseau il peut y avoir plusieurs serveurs proposant le même

20
service. Tous les autres serveurs DHCP retirent alors leur proposition d’adressage et conservent
leurs adresses IP pour d’autres demandes de bail IP ultérieure.

d. DHCP ACK

Le DHCPACK est un paquet contenant le message envoyé par le serveur DHCP à un client
pour accuser réception et répondre à sa requête de configuration de bail. Ce message contient
un bail valide pour l’adresse IP, ainsi que d’autres données de configuration IP. C’est à ce
niveau que le client s’initialise avec les données de configuration fournies par le serveur et qu’il
vient de recevoir.

Notons que serveur DHCP peut envoyer un accusé de réception négatif c’est adire un paquet
DHCPNAK si l’adresse IP offerte n’est plus valide ou si elle est déjà utilisée par un autre
ordinateur. Dans ce cas de figure, le client doit recommencer le processus de création de bail
depuis le début.

2.2.1.2 Installation Serveur DHCP


Au vue de notre choix concernant le système d’exploitation qui est le Debian 7 Wheezy on opte
pour l’installation du paquet dhcp3-server garce à l’outil apt-get. L’outil « apt-get » est le
programme de gestion de paquets en mode invite de commande fourni avec le paquet apt de
Debian. L’installation se fait le plus simplement en lançant l’invite de commande en tant que
super utilisateur ou « root » et en entrant les commandes suivantes :

 Commande pour vérifier l’existence du paquet :

#apt-cache search isc-dhcp

Voici le résultat de cette commande

21
Figure 2.03 : recherche paquet dhcp Paquet recherché

 Commande pour installation du paquet

#apt-get install isc-dhcp-server

2.2.1.3 Configuration Serveur DHCP

Le fichier de configuration du serveur DHCP est le fichier dhcpd.conf situé dans le répertoire
/etc/dhcp3/.

Pour pouvoir configurer notre serveur donc, il faudra modifier ce fichier, et ceci à l’aide de
l’éditeur de texte en ligne commande « nano » qui est préinstallé avec le système Debian 7 et
qui est un éditeur basé sur la bibliothèque « ncurses » et publié sous licence GNU GPL.

Voici un exemple d’extrait commenté de ce fichier de configuration

# Indique à DHCP de ne pas faire la mise à jour dans le DNS


ddns-update-style none;

# Le nom de domaine du réseau


option domain-name "semperfi.tp";

# Le des serveurs de noms


option domain-name-servers debian.semperfi.tp;

22
# Durée par défaut du bail
default-lease-time 600;

# Durée maximum du bail


max-lease-time 7200;

# Pour les logs, on utilise la facilité local7


log-facility local7;

# On indique le masque de sous reseaux


subnet 192.168.123.0 netmask 255.255.255.0 {

# La plage d'attributions des adresses IP


range 192.168.123.1 192.168.123.253;

# la liste des passerelles


option routers 192;

# L'adresse broadcast
option broadcast-address 192.168.123.255;
}

Pour certains ordinateurs, on peut leur attribuer tout le temps la même adresse IP en les
identifiant avec leurs adresses MAC. Il suffit de rajouter pour cela la section suivante toujours
dans le fichier de configuration:

host mon_ordi {
hardware ethernet 0:0:c0:5d:bd:95;
fixed-address 192.168.123.200;
}

A chaque fois, après avoir modifié le fichier de configuration, il ne faut pas oublier de ne pas
de relancer le serveur DHCP afin qu'il prenne en compte les modifications effectué en se servant
de la commande :

# /etc/init.d/dhcp3-server restart

23
ou

# /etc/init.d/isc-dhcp-server restart

Précisons qu’à chaque fois que le serveur DHCP attribue une adresse IP, il enregistre un
message dans /var/log/syslog, de même ce serveur stocke les adresses IP attribués dans le fichier
/var/lib/dhcp/dhcpd.leases. Ceci lui permet notamment d'attribuer à un ordinateur la même
adresse IP malgré une déconnexion de la part du client même si pour le serveur ceci n'est pas
obligatoire[14][16].

Le service DHCP est donc disponible sur notre réseau pour le vérifier tapons la commande
ipconfig sous Windows et voici le résultat:

Figure 2.04: Test serveur DHCP

On s’aperçoit donc que la machine s’est vue attribué une adresse dans la plage que nous avons
spécifiée.

2.2.2 Serveur DNS


2.2.2.1 Service de résolution de nom
Le Domain Name System ou DNS, système de noms de domaine est un service permettant de
traduire un logique en informations de plusieurs types qui y sont associées, notamment en
adresses IP de la machine portant ce nom. Etant donné qu’il est difficile de mémoriser les
adresses IP des différents ordinateurs au sein d’un réseau, il est fort pratique d’associer à chaque
adresse IP un nom logique. A la création d'Internet alors, chaque ordinateur du réseau contenait
un fichier /etc/hosts qui listait le nom de toutes les machines du réseau et leurs adresses IP. Cde
fichier contenait la correspondance et à chaque fois que l'on rajoutait une machine sur Internet,
il fallait donc mettre à jour ce fichier pour faire correspondre l’adresse IP et le nom que porte
la machines. Mais puisque le nombre de machines connecté à Internet s'étant rapidement accru,
cette solution de fichier /etc/hosts communs est devenu ingérable car trop lourd pour
l’administrateur système, et il a fallu inventer un procédé capable de pallier ce problème.

24
La solution qui s'est imposée fut la création d'une base de données distribuée, et ainsi est né le
principe de serveur DNS, un service qui permet d'effectuer la résolution de noms, c'est à dire
d'associer une adresse IP à un FQDN (Full Qualified Domain Name) et inversement.

Les domaines sont organisés hiérarchiquement entre eux comme ceci

Figure 2.05 : Hiérarchie Serveur DNS

Toute l’ingéniosité de ce système se situe dans le fait d’avoir distribuer la tache de résolution.
En effet, Pour gérer les très nombreux noms de domaines qui se trouvent sur internet, les
concepteurs ont découpé le problème en utilisant plusieurs niveaux de serveurs.

Comme on le peut voir sur la figure toute l’architecture de cette technique dépend du sommet
cette hiérarchie appelé racine, qui est représenté par le point tout en haut du schéma. Ces
serveurs racines sont au nombre de 13, nommés de « a.root-servers.net » à « m.root-
servers.net ». Grace à l’emploi de fonction de routage de haut niveau appelé l’anycast, ces 13
serveur ont tout le même adresse IP sur internet et ils contiennent tous l'adresse des serveurs
DNS de chaque domaine de premier niveau comme les « .mg » ou les « .com » et ainsi de suite.

Voici sur le schéma suivant donc, un exemple montrant le principe et les étapes suivies pour
achever la tache de résolution des noms de domaine en adresse IP

25
Figure 2.06 : Etape de résolution de nom

Ainsi, ici quand le client effectue la requête à l’adresse http://mail.oktey.fr c’est au serveur DNS
local qui s’occupe de la résolution du nom de domaine/adresse IP ou inversement en
questionnant tour à tour le serveur racine, le serveur en charge de la zone « .fr. », le serveur qui
a l’autorité sur la zone « oktey.fr. », puis de ce dernier elle obtient l’adresse IP du machine
« mail » dans le domaine « oktey.fr » que le client voulait designer par l’url précédemment.

On peut se questionner sur le nombre de requête effectué pour résoudre le nom de domaine en
adresse IP, s'il fallait faire toutes ces opérations à chaque fois qu'un utilisateur demande à
résoudre un nom de domaine, cela engendrera beaucoup de trafic sur le réseau et peuvent causer
sa saturation. Pour éviter cela on accompagne souvent les serveurs de système de cache qui
vont garder temporairement en mémoire les dernières résolutions de noms de domaine pour ne
pas recommencer le cycle de la résolution à chaque fois que le client effectue une requête [5].

2.2.2.2 Installation serveur de nom


Dans le cadre de la réalisation de la plateforme on a choisi d’utiliser Bind9 comme serveur DNS
du fait de sa stabilité et de sa nature à offrir beaucoup de possibilité dans la configuration.
Entrons donc dans le mode console en tant que super utilisateur puis :

26
 Recherchons l’existence du paquets dans nos dépôts enregistré en utilisant
l’outils apt-cache

#apt-cache search bind

Figure 2.07 : recherche du paquet bind9

 Apres avoir localisé le paquet on l’installe directement avec la commande :

# apt-get install bind9

2.2.2.3 Configuration du serveur de résolution de nom


Avant d’entamer la configuration proprement dite de Bind on va d’abord donner une adresse
IP statique à l’interface eth0 de la machine serveur en modifiant le fichier interfaces situé dans
le repertoire /etc/network.

# nano /etc/network/interfaces

Puis on ajoute dans le fichier interfaces les lignes suivantes :

iface eth0 inet static

address 192.168.17.1

netmask 255.255.255.0

broadcast 192.168.17.255

Modifions ensuite un ensemble de fichier qui vas permettre au serveur de résoudre des noms
en adresse IP que l’on appelé résolution directe ou des adresse IP en noms désigné par le terme
résolution inverse [17][19].

27
Dans le fichier /etc/hosts, pour déclarer notre nom de domaine ajoutons :

127.0.0.1 localhost

192.168.17.1 debian.semperfi.tp

::1 localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

-Dans le Fichier /etc/bind/named.conf ajoutons ces quelques lignes qui serviront à déclarer les
domaines ou zones auxquelles notre serveur aura autorités :

zone "semperfi.tp" {

type master;

file "/etc/bind/db.semperfi.tp";

};

zone "17.168.192.in-addr.arpa" {

type master;

file "/etc/bind/db.semperfi.tp.inv";

};

Ici le « type master » signifie que c’est le serveur maitre ou principale de la zone en opposition
a slave ou secondaire.

-Apres cela, créons donc le fichier /etc/bind/db.semperfi.tp ou fichier de zone directe que l’on
a déclaré dans le fichier named.conf qui va contenir les définitions du nom de domaine et de
ses sous-domaines c’est-à-dire les associations entre les noms de domaines et les adresses IP :

$TTL 604800

@ IN SOA localhost. root.localhost. (

7 ; Serial

28
604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800 ) ; Negative Cache TTL

@ IN NS debian.semperfi.tp.

debian IN A 192.168.17.1

@ IN A 192.168.17.1

mail IN A 192.168.17.1

semperfi.tp IN MX 10 semperfi.tp.

ramasy IN A 192.168.17.1

Dans ce fichier c’est la syntaxe « debian IN A 192.168.17.1 » qui permet de faire correspondre
le domaine debian.semperfi.tp et notre adresse IPv4 192.168.17.1, grâce à cela tous les
ordinateurs et terminal qui appartient à notre réseau qui voudront accéder à ce domaine sauront
qu’il faut en fait, contacter l’adresse 192.168.17.1.

-Pour finir créons aussi le fichier /etc/bind/db.semperfi.tp.inv pour la correspondance inverse

$TTL 604800

@ IN SOA localhost. root.localhost. (

1 ; Serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800 ) ; Negative Cache TTL

@ IN NS debian.

1 IN PTR debian.semperfi.tp.

29
Maintenant notre serveur DNS est totalement opérationnel et peut effectuer des résolutions de
nom pour les machines clients. Pour vérifier que tout marche et au niveau client, il faut ouvrir
le terminal et entrer la commande « nslookup » (pour Windows et Linux), et voici le résultat :

Figure 2.08 : Test du Serveur DHCP

2.2.3 Serveur web


2.2.3.1 Principe
Un serveur Web est un serveur informatique utilisé pour publier des sites ou page web sur
Internet ou un intranet. Une page web est un document composé de texte et de différents médias
tel que des images, du son ou des vidéos. Les différents pages de la Toile sont reliées entre elles
par des liens hypertextes ou plus communément des « liens », si bien que toutes ces pages
forment une gigantesque toile que l’on désigne par « World Wide Web » qui signifie
littéralement « Toile d'envergure mondiale ».

Voici présenté par la figure suivante le principe de fonction que prend un serveur web

Figure 2.09 : Architecture web

Comme on voit ci-dessus, le client effectue une requête HTTP vers notre serveur à l’aide d’un
navigateur web et notre serveur répond à cette sollicitation en envoyant la page web demandée.
De ce fait, on appelle aussi ce type de serveur, serveur HTTP. On voit aussi que le rôle

30
principale du serveur est donc de pouvoir permettre l’'hébergement des sites web qui seront
accessibles par l’utilisateur avec un navigateur [4].

2.2.3.2 Le serveur web Apache


Toujours dans la vision de la réalisation de notre projet d’implémentation de notre plateforme
on a installé alors le serveur web Apache. Apache est un serveur HTTP libre, c’est un des
serveurs HTTP les plus utilisé sur Internet avec plus de 60% des sites d’Internet

-L’Installation d’Apache se fait en ligne de commande avec la syntaxe habituelle de apt-get:

# apt-get install apache2

-Ici, la configuration se fait par modification et création de plusieurs fichiers :

La configuration globale d’Apache s’effectue par modification du fichier de configuration


/etc/apache2/apache2.conf

Apache pouvant gérer plusieurs serveurs, on trouve des compléments pour la configuration de
chaque serveur dans le dossier /etc/apache2/site-enabled. Précisons que ces fichiers contenus
dans le répertoire /etc/apache2/site-enabled doivent être inclus dans le fichier de configuration
apache2.conf par le mot clé « Include ».

Rappelons que les fichiers que l’on met dans /etc/apache2/site-enabled correspondent aux
serveurs activés et sont en fait un lien symbolique vers un fichier dans /etc/apache2/site-
available, qui lui contient la liste de tous les serveurs disponibles.[11][10][13]

Notre serveur web nous sera d’une grande utilité dans réalisation de la plateforme parceque
c’est grâce à elle qu’on va pouvoir mettre en place des dispositifs qui vont permettre d’interagir
avec les utilisateurs.

2.2.4 Serveur de base de données


2.2.4.1 Notion de Base de données
Dans le fondement même de la conception de la plateforme que l’on veut réaliser, il y a le terme
exploitation de donnée, c’est-à-dire qu’il vas y avoir beaucoup de donnée qui seront manipulés
a des fin d’information ou de statistique. De plus, il se peut que les informations que nous aurons
collecté soit de différente nature et de taille variable. Pour ces grandes quantités d’information
que nous nous apprêtons à exploiter donc, il nous faut penser à un système efficace de les
stocker et de le gérer qui est l’emploi des bases de données. En effet, une base de données

31
informatique est un conteneur servant à stocker des données, c’est-à-dire des renseignements
bruts tels que des chiffres, des dates ou des textes.

Ainsi l'utilisation d'une base de données permet de mettre ou de placer les fichiers sur un serveur
centrale, ce qui facilite le partage des informations et d’autant plus, permettre le contrôle
automatique de la cohérence et de la redondance des informations. En outre, cette solution nous
permettra de planifier la limitation de l'accès aux informations et aussi de produire plus aisément
des informations synthétiques à partir des renseignements bruts contenus dans la base de
données. La base de données aura, de plus, un effet fédérateur sur les informations. Ce qui veut
dire que dans le réseau que nous aurons créés une personne unique qui est l'administrateur de
bases de données est chargée d'organiser le contenu de la base de données et de son
maintenance.

Dans cette vision donc on s’aperçoit que notre base de donnée vas être la pièce maitresse de
notre plateforme, puisque les données ou les informations que l’on va collecter et qu’elles vont
contenir seront sollicité par les utilisateurs.

Voici donc la représentation de l’emploi que l’on va faire de notre base de donnée pour notre
plateforme

Figure 2.10: Place de la base de données

On voit alors comme la montre la figure que c’est la machines serveur qui reçoit les requêtes
de la part des clients et qui accède à la base de données puis retourne le résultat aux clients.

32
2.2.4.2 Le Système de Gestion de Base de Données MySQL
En informatique un système de gestion de base de données ou SGBD en abrégé est un ensemble
de logiciel système destiné à stocker et à partager des informations dans une base de données
et permettant sa manipulation, en garantissant la qualité, la pérennité et la confidentialité des
informations, tout en cachant la complexité des opérations à l’utilisateur.

Un SGBD de base permet donc de faire les quatre opérations les plus courantes qui sont de
créer, de lire, de mettre à jour, de supprimer une base de données.

Dans le cadre de notre réalisation on a choisi le SGBD MySQL pour stocker nos données.
Installons-la alors avec la commande apt-get install

# apt-get install mysql

MySQL est en fait un système de gestion de base de données relationnels ou SGBDR c’est-à-
dire qu’elle est implémenté de la fonctionnalité de représentions des tables, avec toute les
intersections et jointure de celle-ci. Ce choix a été évident au vu de la maturité et des nombreux
avantages que présente ce programme dont certains exemples sont cités ci-dessous

 Comme son l’indique ce SGBD utilise le langage SQL ou Structured Query Language
qui est un langage de requête très utilisés donc par conséquent, il est très bien documenté
et on peut très bien profiter des support technique complet offert, avec des tutoriels en
ligne, des forums, mailing list comme lists.mysql.com

 Aussi étonnant que ça puisse paraitre MySQL est un logiciels Gratuit et distribué sous
la licence GPL ou GNU General Public License qui nous autorise a étudier le
fonctionnement d'un programme et de l'adapter à ses besoins en passant par la
modification des codes sources.

 MySQL est très facile d'utilisation car sa prise en main est intuitive et ergonomique avec
une vitesse de traitement époustouflante.

 La portabilité des projets effectuer est aussi le point fort de ce SGBD, oui en effet avec
MySQL on peut aisément importer et exporter facilement vers des fichiers Excel et
autres encore les bases de données.

33
 MySQL est aussi comme on peut le dire echellonnable, c’est-à-dire qu’il est pratique
aussi bien pour des petites bases, que pour celles contenant des milliards
d'enregistrements avec plusieurs téraoctets de données et des centaines de milliers de
tables.

Une autre particularité de ce SGBD c’est qu’il est basé sur un modèle Client - Serveur. C'est à
dire que la base de données se trouve sur un serveur, et pour interagir avec cette base de
données, il faut utiliser un logiciel "client" qui va interroger le serveur, et transmettre la réponse
que le serveur lui aura donnée [3].

Voici un exemple qui montre comment on se connecte à MySQL ou plus exactement au


serveur:

Figure 2.11 : Connexion a MySQL

Apres s’être connecter on peut alors effectuer les modifications prévue sur chaque base de
données et tables qu’elles contiennent si c’était le cas dans cette interface.

2.2.4.3 Administration de base de données avec phpMyAdmin


Il se peut que notre obligation à créer et à effectuer nos manipulations à propos de nos bases de
données en ligne de commande soit handicapante. En outre, il nous faut envisager une solution
plus facile pour l’administration de la base de données, l’emploi de phpMyAdmin. Le logiciel
phpMyAdmin est une application Web de gestion spécialement conçu pour le MySQL. Elle
permet, entre autre l’administration de nos base de données sans passer dans la console MySQL
ce qui nous permet de gagner un temps précieux dans l’accomplissement de nos taches. Il faut

34
bien préciser qu’avant de pouvoir utiliser cette outils sur notre serveur il faut déjà avoir installé
un serveur web, comme c’est notre cas en installant Apache server dans la partie précèdent.

Installons maintenant phpMyAdmin :

#apt-get install phpmyadmin

Pendant l’installation on est demandé de fournir un nom d’utilisateur un mot de passe de


MySQL qui sera d’autant plus requit lors de chaque session d’administration de base de
données.

Apres l’installation on entre dans un navigateur l’url « http://localhost/phpmyadmin/ » pour


voir une page s'afficher, invitant a nous authentifie grace au couple de nom d’utilisateur et mot
de passe.

Figure 2.12 : Connexion à phpmyadmin

Apres s’être authentifie auprès du serveur de base de données on arrive sur l’interface de
phpMyAdmin ou l’on effectuera les différentes opérations que l’on devra faire sur nos base de
données.

35
Figure 2.13 : Interface phpMySQL

Ici on obtient cet écran où toutes les bases sont paramétrables et administrable.

2.3 Conclusion

Tout au long de chapitre de ce chapitre nous avons expliqué tout l’objectif de notre plateforme
et avons donné sons structure qui représente notre serveur physique par rapport à internet et aux
utilisateurs. La présentation des programmes des serveurs et d’administration qui vont
constituer le squelette de notre plateforme a aussi dominé cette partie. Au terme de ce chapitre
on a fini la mise en place de la base même de notre plateforme et dans les chapitres suivant on
va implémentée ce qui constitueront notre projet.

36
CHAPITRE 3 : MISE EN PLACE MOTEUR DE RECHERCHE
3.1 Présentation modèle conceptuelle
Dans cette partie on va parler des détails de la mise en place de notre moteur de recherche,
pour commencer cela présentons tout d’abord le modèle conceptuelle de donnée utilisées pour
notre moteur de recherche. Ce modèle permet de fournir une description graphique pour
représenter le système d’information construit autour de notre moteur de recherche sous la
forme de diagrammes contenant des entités et des associations. Ce modèle représenté ci-contre
a été utilisé dans les phases conceptions de la plateforme et sert à informer de l’état de
réalisation.

Figure 3.01: Modèle conceptuelle


Dans ce modèle on peut tout voir les entités créer pour notre modèle et toutes leurs relations
3.2 Principe
Aujourd’hui quand on navigue sur internet on ne peut pas se séparer d’un moteur de recherche
tellement il est vaste. En effet, un moteur de recherche est une application web permettant de
retrouver des ressources telle pages web associées à des mots quelconques. Google est
l’exemple le plus d’un site web qui offre le service de moteur de recherche du web.

37
Figure 3.02 : Principe Moteur de recherche

Le Moteur de recherche est constitué de plusieurs robots d’indexation qui scrute incessamment
le web afin de découvrir de nouveau site web en suivant récursivement les liens contenue dans
les pages. Chaque page ainsi découvert est aussitôt indexé dans une base de données puis. Pour
cette mise en place du moteur de recherche alors, cette base de données est mise à disposition
des utilisateurs lors d’une recherche à partir d’un terme quelconque.

On peut distinguer 3 étapes dans le fonctionnement du moteur de recherche :

 Le crawl ou l’exploration du web en quête de nouvelle page web


 Le stockage et l’indexation des données collectées sur le web dans une base de données.
 La recherche dans la base de données effectue une requête.

3.3 Scanne du web


3.3.1 Présentation Scrapy
L’une des tâche qui présente beaucoup de difficulté dans la réalisation de notre projet est de
celle du scanne du web. Cette opération consiste à construire un robot d’indexation ou crawler
qui scrute le web pour extraire des données. Effectuer cela s’avère être une expérience
douloureuse et fastidieuse à faire à cause de l’ampleur de la tache car il faut tenir compte des
redirections dans les pages, gérer les erreurs, gérer l’encoding, etc…

Heureusement, il existe des outils tels que Scrapy qui allège énormément la tache dans la
réalisation de tel projet. Scrapy est un Framework développé en python et open-source

38
permettant la création de robots d'indexation. C’est un outil très pratique lorsque l’on veut faire
de l’extraction de données. L’avantage d’utiliser un Framework c’est qu’il englobe toutes les
taches cité précédemment dans un socle et que le développeur n’a plus besoin de gérer ces
problèmes, c’est ce que propose Scrapy en utilisant le langage XPath pour localiser une portion
des documents html.

Le rôle principale de Scrapy donc, c’est de « crawler » ou d’indexer une ou plusieurs pages et
de s’occuper des toutes les problématiques citées ci-dessus

3.3.2 Installation et configuration Scrapy


Sous notre Debian wheezy ajoutons le « repository » ou depot « deb
http://archive.scrapy.org/ubuntu oneiric main » proposé par Scrapy dans notre fichier
/etc/apt/sources.list, puis exécutons les commandes suivantes :

#apt-get update

#apt-get install scrapy-0.15 python-mysqldb

Ici nous avons installé aussi le module complémentaire pour l’interaction avec les bases de
données avec le langage python pour assurer le stockage des données collecté par scrapy [15].

Pour commencer à construire notre robot d’indexation avec scrapy, il faut créer un
environnement de travail ou « workspace ». Le workspace est un dossier dans laquelle on va
ensuite travailler, pour se faire en exécute la commande suivante en tant qu’administrateur:

#scrapy startproject mycrawler

Ci-dessus on a créé le workspace mycrawler, quand on entre dans le dossier nommé du même
nom on s’aperçoit de l’arborescence de dossier et de fichier comme suit :
mycrawler/
scrapy.cfg
mycrawler/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py

39
Ici il a plusieurs fichier de configuration de notre crawler et leurs modifications doivent être
faite en suivant la documentation officielle de scrapy

3.3.3 Création des Spiders


Dans le dossier spiders, on crée un fichier python pour contenir la définition de notre« spider »
ou notre a proprement dore a notre robot d’indexation, par exemple pour la réalisation de notre
plateforme on a créé le fichier my_bot.py contenant :

 Le nom de notre crawler à spécifier lors de l'exécution


 Les domaines sur lesquels le crawler aura le droit d'aller
 Les listes d’url à indexer on peut mettre une liste d'url, séparées par des virgules

Plus important encore, dans ce fichier on peut aussi spécifier la règle d’indexation d’une page.
Ces règles peuvent changer en fonction de la nature d’information que l’on souhaite obtenir
pour notre cas on s’est atteler à construire une règle basé sur le schéma d’url. En effet, pour la
réalisation de notre moteur de recherche on autorise l’indexation des pages et les chemins
d’accès de la forme « /article » et que l'on va parser avec la methode parse_item, et que l'on va
aussi suivre pour extraire encore plus de liens. De même on autorise notre crawler à parcourir
et à extraire des liens de tous les .html.

Apres avoir défini le fichier my_bot.py on définit ensuite le moyen par lequel on va stocker les
informations indexé par notre robot d’indexation. La bibliothèque scrapy propose une large
gamme de choix pour exporter le résultat d’indexation. On peut notamment exporter le résultat
en fichier CSV ou fichier JSON, mais pour la réalisation de notre moteur de recherche il est
préférable que l’on stock ces information dans une base de données.

Pour paramétrer la constitution de notre base de données alors, on doit compléter le fichier
pipelines.py en indiquant l’utilisation de la base de données.

3.4 Indexation de la base de données


3.4.1 Définition
Pour bien comprendre le principe d’indexation imaginer les plusieurs millions de fichier qui
peuvent être contenu dans le disque dur de votre ordinateur. A cause de ces nombres
extravaguant, il nous serait difficile et on va mettre un temps fou pour retrouver un fichier
spécifique parmi les autres, même si on utilise des programmes ou des logiciels de recherche.
L’indexation des données est la solution à ce problème. L’indexation consiste en effet à la

40
lecture des données, puis de se constituer une bibliothèque avec toutes les donnée indexes pour
qu’enfin on peut les retrouvé plus facilement

3.4.2 SphinxSearch
Sphinx est très connu dans le domaine de l’informatique car c’est l’un des outils le plus puissant
pour pouvoir indexer les données. En plus d’être libre sphinx permet aussi d’indexer plusieurs
type de fichier tels que les fichiers XML et les bases de données et est compatible avec de
nombreux langages ce qui vas nous permettre de l’exploiter. Dans notre conception de la
plateforme on va utiliser sphinx, pour indexer et rechercher dans la base de données formé par
les informations collecté par le robot d’indexation que l’on a créé à l’aide de Scrapy expliqué
dans les parties précédents.

3.4.3 Installation et Configuration de SphinxSearch


Commençons par télécharger le fichier contenant sphinx sur son site web http://sphinxsearch.
Lorsque l’on a terminé le téléchargement on se trouve en possession de l'archive
sphinxsearch_2.2.7-release.tar.gz pour notre cas.

Dans un premier temps, il faut décompressez l'archive en ouvrant le terminale en tant


qu’administrateur et en utilisant la commande :

#tar xzvf sphinxsearch_2.2.7-release.tar.gz

Pour plus de clarté dans le nom renommons le dossier ainsi décompressé en sphinx tout court.
Ce dossier que l’on téléchargé contient la bibliothèque qui une fois compilé vas installer sphinx
sur notre serveur.

Pour compiler la bibliothèque il faut entrer dans le dossier en ligne de commande grâce à la
commande cd et puis effectuer les opérations suivantes.

#./configure --prefix=/usr/local/sphinx

#make

#sudo make install

Ici, ces commandes nous ont permis d’indique au programme l'emplacement désiré où installer
Sphinx, de compiler la bibliothèque et enfin d’installé le programme ainsi compilé.

Apres avoir effectuer l’installation de sphinx, reste à configurer de façon à pouvoir indexer les
données. Toutes les configurations nécessaires pour pouvoir utiliser sphinx se fait à l’aide du

41
fichier sphinx.conf situé dans le répertoire /usr/local/sphinx/etc/. C’est dans ce fichier donc
qu’on va indiquer les informations relatives aux données que l’on veut indexer. Voici ci-dessous
la configuration que l’on doit placer dans ce fichier avant toute chose.

searchd

listen = 9312

log = /var/log/sphinxsearch/searchd.log

query_log = /var/log/sphinxsearch/query.log

pid_file = /var/log/sphinxsearch/searchd.pid

Ces données informent le moteur de recherche qu'il devra écouter le port 3312 de l'ordinateur
c’est-à-dire c'est à ce port qu'on se connectera pour exécuter une requête, il informe aussi de
l’emplacement des fichiers ou l’on stockera son historique dans les fichiers searchd.log et
query.log, et enfin que le fichier associé au processus que Sphinx créera sera searchd.pid.

Pour parachever notre configuration on doit créer ce qu’on appelle un index. Un index est un
bloc d'informations écrit dans le fichier de configuration qui va indiquer à Sphinx sur quoi il
devra effectuer la recherche. Un index comporte 2 informations :

 Le nom de la source qui lui est associée. Chaque index correspond à une source. C'est
dans cette source que nous allons déterminer les informations nécessaires au moteur
pour pouvoir effectuer la recherche ;
 L'emplacement où Sphinx créera sa bibliothèque.

Une fois l’index créé on peut maintenant passer à l’étape d’indexation de la base de données en
ouvrant une terminale et exécutant la commande

#sudo indexer nom_base -–rotate

Apres avoir effectué cette étape notre moteur de recherche est d’ores et déjà opérationnelle et
comme on le verra dans la partie suivante on peut effectuer un recherche mais en mode console.

42
3.4.4 Utilisation de sphinx
Pour pouvoir effectuer une recherche grâce à sphinxsearch à partir des donnée indexés il faut
passer en mode console ou interface de lige de commande. On suit maintenant l’exemple
suivant pour rechercher un terme

Search –i nom_source terme_recherché

On voit ici que l’on indique en premier la source dans laquelle on veut effectuer une recherche
en utilisant l’option –i, puis on indique le que l’on veut rechercher

A cette requête Sphinxsearch retourne une réponse de la forme suivante

Figure 3.03 : Recherche avec sphinxsearch

Dans ce résultat on peut apercevoir l'index sur lequel on a cherché, la requête qu'on a entrée, et
le nombre de résultats retourné et du total. Ceci démontre très bien que le nôtre moteur de
recherche marche à la perfection même s’il est hors de question que l’on oblige nos utilisateurs
d’effectuer de recherche en ligne de commande. En effet, dans les parties suivantes on va
développer une interface sur lequel l’utilisateur pourra effectuer simplement mais efficacement
des recherches.

3.5 Portail pour moteur de recherche


3.5.1 Définition
Un portail est un site web qui offre une porte d'entrée commune à un large éventail de ressources
et de services accessibles sur l'Internet et centrés sur un domaine d'intérêt ou une communauté

43
particulière. Ici dans le cadre de notre projet on va en créer un pour notre plateforme, celle-ci
vas permettre d’accéder aux services fournie par ce dernier.

3.5.2 Croquis du site


Avant de se lancer dans la conception du site web il faut tout d’abord avoir une idée générale
de ce que nous allons faire pour avoir un objectif à atteindre pendant toute la durée de notre
réalisation, d’où la nécessité d’avoir en premier lieu le croquis du site web. Le croquis n’a pas
à être très sophistiqué, un dessin fait à la main peut suffire mais pour notre cas pour plus de
netteté on a utilisé le logiciel paint.exe.

Voici ci-dessous l’aperçu dudit croquis

Figure 3.04 : Croquis portail

Comme on peut l’apercevoir, comme portail pour notre moteur de recherche on s’est penché
sur une interface simple et intuitif.

Tout en haut on peut apercevoir le menu pour la navigation. Ce menu vas permettre aux
utilisateurs de naviguer entre les diffèrent pages html qui constitueront le site de notre
plateforme d’exploitation de donnée.

Au milieu se trouve un bar de recherche qui sera la pièce maitresse de cette page car c’est dans
celle-ci que les utilisateurs entrerons les termes à rechercher dans la base donnée que la
plateforme va mettre à disposition, puis le bouton navigation qui servira à passer d’explication
en explication concernant le projet.

44
Enfin, on a mis sur place en bas une espace d’affichage qui affichera les résultats des recherches
et des présentations du projet.

3.5.3 Réalisation
3.5.3.1 Mise en œuvre coté HTML
HTML est un langage de description de document utilisé sur Internet pour faire des pages Web.
Son sigle signifie « HyperText Markup Language » en anglais, littéralement « langage de
marquage hypertexte ». Le balisage HTML est incorporé dans le texte du document et est
interprété par un navigateur Web. Elle permette ainsi de mettre en forme le contenu des pages
web. Ce langage va donc nous servir d’écrire et d’inclure dans les pages web ce que nous
souhaitons afficher aux visiteurs du site.

Un document HTML est avant tout un document texte c'est-à-dire lisible par un humain, qui
contient une certaine syntaxe afin de mettre en forme ou de décrire ce document. Son nom de
fichier a généralement le suffixe .html ou réduit à .htm sur certain systèmes d'exploitation ne
supportant pas plus de 3 caractères de suffixe.

De nos jours l'immense majorité des gens font leur page Web à l'aide d'un logiciel avec une
interface graphique, en utilisant la souris et en ayant un rendu immédiat ; il en existe des gratuits
comme Joomla ou Wordpress, qui génèrent automatiquement les codes HTML. Dans la
réalisation de notre portail par contre, pour plus de clarté on va coder tous nos pages que ce soit
HTML, CSS, PHP, ou JavaScript nous-même. Il existe des éditeurs textes permettant de faire
tout cela, pour notre cas on a choisi d’utiliser le logiciel « Notepad++ » en raison de sa légèreté
et sa stabilité.

45
Figure 3.05 : Interface Notepad++

C’est dans cet éditeur de texte donc que l’on va coder tout nos pages. Précisons tout de même
à titre de remarque que les documents HTML doivent tous avoir une structure minimale. C'est-
à-dire des balises qui sont toujours présentes et au milieu desquelles nous allons ajouter notre
propre contenu.

Voici un exemple de page minimale :

<!DOCTYPE html>

<html>

<head>
<title>Titre affiché dans la barre de titre du navigateur</title>
</head>

<body>
<!-- C'est ici que nous mettrons notre contenu -->
</body>

</Html>

46
C’est grâce à des balises comme l’on voit ci-dessus que l’on structure les informations et
transformer notre code source en document correct affiché à l'écran de l’utilisateur.

A la fin de la rédaction du document html qui a constitué la page de notre portail, le résultat
obtenu est assez archaïque et minimaliste.

Figure 3.06 : Aperçu page HTML

On remarque que le rendu obtenu ne ressemble pas du tout au croquis que l’on a fait
précédemment. Cela est normal car le langage html ne sert qu’à écrire le contenu de la page,
c’est-à-dire des textes, des liens puis à inclure les fichiers multimédia qu’on a besoin telle que
l’image que l’on aperçoit ci-dessus.

3.5.3.2 Mise en œuvre coté CSS


Les feuilles de styles en cascade ou CSS pour « Cascading Style Sheets », décrivent l'apparence
des divers éléments d'une page web par le biais de couples propriété valeur. Étant distinctes du
code de la page HTML, elles constituent un moyen pour séparer la structure la et la mise en
page d'un site web, donc il est rarement approprié de s'en passer dans une page. En tant que
spécification du W3C, elles obéissent à un ensemble de règles que les navigateurs web doivent
respecter.

47
Voici comme le montre la figure suivante, dans la partie la manière d’indique au page html la
feuille de style CSS

Figure 3.07 : Declaration CSS

On peut voir dans la partie encadré en rouge l’indication de l’emplacement du fichier à


l’extension « .css ».

C’est dans ce fichier « general.css » que l’on mettra les directives à-propos de la propriété des
contenus des pages, à savoir la police choisie, la taille des textes, leur couleur, et leur
positionnement.

Précisons qu’une feuille de styles CSS fonctionne sous forme de déclarations :

selecteur {propriété : valeur;}

Comme on le voit ci-dessus une déclaration est composée au minimum de deux éléments :
l'élément de la page auquel on souhaite appliquer un style que l’on nomme le sélecteur, et le
groupe de règles définissant le style propriété et valeur. Voici un exemple de déclaration,
analysons-la :

h1 {color: red ;}

Ici, l'élément à mettre en forme est h1 qui signifie titre de niveau 1 et le groupe de règles,
délimité par les accolades, contient la règle « mettre cet élément en rouge ». Une règle consiste
en une propriété ici color, suivie par deux points « : », suivie enfin par la valeur associée à la
propriété ici rouge.

48
3.5.3.3 Mise en œuvre coté PHP
Pour commencer définissons PHP, c’est un langage de script principalement utilisé pour la
programmation Web. Il est utilisé sur tous les systèmes d'exploitation tels Windows, Gnu Linux
ou autre Unix commercial, ce qui en fait un langage très portatif qui occupe une place
incontournable dans le développement Web Open Source.

En effet, actuellement PHP jouit d’une notoriété sans précèdent due à sa vitesse et de sa
simplicité, tellement, qu’on estime aujourd’hui qu'il y a 4,8 millions de serveurs qui utilisent le
langage de par le monde.

Il faut savoir que PHP sert avant tout à obtenir des sites Web dynamiques, parceque a l'origine
d’internet, les sites Web étaient des sites statiques c’est-à-dire constitués d'un ensemble de
pages écrites uniquement dans le langage HTML. Par conséquent l'information présente sur ces
pages était toujours identique et leur mise à jour était particulièrement fastidieuse pour leurs
administrateurs.

Dans ce cas de figure le serveur Web se contentait seulement de diffuser les pages telles quelles
à l'utilisateur. L'interaction entre le site et l'utilisateur était très sommaire car l'utilisateur
demandait une page web et le serveur la lui fournissait.

Figure 3.08 : Site web statique

Maintenant par contre, la plupart des sites web présent sur le web sont dynamiques ce qui veut
dire qu’à l'intérieur des pages HTML, on insère des programmes qui vont interagir avec
l’utilisateur. Ces programmes permettent une plus grande souplesse dans la gestion du site, sa
mise à jour et ses fonctionnalités.

Ici l’interaction est plus complexe que pour le site statique car lorsque l’utilisateur tape une
URL depuis son client web, le serveur est sollicité mais n’envoie pas directement le fichier à
extension « .php » parceque le navigateur des postes clients ne saurait pas l’interpréter. A la
réception de la requête donc, le serveur demande à l'interpréteur PHP d'exécuter le code PHP

49
contenu dans le fichier. Au final, c'est une page HTML sans aucun code PHP qui est renvoyé à
notre serveur HTTP c’est-à-dire Apache et que ce dernier renvoie à son tour au navigateur de
l’utilisateur.

Figure 3.09 : Site web Dynamique

Grace au PHP donc, chaque page reçu par l’utilisateur de notre plateforme est unique car on
peut le faire correspondre aux informations donnée par l’utilisateur grâce à un formulaire par
exemple.

C’est aussi au niveau de PHP que l’on négocie l’accès à la base de données et de récupérer les
données stocker dans MySQL si éventuellement cela était nécessaire. Pour notre plateforme en
effet et surtout pour notre moteur de recherche, on a besoin d’accéder à la base de données pour
pouvoir rechercher les termes et afficher les résultats.

3.5.3.4 Mise en œuvre coté JavaScript


A l’instar du PHP le JavaScript est un langage de programmation utilisé principalement par les
navigateurs web. Il partage avec Java une syntaxe inspirée du langage C, mais leurs similitudes
s'arrêtent là car ils n’ont rien à voir avec l’autre.

Dans notre projet on va devoir utiliser le JavaScript pour ainsi dire donner vie à nos pages, à
savoir contrôler les données saisies dans des formulaires HTML, faire des menu déroulante, ou
à interagir avec le document HTML via l'interface DOM ou « Document Object Model »,
fournie par le navigateur.

50
Voici un exemple de menu déroulant que l’on a créé pour le portail de notre site de moteur de
recherche grâce à JavaScript.

Figure 3.10 : Menu déroulante effectué en JavaScript

Précisons qu’aux même titre que les codes CSS JavaScript est intégré directement au sein des
pages Web et s'exécute sur le client Web par opposition au PHP, ici donc c'est le navigateur
Web du visiteur de notre portail qui vas prendre en charge l'exécution de ces bouts de
programme, manipulant leur environnement, appelés scripts puis affiche le rendu final.

3.5.3.5 Tableau Récapitulatifs


Pour bien comprendre les rôles que prend chaque langage dans l’édification du site web portail
de notre moteur de recherche voici un tableau récapitulatif qui résume ce qu’on ait
précédemment à leur propos.

Langage Rôles Commentaires


HTML Sert à écrire la page proprement dite. Emploie des balises pour
structurer le contenu de la page
CSS Changer agencement, positionnement, et C’est un langage
propriété des éléments de la page HTML complémentaire du HTML
PHP Rendre notre site web dynamique, c’est- Le PHP est exécuté au niveau du
à-dire avec présentation diffèrent pour serveur.
chaque utilisateur
JavaScript Soigner le rendu de nos pages web Langage interprété qui est
exécuté par le navigateur de
l’utilisateur.

51
Tableau 3.01 : Récapitulatif des rôles des langages
On aperçoit maintenant que chaque langage joue un rôle bien précis qui permettra à notre portail
d’être bien présenté et soigné aux yeux des visiteurs.

3.5.3.6 Rendu du portail


Après avoir mis en place tout les codes sources que ce soit du HTML, CSS, PHP, et JavaScript
présentons le résultat enfin obtenu au niveau de l’utilisateur de notre moteur de recherche.

Premièrement voici la page d’accueil c’est-à-dire la page qui s’affiche lorsque l’on entre l’URL
« http://semperfi.tp » :

Figure 3.11 : Aperçu de l'interface du moteur de recherche

C’est maintenant que l’on peut voir que le résultat obtenu ressemble au croquis que l’on a fait
dans la phase de conception

52
Ensuite lorsqu’une recherche est effectuée via notre bar de recherche que l’on aperçoit sur la
figure ci-dessus, les résultats de la recherche est affiché comme ci-contre :

Figure 3.11 : Test du moteur de recherche

Apres qu’une recherche ai été faite, le résultat s’affiche telle que le la figure

3.6 Conclusion

Ce chapitre a été marqué par la mise en place du moteur de recherche qui représente fièrement
le terme d’exploitation de données sur internet. Pour cela d’abord données le modèle
conceptuelle de données de cette plateforme, puis on a fait savoir le principe de fonctionnement
de cette fonctionnalité. Ce chapitre se clôture donc, par la mise en place de la fonctionnalité
principale de notre plateforme d’exploitation de données.

53
CHAPITRE 4 : MISE EN PLACE DU SERVEUR DE MESSAGERIE
4.1 Principe
Le courrier électronique, aussi simple soit-il à utiliser, repose sur un principe de fonctionnement
plus compliqué que celui des sites web que l’on a déjà expliqué précédemment. Pour la plupart
des utilisateurs son fonctionnement est transparent, ce qui signifie qu'il n'est pas nécessaire de
comprendre comment le courrier électronique fonctionne pour pouvoir l'utiliser.

Un système de messagerie électronique est l'ensemble des éléments contribuant à transmettre


un courriel de l'envoyeur au destinataire. Il y a quatre éléments fondamentaux qui constituent
ce système que l’on appelle agent de messagerie, ils sont:

- le Mail Transfert Agent ou MTA

- le serveur du protocole entrant

- le Mail Delivery Agent ou MDA

- le Mail User Agent ou MUA

Les différents éléments du système de messagerie sont agencés selon une architecture logique,
pour en assurer le fonctionnement. Nous représentons cette architecture par le schéma suivant:

Figure 4.01 : principe du transfert de mail

54
Ce schéma présente le transfert d'un courriel d'un expéditeur à un destinataire.

1- L’expéditeur communique son courriel via le MUA.

2- Le MUA transmet ce courriel au MTA (la plupart des MUA intègre des clients SMTP).

3- Le MTA du système de l’émetteur établit un canal de transmission avec le MTA du système


du destinataire, par émissions successives de requêtes bidirectionnelles.

4- Une fois le canal établit, le courriel est transmis d’un système à un autre par les MTA.

5- Dans le système du destinataire, le MTA transmet le courrier reçu au serveur IMAP ou POP3.

6-7- Le MDA récupère le courriel du serveur IMAP/POP3, et le met à disposition du MUA.

8- Le MUA dépose le courriel dans la boîte aux lettres du destinataire qui pourra le consulter à
tout moment, sur authentification [4].

4.2 Protocole utilise


Chaque utilisateur de notre service de messagerie possède une « boîte aux lettres » identifiée
par une adresse électronique du type nom_utilisateur@semperfi.tp.

L’acheminement du mail se fait comme nous l'avons vu sur la figure précédente en plusieurs
étapes. Tout d’abord, le courrier est envoyé à un serveur de mail qui va se charger de
l’acheminer à bon port. Il va donc transmettre le message au serveur destinataire qui le stocke
en attendant que l’internaute destinataire le récupère à partir de sa boîte aux lettres personnelle.
Plusieurs protocoles entre est mis en œuvre pour que ces processus d’envois et de réception se
passent comme il faut, l’ensemble de ces protocoles est décrit ci-dessous.

4.2.1 Protocole Telnet


Le protocole Telnet est un protocole standard permettant à un ordinateur de se connecter à
distance à un autre ordinateur, via l'Internet, en mode caractère uniquement. C’est un
protocole proposant l'interfaçage de terminaux et d'applications à travers Internet. Il fournit les
règles de base pour permettre de relier un client (système composé d'un affichage et d'un
clavier) à un interpréteur de commande (côté serveur). Dès que la connexion est établie,
tout se passe comme si l'utilisateur Telnet se trouvait aux commandes de l'ordinateur
distant; il peut alors utiliser le langage de commande disponible sur l'hôte distant et
lancer l'exécution de programmes qui s'exécuteront sur cet hôte.

55
Le protocole Telnet s'appuie sur une connexion TCP pour envoyer des données au format
ASCII entre lesquelles s'intercalent des séquences de contrôle Telnet. Il fournit ainsi un
système orienté communication, bidirectionnel. C’est un protocole de base, sur lequel
s'appuient certains autres protocoles de la suite TCP/IP (FTP, SMTP, POP3, ...). Ainsi, Telnet
permet de transférer des fichiers FTP, de lire le courrier électronique, de visionner des
documents HTML, de consulter des catalogues de bibliothèques ou de banques de données qui
rendent leur logiciel de consultation de catalogue accessible.

4.2.2 Protocole SMTP


Le Simple Mail Transfer Protocol qui signifie littéralement « Protocole simple de transfert de
courrier », généralement abrégé SMTP, est un protocole de communication utilisé pour
transférer le courrier électronique ou courriel vers les serveurs de messagerie électronique.

Le SMTP commence à être largement utilisé au début des années 1980. Il est alors un
complément à l'UUCP, celui-ci étant plus adapté pour le transfert de courriers électroniques
entre des machines dont l'interconnexion est intermittente. Le SMTP, de son côté, fonctionne
mieux lorsque les machines qui envoient et reçoivent les messages sont interconnectées en
permanence.

Comme son nom l'indique, SMTP est un protocole assez simple : On commence par spécifier
l'expéditeur du message puis, le ou les destinataires d'un message, puis, en général après avoir
vérifié leur existence, le corps du message est transféré. Il est possible de tester un serveur
SMTP en utilisant la commande telnet sur le port 25 d'un serveur distant.

Voici la procédure à suivre lors d'un envoi SMTP :

Lors de l'ouverture de la session SMTP, la première commande à envoyer est la


commande HELO suivie d'un espace et du nom de domaine de votre machine afin de dire
"bonjour je suis telle machine", puis valider par entrée. Depuis avril 2001 par contre, les
spécifications du protocole SMTP imposent que la commande HELO soit remplacée par la
commande EHLO.

 La seconde commande est "MAIL FROM:" suivie de l'adresse email de l'expéditeur.


Si la commande est acceptée le serveur renvoie le message "250 OK"
 La commande suivante est "RCPT TO:" suivie de l'adresse email du destinataire. Si
la commande est acceptée le serveur renvoie le message "250 OK"

56
 La commande DATA est la troisième étape de l'envoi. Elle annonce le début du corps
du message. Si la commande est acceptée le serveur renvoie un message
intermédiaire numéroté 354 indiquant que l'envoi du corps du mail peut
commencer et considère l'ensemble des lignes suivantes jusqu'à la fin du message
repéré par une ligne contenant uniquement un point. Le corps du mail contient
éventuellement certains des en-têtes suivants [7] :
 Date
 Subject
 Cc
 Bcc
 From

Voici une figure qui représente un échange entre un client et le serveur qui SMTP qui est la
nôtre.

Figure 3.02 : Test serveur SMTP

57
Comme on peut le voir ici, il existe une syntaxe précise pour envoyer des messages et une série
de codes retour pour indiquer le statut de la demande. Pour les codes de retour, émis par le
serveur, il est possible de se repérer facilement à l’aide du premier chiffre du code :

 Code 2 : La demande a été exécutée sans erreur.


 Code 3 : La demande est en cours d’exécution
 Code 4 : Indique une erreur temporaire Code 5 : La demande n’est pas valide et n’a
pas pu être traitée. Vérifiez votre syntaxe

4.2.3 Protocole POP/IMAP


Les protocoles POP (Post Office Protocol) et IMAP (Internet Message Access Protocol)
permettent d’aller récupérer du courrier sur un serveur distant.

Tout comme dans le cas du protocole SMTP, le protocole POP fonctionne grâce à des
commandes textuelles envoyées au serveur POP. Chacune des commandes envoyées par le
client (validée par la touche « Entrée » est composée d’un mot-clé, éventuellement
accompagné d’un numéro et d’un message descriptif.

Le protocole POP gère l’authentification à l’aide d’un nom d’utilisateur et d’un mot de passe,
il n’est par contre pas sécurisé car les mots de passe, au même titre que les mails, circulent en
clair sur le réseau. D’autre part le protocole POP bloque la boîte aux lettres lors de la
consultation, ce qui signifie qu’une consultation simultanée par deux utilisateurs d’une même
boîte aux lettres est impossible.

Le protocole IMAP, quant à lui, est un protocole alternatif au protocole POP mais beaucoup
plus complet et offrant beaucoup plus de possibilités :

 IMAP permet de gérer plusieurs accès simultanés.


 IMAP permet de gérer plusieurs boîtes aux lettres.
 IMAP permet de trier le courrier selon plus de critères.

L’IMAP permet de répondre beaucoup mieux à des besoins de déplacement car contrairement
au protocole POP, il a été conçu pour permettre de laisser les messages sur le serveur. Il
minimise également les échanges de données sur le réseau. La plupart des clients de messagerie
implémentent le protocole IMAP puisque celui-ci est largement utilisé par les différents
fournisseurs d’accès à internet.

58
4.3 Les agents de messageries
4.3.1 Les MTA
Le MTA est un programme qui permet d’envoyer le message d’un serveur à un autre. Ce
logiciel est situé sur chaque serveur de messagerie. Il est composé d’un agent de routage et d’un
agent de transmission. Il envoie le message via un protocole sortant. Un MTA reçoit,
habituellement par le protocole SMTP, les emails envoyés soit par des clients de messagerie
électronique (MUA), soit par d'autres MTA. Son rôle est de redistribuer ces courriers à des Mail
Delivery Agent et/ou d'autres MTA. Lorsqu’un MTA veut transférer un message à un MTA
qui est indisponible, il met ce message dans sa file d’attente : il essaiera plusieurs fois de
retransmettre le message, jusqu’à ce que le MTA destinataire soit à nouveau disponible. Au-
delà d’un certain nombre d’essais infructueux (ou d’un certain durée selon la configuration), le
message sera rejeté par le MTA.

4.3.2 Les MDA


C’est un agent qui est en charge de la gestion des boîtes aux lettres. Il prélève le courrier dans
les files d’attentes du MTA et le dépose dans le répertoire de boîtes aux lettres de l’utilisateur.
Pour cela il est souvent considéré comme le point final d’un système de messagerie. Il est
possible de placer des fonctions de sécurité à ce niveau tel qu’un appel antivirus et ou anti-
spam. Le MDA est l’outil de personnalisation des fonctions de sécurité. Si l’utilisateur souhaite
régler lui-même les paramètres de fonctionnement des outils de sécurité, c’est là que
l’opération doit se faire. De ce fait il est possible de mettre des filtres personnalisés pour trier
les mails dans différents dossiers.

4.3.3 Les MUA


C’est un logiciel client de messagerie qui sert à saisir, à lire et envoyer des courriers
électroniques. Il est également capable d’expédier le message au MTA le plus proche.

Il existe deux types de MUA :

 Il y a le MUA installé sur le système d’exploitation de l’utilisateur qui est appelé client
lourd ou client de messagerie par exemple Mozilla Thunderbird, Microsoft Outlook ou
Eudora Mail. Ces logiciels permettent un stockage des messages en local et une interface
plus rapide que les Webmail.
 Et il y a le MUA accessible via un navigateur (Mozilla, Internet Explorer) appelé
Webmail.

59
Ce dernier remplit les mêmes fonctions que le client de messagerie mais qui ne nécessite pas
d’installer quoi que ce soit sur son ordinateur pour gérer son courrier. Le courrier est resté en
permanence sur le serveur. Ce qui offre la possibilité de pouvoir le consulté à partir de n’importe
quelle machine connectée au réseau dans le monde. Les inconvénients de cette méthode sont
d’être dépendant en performance de la rapidité du réseau, en particulier si le nombre de message
est grand ou s’il y a des pièces jointes de taille importante dans le message. La
caractéristique essentielle de tous ces logiciels est de nous permettre d’accéder à la boite de
courriers électroniques d’un utilisateur

4.4 Installation et configuration des agents de messagerie


4.4.1 Installation et configuration postfix
Pour mettre en place le MTA ou Mail Transfert Agent qui ferras offices de serveur de
messagerie ou encore serveur SMTP, il y a plusieurs programmes tels que Qmail, Postfix,
Sendmail ou Exim. Mais pour la réalisation de ce projet on a choisi d’utiliser Postfix. Ce choix
est justifier par la stabilité de ce programme et aussi parce qu’elle est complet tant sur les
configurations que sur les fonctionnalités.

L’installation se fait comme très souvent on a fait sur linux en ligne de commande :

# apt-get install postfix

Après l’installation on doit effectuer un basic configuration de Postfix :

# dpkg-reconfigure postfix

La fenêtre suivant apparaissent après avoir entré la commande précèdent.

Figure 4.03 : resultat de dpkg-reconfigure

60
A partir de cette fenêtre on choisit site internet et on suit les instructions pour terminer cette
étape.

Ensuite on va modifier le fichier de configuration de Postfix:

#nano /etc/postfix/main.cf

Pour y ajouter les lignes suivant :

# Activer l'identification SASL

smtpd_sasl_auth_enable = yes

# Utiliser le service d'identification de Dovecot

smtpd_sasl_type = dovecot

smtpd_sasl_path = private/auth

# Noter dans les en-têtes des messages l'identifiant de


l'utilisateur.

smtpd_sasl_authenticated_header = yes

Ici on a mentionner que l’on va utiliser les service d’authentification du MDA dovecot que l’on
vas présenter la partie suivante pour postfix.

4.4.2 Installation et configuration Dovecot


On a utilisé Dovecot comme Mail Delivery Agent ou encore serveur POP/IMAP

Installation:

# apt-get install dovecot-imapd

# apt-get install dovecot-pop3d

Donc ici notre le MDA de notre serveur de messagerie supporteras à la fois les protocoles
IMAP et POP3.

Le fichier de configuration à modifier est : /etc/dovecot/conf.d/10-master.conf

Dans ce fichier on va activer le service d’authentification de Dovecot qui sera utilisé par Postfix
que l’on déjà mentionner précédemment.

On entre la commande :

61
#nano /etc/dovecot/conf.d/10-master.conf

Puis on ajoute les lignes suivantes dans le fichier correspondant

service auth {

# Postfix smtp-auth

unix_listener /var/spool/postfix/private/auth {

mode = 0660

user=postfix

group=postfix

Ce qu’on a fait ici consiste en fait pour Dovecot de créer un socket Unix, sur lequel il écoutera
les demandes d'identification provenant de Postfix. Comme le service SMTP de Postfix est
chrooté c’est dire emprisonné dans le répertoire /var/spool/postfix/, il faut placer ce socket sous
ce répertoire.

Apres avoir enregistré les fichiers de configuration donc, on redémarre Postfix et Dovecot pour
que les deux agents prennent en compte les modifications faite.

Commande :

# /etc/init.d/Postfix restart

# /etc/init.d/Dovecot restart

A ce stade notre serveur qui propose un service de messagerie instantanée est déjà
opérationnelle mais il faut le peaufiner un peu de manière à ce qu’il soit plus sécurisé ce qui
vas être détaillé dans la partie suivante

4.4.3 Sécurisation service mails


Pour notre serveur, l’accès à un compte de messagerie électronique nécessite d’ores et déjà une
authentification. Ce qui nous reste à faire est de configurer le chiffrement des
communications, grâce à la création de certificat TLS. Pour ce faire on ouvre un terminale et
on entre la commande suivante.

62
#openssl req -new -x509 -days 3650 -nodes -newkey rsa:4096 –out
/etc/ssl/certs/mailserver.pem –keyout/etc/ssl/private/mailserver.pem

Ce commande a permis la création d’u certificat TLS nommé mailserver.pem dans le répertoire
/etc/ssl/private et qui sera automatiquement utilisé par nos MTA et MDA.

Apres cela, on limite les utilisateurs qui possèdent des droits sur le certificat grace la commande
chmod.

# chmod go= /etc/ssl/private/mailserver.pem

Pour complétez cette securisation, on doit aussi éviter L'Open Relay. L'Open Relay est le
comportement de certain serveur SMTP qui autorise tous les messages électroniques entrants à
transiter par lui pour atteindre d’autres domaines. Pour cela on va compléter le fichier
/etc/postfix/main.cf par le code suivant :

smtpd_recipient_restrictions =

reject_unlisted_recipient, reject_unknown_recipient_domain,

permit_mynetworks, permit_sasl_authenticated,

reject_non_fqdn_recipient,

reject_unauth_destination

Ce bout de code que l’on vient d’écrire a permis entre autre d’accepter les courriers s'il vient
d'un hôte sûr ou d'un client authentifié, de refuser les courriers qui ne sont pas destiné à un
domaine que l'on gère ou pour lequel on relaie.[9][12]

4.6 Notion de webmail


4.6.1 Definition
Sachons tout d’abord qu’il existe deux manières de recevoir les courriers électroniques ou les
mails comme on l’a expliqué brièvement dans la partie présentation des Mail User Agent.

Premièrement, il y a la méthode couramment utilisé dans le monde professionnelle qui est


l’utilisation d’un client lourd ou riche telle qu’Outlook, Thunderbird. Ce mode est déjà
utilisable dans l’état actuelle de notre serveur, ceci grâce simplement à la configuration qu’on
a fait pour postfix et dovecot.

La seconde méthode est l’utilisation des webmail. Par définition, un webmail est une interface
web rendant possible l’émission, la consultation et la manipulation de courriers électroniques

63
directement sur le Web depuis un navigateur. C’est ce mode que l’on va essayer d’implémenter
sur notre serveur.

Pour notre plateforme alors, le principe de base sera d’installer un client de messagerie (le
webmail) qui s'exécute sur notre serveur web. Ce client de messagerie servira d'interface entre
notre serveur de messagerie et le navigateur web de l’utilisateur du service de messagerie pour
que ce dernier accède au service au même titre que les utilisateurs des clients lourds qui permet
les mêmes opérations à partir d’un logiciel installé localement sur un ordinateur personnel.

L’intérêt d’installer le webmail sur le serveur est d’augmenter l’accessibilité des services que
propose notre serveur mail. En effet, les utilisateurs ne sont plus obligé d’installer un logiciel
spécialisé sur sa ou ses machines, de faire la configuration pour envoyer et recevoir le courrier.
Ceci permet aussi de déporter la responsabilité de la sécurité de l'installation vers le serveur. Le
seul inconvénient de cette solution est d'être dépendant en performance de la rapidité du réseau,
en particulier si le nombre de messages est grand ou s'il y a des pièces jointes de taille
importante dans les messages

4.6.2 Roundcube et son installation


Pour permettre l’accès aux boites IMAP donc, depuis n’ importe où quelle plateforme,
l’installation d’un Webmail s’impose. De nombreux Webmail Open Source sont disponibles
sur internet mais celui qui sort du lot en ce moment, c’est Roundcube. C’est un logiciel écrit
en PHP qui malgré sa récence, offre de gros atouts coté ergonomie, notamment grâce à
l’utilisation d’AJAX.

Il faut préciser que pour pouvoir installer Roundcube il faut au préalable avoir installé
Apache pour héberger le site du Webmail et un serveur de base de donné tel que MySQL-
Server pour la sauvegarde des données, ce qui est notre cas comme on a vue précédemment.

Contrairement au fois précèdent ou les installation se sont fait en ligne de commande, ici il faut
d’abord téléchargez l'archive qui contient l’installation de Roundcube "roundcubemail-
0.3.1.tar.gz" pour notre cas sur le site www.roundcube.net, puis le décompresser afin de le
copier dans le répertoire racine de serveur web Apache c’est à dire dans le dossier /var/www

Ceci se fait en ouvrant une terminale et en entrant les commandes suivant :

Décompression de l’archive :

# tar xzf roundcubemail-0.3.1.tar.gz

64
Effectuation de la copie du dossier ainsi décompressé dans le répertoire racine en le renommant
au passage

# cp roundcubemail-0.3.1 /var/www

# mv /var/www/roundcubemail-0.3.1 /var/www/webmail

Ensuite l’étape suivante va être de créer une base donné qui va être utilisé par Roundcube
avec son propre utilisateur. Démarrons donc MySQL en tant qu’administrateur pour effectuer
cela.

# mysql –u root –p<mon_mot_de_passe>

Création de la base (Code SQL):

mysql> CREATE DATABASE webmail;

Créons alors l’utilisateur user que le webmail Roundcube vas utiliser pour acceder a MySQL,
avec toutes les privilèges sur toutes les tables de la base de données webmail:

mysql> GRANT ALL PRIVILEGES ON webmail.* TO user@localhost


IDENTIFIED BY 'mon_mot_de_passe';

Maintenant que tout a été préparé pour la mise en place de Roundcube, Il ne nous reste plus
qu’à l’installation proprement dite, une interface assez explicite a été développée dans
Roundcube pour cela. Puisque nous avons précédemment copié le dossier webmail contenant
Rouncube dans le dossier racine de notre serveur web, on a plus qu’à rentrer l’URL
http://semperfi.tp/installer/ dans un navigateur pour obtenir cette fenêtre d’installation et de
configuration :

65
Figure 4.04 : Installation Roundcube

A partir d’ici il suffit de commencer l’installation et juste de suivre les instructions pour achever
l’installation du webmail Roundcube. Pendant cette installation sera demandée le nom et de la
base de données que l’on a créé précédemment c’est-à-dire «webmail » et les identifiant
MySQL pour y accéder.

4.6.3 Hébergement Webmail

Comme on le sait déjà, Apache peut gérer plusieurs sites web simultanément qui Ils seront tous
accessibles à partir de la même adresse IP et du même port. Pour les différencier, Apache se
sert de l'adresse demandée par le navigateur. Cette fonctionnalité va nous servir à héberger notre
webmail.

Pour indiquer à Apache quel site correspond à un nom de domaine alors, il faut créer ce qu’on
appelle une section <VirtualHost *>. C’est ce virtualhost qui va contenir les directives qui
permettra à notre serveur web de distinguer chaque site web qu’il héberge. Pour heberger le
webmail alors, il faut que l’on créer le fichier /etc/apache2/sites-available/webmail comme
suit pour contenir le virtualhost :

NameVirtualHost *:443

66
<VirtualHost *:80>

ServerName mail.semperfi.tp

</VirtualHost>

<VirtualHost *:443>

DocumentRoot /var/www/webmail

ServerName mail.semperfi.tp

<Directory /var/www/webmail/>

Options FollowSymLinks MultiViews

AllowOverride All

Order allow,deny

allow from all

</Directory>

<Directory /var/www/webmail/config>

Options -FollowSymlinks

AllowOverride None

</Directory>

<Directory /var/www/webmail/temp>

Options -FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/www/webmail/logs>

67
Options -FollowSymLinks

AllowOverride None

Order allow,deny

Deny from all

</Directory>

ErrorLog /var/log/apache2/webmail_error.log

CustomLog /var/log/apache2/webmail_access.log combined

</VirtualHost>

Précisons que cette virtualhost que l’on a créé pour notre webmail permettra d’afficher le site
contenue dans le répertoire /var/www/webmail/ lorsqu’ il y a une requête correspondant à
l’adresse http://mail.semperfi.tp.

Ouvrons maintenant une terminale en tant qu’administrateur pour activer ce virtualhost et


redémarrer Apache pour que tout soit pris en compte.

# a2ensite webmail

# /etc/init.d/apache2 reload

4.7 Envoi et réception de courrier


4.7.1 Client léger
Grace au serveur web et le webmail que nous avons installé dans les parties précédents sur notre
serveur, il est possible d’accéder à ses courriels à partir de n’importe quelle plateforme en
utilisant un simple navigateur en tapant l’url «http://mail.semperfi.tp » dans la barre d’adresse,
on arrive alors sur le site de notre webmail.

68
Figure 4.05 : Authentification avec webmail

Après s’être authentifié on peut accéder à ses courriels grâce à l’interface très intuitive de
Roundcube ou on peut alors recevoir et envoyer des courriers électroniques

Figure 4.06 : accès service messagerie avec le Webmail

4.7.2 Client lourd


Le terme « client lourd », par opposition au client léger, désigne une application cliente
graphique exécutée sur le système d'exploitation de l'utilisateur. Un client lourd possède
généralement des capacités de traitement évoluées et peut posséder une interface graphique
sophistiquée

69
Dans ce cas de figure il faut installer sur chaque poste utilisateur l’application de client. Il existe
beaucoup d’application de type client lourd telle Microsoft Outlook, Mozilla Thunderbird ou
encore Pidgin. Ici pour la séance de test on a choisi d’utiliser Mozilla Thunderbird car c’est un
programme qui est disponible gratuitement sur internet, de plus elle est assez facile à prendre
en main.

Figure 4.07 : Interface Thunderbird

L’une des avantages d’utiliser les clients lourds c’est de pouvoir gérer plusieurs comptes en
même temps en configurant ses comptes de messagerie dans Thunderbird comme suit :

Figure 4.8 : Configuration Thunderbird

70
4.8 Conclusion

Pour conclure ce chapitre, on peut dire que cette partie nous a permis d’exploiter au maximum
nos connaissances théoriques et pratiques pour mettre en place un système de messagerie pour
notre plateforme. Au début, nous avons d’abord analysé tous les étapes et protocole nécessaires
à son mise en place. Et tout au long de ce chapitre, nous avons essayé d’expliquer les
fonctionnalités et les avantages que présente l’implémentation de ce service pour notre
plateforme. Pour terminer, le travail qu’on a entrepris dans ce chapitre nous a donné l’occasion
de mieux comprendre l’environnement de la messagerie électronique et les difficultés rencontré
dans sa mise en place.

71
CONCLUSION GENERALE

Cette ouvrage présente l’art et la manière de d’exploiter les données et ressources mis à notre
disposition avec l’environnement qu’est internet. Dans cette objectifs alors, notre travaille s’est
axé en l’implémentation d’un système d’information au sein d’un réseau domestique.

Tout d’abord on a mis en place un moteur de recherche sur un serveur qui va permettre aux
utilisateurs situés dans le même réseau que le serveur d’effectuer une recherche à partir d’un
thème particulier sur le web et d’obtenir des réponses. Ceci permet a de s’affranchir des sites
de recherche ou les résultats d’une requête est trop bien polluer par des informations à caractère
publicitaire et souvent ne corresponde pas à ce que l’on veut. Cette méthode de faire suppose
néanmoins que l’on assume l’entière responsabilité sur l’intégrité des données.

Puis on a aussi implémenté un service de messagerie électronique. Cette fonctionnalité introduit


la possibilité de véhiculer plusieurs types de données sur le web tels que les documents, les
photos ou de simple message texte.

Arrivé à ce point, les difficultés qu’on a du résoudre pour l’intégration dans notre réseaux de
ces services cité ci-dessus et notamment la mise à niveau de la sécurité, la gestion de la mobilité
et le transport des informations nous a permis de bien comprendre et d’examiner un a un les
bases des systèmes de communications sur internet ou sur un réseau en générale et les
nombreuses protocoles qui y sont associé. En effet, la réalisation de ce projet de plateforme
d‘exploitation de données nous a pousser à approfondir notre connaissance des principes de
fonctionnement et des différentes opérations qui devront être prises en charge par les
équipements du réseau c’est-à-dire notre serveur ou les terminaux.

72
ANNEXE 1

Fichier my_bot.py

from scrapy.contrib.spiders import CrawlSpider, Rule


from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor

from mycrawler.items import MycrawlerItem

class MyCrawlerSpider(CrawlSpider):
# nom du crawler à spécifier lors de l'exécution
name = 'mycrawler'

# domaine(s) sur le ou lesquels le crawler aura le droit d'aller


allowed_domains = ['www.liteweb.fr']

# point de départ : vous pouvez mettre une liste d'url, séparées


par des virgules
start_urls = ['url_de_depart']

# très important : les régles en fonction du schéma des urls


(c'est des regexp)
rules = [
# on autorise /article et que l'on va parser avec la methode
parse_item, et que l'on va aussi suivre pour extraire des liens
Rule(SgmlLinkExtractor(allow=['\/article\/']),
callback='parse_item',follow='True'),

# on autorise le crawler à parcourir et à extraire des liens


de tous les .html, mais pas si y'a /about dans l'url
Rule(SgmlLinkExtractor(allow=['\.html'],deny=['\/about']),
follow='True')
]

def parse_item(self, response):


hxs = HtmlXPathSelector(response)
item = MycrawlerItem()
item['title'] = hxs.select("//h1/text()").extract()
item['url']= response.url

# exemples de scrap plus complexes avec des regexp :


# item['datereview'] =
mtabletd.select('./tr[position()=2]/td[position()=3]/strong/text()')
.re(r'em (.*)$')
# item['note'] =
mtabletd.select('./tr[position()=2]/td/table/tr/td[position()=3]/img
/@src').re(r'avloja_m([0-9]+).gif')
# item['textreview'] =
mtabletd.select('./tr[position()=4]/td/div/p/span[@class="opncomp"]/
text()').extract()

return item

73
ANNEXE 2

fichier pipelines.py

class MySQLPipeline(object):
def __init__(self):
import MySQLdb
self.db = MySQLdb.connect(host=" serveur ",
user="nom_d’utilisateur", passwd="mot_de passe", db="nom_base")

def process_item(self, item, spider):


cursor = self.db.cursor()
sql = "insert into nom_table(colone1,colone2) values
('%s','%s')" % (item['title'][0],item['url'][0]))
cursor.execute(sql)
return item

def spider_closed(self, spider):


self.db.commit()

74
BIBLIOGRAPHIE

[1] G. Pujolle, «LES RESEAUX», Edition Eyrolles : Paris, 2008

[2] C. Servin, «RÉSEAUX ET TÉLÉCOMS » Edition Dunod : Paris, 2003

[3] A. Dia, « Administration de Réseau sous Linux » Licence Info / Groupe1A, 2007

[4] B. François, « Administration Réseau Linux – MAIL Server » AFPA Formation


TSGERI 2012-2013

[5] R. Malgouyres, « Administration réseau sous linux (Debian et Ubuntu)» Février


2007

[6] C. Robert « La topologie des reseaux» Cours sur la topologie des réseaux 2010/2011

[7] Openclassrooms.com « comprendre la messagerie electronique», Janvier 2011

[8] Openclassrooms.com « comprendre les reseaux tcp ip et le fonctionnement


d’internet», Fevrier 2012

[9] R. Z. Mahefarivo, «SECURISATION DES RESEAUX SOUS LINUX», Mémoire de


fin d’étude, Ecole Supérieure Polytechnique d’Antananarivo, AU : 2003-2004

[10] R. F. Domoina, «ETUDE ET INSTALLATION DU RESEAU CLIENT SERVEUR


AU SEIN DU DEPARTEMENT TELECOMMUNICATION» Mémoire de fin
d’étude, Ecole Supérieure Polytechnique d’Antananarivo, AU : 2004-2005

[11] R. Andriatiana et R. Mirantsoa Ando, « MISE EN PLACE D’UN SERVEUR WEB


ET FTP SECURISE SOUS LINUX» Mémoire de fin d’études en vue de l’obtention
du diplôme d’ingénieur, Ecole Supérieure Polytechnique d’Antananarivo, AU :
2004-2005

[12] F. OUSMANE, « Pc Anywhere » Faculté des sciences – Nîmes, Session 2005

[13] G. Aubry, « Server Load Balancing le réseau s’en charge» Domaine IT, 24 juin
2008

[14] B. DAILLY « Administration Systemes et Reseaux» Rapport de stage, IUP 2


Boulogne et régions : 2005

75
[15] P Dinh-van « Informatique altermondialiste», Rapport de stage, Université de Louis
Pasteur de Strasbourg AU : 2006-2007

[16] B. J. Chakib « RESEAU HETEROGENE GERE PAR UN SERVEUR LINUX


FEDORA», Rapport de stage, Universite de Tunis ecole superieur des sciences et de
technique : 2004

[17] J. BRES, «Réseaux, Déploiement, administration et sécurité», Rapport de stage,


Université de Technologie de Belfort-Monbeliard

[18] N. Ferre, «Livre blanc Haute disponibilité sous Linux» www.alcove.fr, Printemps
2000

[19] R. A. Andréas, « ADMINISTRATION D’UN RESEAU SOUS LINUX» MEMOIRE


de fin d’études en vue de l’obtention du DIPLÔME de Licence ès sciences
techniques en Télécommunication, AU : 2006-2007

[20] N. Thierry, « Équilibrage de charges sous Linux» Mémoire de fin d’études en vue
de l’obtention du diplôme de Licence Professionnelle, ASRALL : 2007

76
FICHE DE RENSEIGNEMENT

Nom : RAMASY

Prénoms : Heritier Arantès

Adresse de l’auteur :

Bloc 17 porte 597 Cur vontovorona

Tel : +261 34 48 489 63

E-mail : ramasyheritier@yahoo.com

Titre du mémoire :

CONCEPTION ET REALISATION D’UN PLATEFORME D’EXPLOITATION

DE DONNEES IMPLEMENTEE DANS UNE RESEAU LOCAL

Nombre de pages : 78

Nombre de tableaux : 4

Nombre de figures : 44

Directeur de mémoire :

Nom : RAVONIMANANTSOA

Prénoms : Manda-Vy

Grade : Maître de Conférences

E-mail : ndaohialy@gmail.com

Tel : +261 33 12 358 00

77
RESUME
Internet constitue aujourd’hui le plus vaste réseau public au monde ou les informations peuvent
circuler librement. Même si ces information est a porté de main, savoir l’exploiter n’est pas une
tache mince à faire, et seule quelques institution bien spécialisé profite de l’existence de ces
ressources. La raison de l’étude que l’on a entreprise dans cet ouvrage est de donner et présenter
les techniques qui permettent de prendre part à l’exploitation de données situées sur internet.

Mots clés: Web, MySQL, Moteur de recherche, Données, Réseaux

ABSTRACT
Internet is now the largest public network in the world where information can flow freely. Even
if the information is covered hand, Knowing to exploit that is not a thin spot to do, and only a
few well specialized institution benefits from the existence of these resources. The reason for
the study that has been undertaken in this book is to provide and present techniques to take part
in the exploitation of data located on internet

Key words: Web, MySQL, Search engine, Data, Network

78

Vous aimerez peut-être aussi