Choix des serveurs de GrAnd Site
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.
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/).