Choix des serveurs de GrAnd Site

 

1. Choix du serveur WEB.

Le choix du serveur WEB n'a pas été le plus compliqué à faire car la popularité de certains d'entre eux limite leur nombre. Nous nous sommes donc penchés sur un serveur sous Windows NT et Apache 1.3.4 (www.apache.org) sous Linux. Le choix, de part la différence de rapidité et la fiabilité est aisée à faire.

On trouve facilement des comparatifs de performances entre un serveur Apache sous Linux et un serveur IIS (Internet Information Server) sous NT 4.0. On peut voir sur le graphique ci-dessous, les mesures de capacité des serveurs WEB à répondre à des requêtes par seconde.

On constate que le moins performant des serveurs sur une plate-forme Linux est tout de même 16 % plus rapide que le serveur sous Windows NT 4.0. Le plus rapide (Caldera), l'est de 50 %... On notera aussi que d'après les statistiques, presque 40 % des serveurs WEB dans le monde sont des serveurs Apache, on peut donc penser que la réputation au niveau fiabilité et rapidité de ce serveur ne sont plus à faire. Le coté économique d'un tel serveur n'est pas négligeable non plus puisqu'il est gratuit.

 

 

2. Bases de données.

Etant donné que nous avons opté pour un serveur Apache sous Linux, nous aurons besoin d'une base de données assez rapide et fiable afin d'écourter les temps d'attente lors d'une requête via un navigateur. Comme nous avons opté pour un serveur Apache sous Linux, nous devrons donc utiliser un serveur de base de données sous Linux. Nous pourrons ultérieurement utiliser d'autres bases de données tournant sous Windows, comme MS ACCESS, via un driver ODBC. Ces bases de données (sous Windows) pourront être utilisées par des utilisateurs qui hébergeront leur site sur le GrAnd Site, mais pas sur le serveur de GrAnd Site lui-même.

Le comparatif du site de MySQL montre les différences de vitesse entre PostgreSQL6.3, MySQL 3.22.1, EMPRESS 6.10 et SOLID Server. L'autre comparatif montre ses concurrents sous Windows : IBM db2, Informix 7.30C1, Microsoft SQL server 7.00, Oracle 8.0.3 et Sybase entreprise 11.5.

Nous constatons que MySQL est plus rapide que les autres bases de données sur plus d'un point, même si celui-ci ne dispose pas de toutes les fonctionnalités qu'a par exemple, PostgreSQL (MySQL ne gère pas les bases de données étendues). Cependant, pour l'utilisation que nous en ferons pour le GrAnd Site (base redonnée des utilisateurs, etc...), MySQL devrait correspondre à nos besoins.

 

 

3. Interfaçage serveur WEB/Base de données

Nous allons devoir choisir un outil qui, via le serveur Apache, pourra accéder aux bases de données mais aussi rendre l'élaboration et la gestion du site plus aisée.

Ces outils devront:
· pouvoir réaliser l'interfaçage avec la base de données,
· être très simple d'utilisation,
· être sécurisés,
· être fiables.

Les outils disponibles sont assez nombreux : CGI, PHP3, MS ASP, Cold Fusion…

 

a) Description des outils

· CGI (Common Gateway Interface)
Le CGI est la norme pour un serveur Web afin de passer la requête d'un client à une application. Ce programme peut être écrit en langages " compilés " (par exemple : C/C++...) ou interprétés (Java, Perl...) et est exécuté par l'intermédiaire du serveur WEB.
Le principal défaut du CGI est qu'il ne permet pas de mélanger de l'HTML avec le code source. S'il est écrit en C/C++, il faut recompiler à chaque modification du source. Ces deux défauts rendent le développement des CGI plus lent et moins facile que les langages " script ". Si le CGI est écrit en Java, le code est exécuté par la machine cliente, ce qui ne permet pas une sécurité élevée.

· PHP3 (Hypertext Processor)
Le PHP (www.php3.com) est un langage script dont l'interpréteur peut être compilé avec le serveur Apache ou alors utilisé en tant que module (moins sécurisé). La particularité du PHP est qu'il a une syntaxe très proche du C, ce qui permet une utilisation quasi instantanée pour un utilisateur du C.
Le PHP permet de gérer une multitude de bases de données (MySQL, PostgreSQL, Oracle, ODBC, Solid, dBase…). Il permet l'envoi de mails, la gestion de serveurs IMAP, l'exécution de commandes UNIX, etc.… Un autre point fort de ce langage est qu'il est possible de mélanger le code HTML avec le code PHP dans une même page (le PHP s'utilise dans une page HTML (avec l'extension .php3), avec les balises qui conviennent).
Lorsqu'il est exécuté, le serveur ne renvoie que la sortie du code vers le navigateur client (particularité des langages script exécutés côté serveur), cela permet une plus grande sécurité.
Le développement d'une page en PHP est relativement aisé (même si le développement se fait en mode texte) car, outre la possibilité de mélange avec l'HTML, il n'est pas nécessaire de recompiler le code (langage script, donc interprété).
Le PHP est de plus en plus utilisé sur le WEB comme le montre cette enquête du moteur de recherche NetCraft (www.netcraft.com).

Comme la plupart des logiciels créés pour UNIX (le PHP3 peut aussi être utilisé sous Windows), le PHP est gratuit.

· ASP (Active Server Page)
L'ASP est une page HTML contenant un ou plusieurs scripts qui sont exécutés par un serveur Web Microsoft (pas avec Apache) avant d'être envoyé vers le client. L'ASP est un composant du MS IIS (Microsoft Internet Information Server).
On peut créer un fichier ASP en incluant un script écrit en VisualBasicSript ou JavaScript dans un fichier HTML et en ajoutant le suffixe " .asp ".
L'ASP permet même un développement graphique de sites dynamiques avec des outils adaptés comme FrontPage. Mais le développement en pur ASP pour des manipulations un peu plus délicates, qui sortent de l'ordinaire, se fait avec un éditeur de textes, comme pour les autres langages.
Comme nous avons choisi un serveur sous Linux, nous ne pourrons pas utiliser l'ASP, car il n'est pas encore disponible pour Linux (fin 1999).

· Cold Fusion
Cold Fusion (www.allaire.com) permet un interfaçage simple entre des pages Web et des bases de données relationnelles. Cold Fusion permet en outre de collecter des informations et de les afficher dynamiquement, d'envoyer des mails, de générer des graphes, etc...
L'inconvénient est qu'il n'est disponible que pour Windows 95 et 98 (serveur uniquement sur Solaris pour UNIX). De plus, le serveur coûte de $1300 (pour la version " professionnal " pour Windows) à $3500 (pour la version " Interprise " pour Windows ou Solaris).

 

b) Choix du langage

D'après les descriptions des alternatives vues ci-dessus, nous choisirons le langage script PHP3 (Hypertext Processor) car il permet un développement rapide et aisé. De plus, la manipulation de diverses bases de données est possible et très simple. Le PHP3 est un logiciel gratuit et fiable (si l'on se fie au nombre grandissant de sites qui l'utilisent).

 

 

4. Qu'est-ce que le PHP3 ?

Le PHP3 est un langage script qui sera interprété par un module du serveur HTML. La caractéristique la plus importante du PHP3 est sa capacité d'intégrer des bases de données. Il est donc très simple d'écrire des pages HTML gérant des bases de données. Les bases de données actuellement supportées sont :
· Oracle
· Sybase
· mSQL
· MySQL
· Solid
· ODBC
· PostgreSQL
· Adabas D
· FilePro
· Velocis
· Informix
· dBase
· Unix dbm

 

a) Brève histoire du PHP

Le PHP a été créé au cours de l'année 1994 par Rasmus Lerdorf. Les premières versions ne furent utilisées que pour ses pages personnelles. La première version distribuée apparue un an plus tard sous le nom de " Personal Home Page Tools ". Elle consistait en un programme qui traduisait un assez grand nombre de macros. Le PHP fut réécrit au milieu de l'année 95 et fut nommée " PHP/FI version 2 " ; FI (Form Interpreter) vient d'un autre package écrit par Rasmus Lerdorf. Ce dernier permettait d'interpréter des données contenues dans des formulaires HTML. Un support mSQL fut également rajouté.
En 1996, le PHP/FI était utilisé par environ 15000 sites dans le monde, ce nombre ne cessera d'augmenter. Mi-97, on compte 50000 sites qui l'utilisent.
Depuis la version 2 du PHP/FI, d'autres programmeurs (Zeev Suraski et Andi Gutman) on réécrit le traducteur pour parvenir à la version 3.
Aujourd'hui, beaucoup de supports ont été ajoutés, notamment avec d'autres logiciels commerciaux. On estime le nombre de sites utilisant le PHP à 150000...

 

b) Caractéristique

· La gestion d'un serveur IMAP
Si lors de l'installation du PHP, on précise que l'on veut utiliser le support IMAP, on aura alors la possibilité d'utiliser des fonctions permettant d'effectuer de multiples opérations sur le serveur IMAP. On pourra obtenir la liste des en-têtes des messages, les messages complets, de créer d'autres boîtes aux lettres (que l'on pourra considérer comme des répertoires de stockage), de supprimer, déplacer, copier des messages, etc...

· L'authentification HTTP
L'authentification HTTP ne peut être possible que si le PHP fonctionne avec Apache. Si cela est le cas, il est alors possible de demander une authentification au client ; cela se traduit par l'apparition d'une fenêtre de type Username/Password.
Une fois que l'utilisateur a donné un nom et un mot de passe, l'URL contenu dans le script PHP sera rappelé et des variables ($PHP_AUTH_USER, $PHP_AUTH_PW et $PHP_AUTH_TYP) seront mises à jour.

· Téléchargement de fichiers
Le PHP est capable de recevoir des requêtes de téléchargement de fichier d'un navigateur compatible RFC-1867. Cette caractéristique permet aux personnes de télécharger aussi bien des fichiers textes que des fichiers binaires. Avec l'authentification du PHP et ses fonctions logiques, on a le contrôle total sur les permissions des clients de télécharger tel ou tel fichier.

· Support des cookies HTTP
Les cookies sont un mécanisme pour stocker des données dans le navigateur connecté dans le but de suivre ou d'identifier l'utilisateur. Chaque cooky envoyé chez un client est automatiquement retourné dans une variable PHP (comme les méthodes GET et POST des formulaires).

· Création dynamique de GIF
Outre ses possibilités à générer dynamiquement des pages HTML, le PHP peut aussi créer dynamiquement des images GIF. Cela peut être utile si, par exemple, on veut afficher un graphique de statistiques, avec des données qui varient au cours du temps (graphique représentant le nombre de connexions au site par exemple).

 

 

5. Serveurs de courrier électronique

Le site disposera d'une interface Mail/WEB permettant aux utilisateurs d'avoir leur propre boîte aux lettres (nous verrons plus loin son fonctionnement) ; pour que cela soit possible, GrAnd Site devra disposer d'un serveur SMTP (pour l'envoi de courriers) et de serveurs POP et/ou IMAP.

 

a) Serveur SMTP (Simple Mail Transfert Protocol)

Dès qu'il est question de courrier sous UNIX, Sendmail (www.sendmail.org) est le standard. La conception de Sendmail fait qu'il est capable d'administrer le courrier électronique de petite (une simple machine) à très grande échelle (campus, entreprise...). Il existe d'autres serveurs de courriers tels que qmail (www.qmail.org) ou smail mais tous ces serveurs sont tous plus ou moins équivalents. Je n'ai pas fait un comparatif de ces logiciels pour orienter mon choix, ma décision a été guidée par le fait que Sendmail est le plus répendu et que sa présentation et sa description nous ont été faites lors de notre formation à l'IUP.
Pour la configuration de Sendmail, c'est le kit Jussieu (www.jussieu.fr) qui sera utilisé. Ce kit permet une configuration plus aisée que l'édition " manuelle " du fameux sendmail.cf. De plus, la manipulation du kit Jussieu a été vue en cours d'IUP3.
Pour délivrer les messages, Sendmail utilise un autre programme : procmail. La liaison avec notre serveur POP sera faite à l'aide de fetchmail.

 

b) Serveurs POP et IMAP

Les serveurs POP et IMAP permettent la distribution et la gestion des boîtes aux lettres. Ces deux protocoles ont leurs avantages et leurs inconvénients, cependant ils seront tous deux installés sur le serveur ; nous allons voir les raisons qui nous ont poussés à faire ce choix à l'aide des deux brèves descriptions (ci-dessous), de ces deux types de serveurs.

· Différences entre mode ligne et mode hors-ligne :
Mode hors-ligne : Le mode hors-ligne est utilisé pour la récupération de courrier vers une machine cliente unique. Le mode hors-ligne donne satisfaction aux personnes utilisant toujours la même machine cliente ; il n'est pas adapté pour l'accès à une boîte aux lettres contenant des messages récents ou des copies de messages expédiés depuis plusieurs machines à différents moments.
La qualité majeure de l'accès hors-ligne est la minimisation de l'usage des ressources du serveur et du temps de connexion lorsqu'il se fait via une ligne téléphonique puisqu'il donne un temps de connexion minimal.

Mode ligne : Ce mode permet un accès interactif à de multiples boîtes aux lettres depuis plusieurs clients distincts. L'utilisateur a donc la possibilité d'utiliser différents ordinateurs à différents instants. Il a même la possibilité d'utiliser des machines " sans donnée " (" data-less "), comme on en trouve dans les laboratoires. On peut aussi avoir accès à plusieurs boîtes aux lettres indépendamment de la plate-forme.

· Serveur POP (Post Office Protocol) :
Le serveur POP a été conçu pour permettre le traitement hors-ligne (ou déconnecté) du courrier électronique. Le courrier est délivré à un serveur partagé et un micro-ordinateur personnel se connecte périodiquement au serveur à l'aide d'un programme client pour rapatrier tous les courriers en attente vers la machine de l'utilisateur. Souvent les programmes clients détruisent le courrier sur le serveur, mais cela n'est pas obligatoire.
Le mode d'accès hors-ligne peut être vu comme un service de stockage et de réexpédition, destiné à faire passer le courrier, à la demande d'un serveur intermédiaire vers la machine du destinataire.
En mode ligne, POP ne dispose pas de certaines fonctions contrairement à IMAP, de plus il reste " lourd " dans ce mode.
Malgré cela, POP reste tout de même le plus employé par les clients de courrier. Ceci est dû à la facilité d'implémenter ce protocole dans un programme.

· Serveur IMAP (Internet Message Access Protocol) :
Le serveur IMAP dispose de grandes capacités aussi bien en mode ligne qu'en mode hors-ligne. IMAP s'inscrit dans un modèle client-serveur, dans lequel le client peut demander les en-têtes des messages au serveur, les corps de certains messages, ou encore la recherche de messages selon certains critères. Les messages peuvent être marqués par différents drapeaux d'état (tels que supprimé ou répondu), et ils restent sur le serveur jusqu'à ce que le client demande explicitement leur élimination.
En somme, IMAP est conçu pour la manipulation de boîtes aux lettres distantes comme si elles étaient locales.

· Conclusion :
Nous venons de voir que ces deux types de serveurs possèdent chacun leurs qualités. C'est pourquoi il semble plus sage d'utiliser les deux, les clients POP étant les plus répandus ; l'utilisation du serveur POP permettrait à un plus grand nombre d'utilisateurs d'avoir accès à leurs boîtes à distance.
Le serveur IMAP permettant un nombre d'opérations plus grand, il pourra être utilisé lors du développement de l'interface mail/Web.
Les serveurs POP et IMAP utilisés sont les serveurs POP3 et IMAP livrés avec la distribution RedHat 5.2. Il en existe bien sûr d'autres, tels que IDS POP (www.nodomainname.net/software/ids-pop/).