/usr/share/doc/HOWTO/fr-html/WWW-mSQL-HOWTO.html is in doc-linux-fr-html 2013.01-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.71">
<title>Serveur Web de Base de Données mSQL / perl
HOWTO</title>
</head>
<body>
<h1>Serveur Web de Base de Données mSQL / perl HOWTO</h1>
<h2>par <a href="mailto:corff@zedat.fu-berlin.de">Oliver
Corff</a>,<br>
version française <a href=
"mailto:Nicolas.Caillaud@mail.dotcom.fr">Nicolas Caillaud</a></h2>
v0.1, 17 September 1997
<hr>
<em>Ce Mini HOWTO, très largement inspiré de
l'article de Michael Schilli <code>Gebunkert : Datenbankbedienung
mit Perl und CGI</code>, publié dans le magazine
informatique allemand iX du mois d'aout 1997, explique comment
construire une base de données client/server SQL sur le Web,
utilisant HTML pour l'interface utilisateur.</em>
<hr>
<h2><a name="s1">1. A propos de ce Document</a></h2>
<h2><a name="ss1.1">1.1 Lecteurs concernés</a></h2>
<p>Ce document devrait être utile à ceux qui veulent
mettre en place un serveur de base de données sur le Web,
mais qui ne savent pas quels logiciels sont nécessaires, ni
comment les installer. Il fournit toutes les informations utiles
pour faire fonctionner une base de données SQL sur un
serveur Web ; il <em>ne</em> rentre <em>pas</em> dans les
détails de la programmation CGI, ni n'explique le langage
SQL. D'excellents ouvrages existent sur ces sujets, et le but de ce
document est seulement de fournir une plate-forme sur laquelle un
utilisateur pourra étudier la programmation CGI et le
langage SQL.</p>
<p>Pour faire tourner un système SQL sur une petite
échelle (et non pas l'exemple classique du système de
réservation d'une importante compagnie aérienne, ou
le système de gestion de base de données d'une
mission spatiale), il suffit d'avoir les logiciels décrits
dans ce document, et la documentation les accompagnant. Le manuel
utilisateur de msql (la base de données décrite ici)
fournit suffisamment d'informations sur SQL pour vous permettre de
construire votre propre base.</p>
<p>Le lecteur doit savoir comment récupérer des
fichiers par <code>ftp</code> s'il n'a pas les CD-ROM
adéquats, et comment construire des exécutables
à partir des fichiers sources. En tout état de cause,
toutes les étapes décrites dans ce document ont
été testées sur un système réel,
et devraient fonctionner sur le système du lecteur.</p>
<h2><a name="ss1.2">1.2 Conventions typographiques</a></h2>
<p>Une commande utilisateur :</p>
<pre>
# make install
</pre>
<p>Affichage d'un programme :</p>
<blockquote>
<pre>
<code>Program installed. Read README for details on how to start.
</code>
</pre></blockquote>
<p>Exemple de fichier de code :</p>
<hr>
<pre>
# Un commentaire
char lettre;
</pre>
<hr>
<h2><a name="s2">2. Introduction</a></h2>
<p>On peut raisonnablement supposer que des bases de données
contenant de gros volumes de données, ou un schéma
relationnel compliqué (comme, par exemple, une base lexicale
pour un langage parlé), doivent être accessibles
à beaucoup d'utilisateurs à la fois. De même,
il doit être possible d'utiliser diverses plates-formes
matérielles et logicielles existantes pour construire le
système final. Pour réduire les coûts de mise
en oeuvre, une seule partie du système a réellement
besoin de puissance : le serveur de la base de données ; les
stations utilisateurs doivent seulement afficher des données
et accepter des commandes utilisateurs, mais le traitement
proprement dit est fait sur une seule machine, justifiant ainsi le
terme "base de données client - serveur". De plus,
l'interface utilisateur doit être facile à configurer,
et requérir le moins de traitement possible sur le
client.</p>
<p>Les éléments suivants (protocoles, logiciels et
plus généralement concepts) sont utilisés pour
construire un système conforme à ces critères
:</p>
<dl>
<dt><b>Linux</b></dt>
<dd>
<p>est le système d'exploitation. Il s'agit d'une
implémentation stable d'Unix, multi-utilisateurs,
multi-tâches, avec support réseau complet (TCP/IP
entre autres). A part le coût du support et de la
transmission, il est gratuit et livré sous forme de
distributions, qui incluent généralement
l'indispensable, du Système d'Exploitation lui-même au
traitement de texte, outils de développement logiciel,
langage de script, générateurs d'interfaces, etc.</p>
</dd>
<dt><b>HTML</b></dt>
<dd>
<p>Le langage HTML (HyperText Markup Language) est utilisé
pour construire des interfaces de systèmes réseaux
comme des Intranets, des serveurs Web (WWW). HTML est
extrêmement simple et peut être
généré à partir de n'importe quel
éditeur de texte ASCII.</p>
</dd>
<dt><b>Navigateurs</b></dt>
<dd>
<p>Les navigateurs sont des applications en mode texte (par exemple
Lynx) ou en mode graphique (par exemple Mosaic, Netscape, Arena,
etc.) destinées à la lecture et à l'affichage
de documents HTML. C'est le seul logiciel directement
manipulé par l'utilisateur de la base de données.
Grâce aux navigateurs, on peut afficher différents
types de données (texte ou images), et communiquer avec des
serveurs HTTP (voir plus loin), hébergés par à
peu près n'importe quel modèle d'ordinateur sur
lequel un navigateur est disponible.</p>
</dd>
<dt><b>Serveurs HTTP</b></dt>
<dd>
<p>Un serveur HTTP fournit l'accès à une zone de
l'ordinateur contenant les données publiques d'un
réseau. Il supporte le protocole HTTP et fournit
l'information demandée par l'utilisateur.</p>
</dd>
<dt><b>SQL</b></dt>
<dd>
<p>SQL (Structured Query Language) est un langage de manipulation
de données dans une base relationnelle. Sa grammaire est
très simple et constitue un standard largement
supporté dans l'industrie. Les bases de données SQL
sont au coeur même du concept classique de base de
données Client - Serveur. Des systèmes SQL reconnus
existent, comme Oracle, Informix, etc. ; on trouve aussi des bases
comme msql, mysql, postgresql, pratiquement gratuites lorsqu'elles
sont utilisées dans un cadre scolaire ou universitaire.</p>
</dd>
<dt><b>CGI</b></dt>
<dd>
<p>CGI (Common Gateway Interface) est l'interface de programmation
entre le système supportant les données (dans notre
cas, le système SQL) et le protocole réseau (HTML,
bien sûr). Les interfaces CGI peuvent être construites
en utilisant beaucoup de langages de programmation, dont l'un des
plus populaires est perl.</p>
</dd>
<dt><b>Perl</b></dt>
<dd>
<p>Perl est un langage de script particulièrement puissant,
qui combine les avantages du C, des différents shells, et
des langages de manipulations de flux comme awk ou sed. Par
exemple, perl possède de nombreux modules de manipulation de
base de données SQL.</p>
</dd>
</dl>
<h2><a name="s3">3. Procédure d'installation</a></h2>
<h2><a name="ss3.1">3.1 Matériel requis</a></h2>
<p>Aucune supposition ne peut être faite sur les besoins en
matériel d'un serveur de base de données. Cela
dépend trop du nombre d'utilisateurs, du type d'application,
de la charge du réseau, etc. Dans un environnement
comprenant peu d'utilisateurs et un trafic réseau faible, un
486 ou équivalent, avec 16 MO de mémoire vive, peut
être suffisant. Linux, le système d'exploitation, est
très efficace en termes de ressources, et peut fournir
suffisamment de puissance pour faire tourner un grand nombre
d'applications en même temps. Bien sûr, un processeur
plus puissant et plus de mémoire vive signifient plus de
puissance, mais la quantité de mémoire vive est plus
importante que le processeur. Plus le système a de
mémoire vive, moins il est obligé, en cas de besoin,
de swapper les processus les plus gourmands en mémoire sur
le disque.</p>
<p>Avec un système équipé de 32 MO de
mémoire vive et d'un bus PCI, les recherches et
opérations de tri peuvent être faites sans avoir
recours au(x) fichier(s) d'échange (swap), donnant
d'excellents résultats.</p>
<p>L'installation décrite dans cet article a
été faite sur un IBM 686 à 133MHz, avec 32 MO
de mémoire vive et un disque dur IDE de 1.2 GO. La suite du
document présente les étapes indispensables à
une installation complète.</p>
<h2><a name="ss3.2">3.2 Logiciel</a></h2>
<p>Les logiciels décrits dans cet article sont disponibles
sur Internet, ou sur CD-ROM. Les produits suivants sont
utilisés :</p>
<ul>
<li>Distribution Red Hat 4.2, parue pendant l'été
1997, disponible sur CD-ROM (Red Hat Linux PowerTools : 6 CD-ROM
complets et prêts à être utilisés) ou sur
Internet, sur le site de <a href="http://www.redhat.com">RedHat</a>
;</li>
<li>Base de données SQL msql : disponible en deux versions.
Les différences entre ces deux versions résident dans
le nombre maximum de transactions supporté, l'interface
d'administration, etc. La version la plus ancienne, 1.0.16, est
disponible sur les sites miroirs de Sunsite. L'exécutable au
format ELF peut être trouvé sur <a href=
"http://sunsite.unc.edu/pub/Linux/apps/database/sql/msql-1.0.16">Sunsite</a>,
ou sur CD-ROM (en l'occurrence le disque 4 de l'InfoMagic Linux
Developper's Resource, ensemble de 6 CD-ROM, décembre 1996),
ou chez <a href="http://www.infomagic.com">InfoMagic</a>. La
version la plus récente, 2.0.1, peut être obtenue
directement de la page Web d' <a href=
"http://www.hughes.com.au">Hughes</a>, en Australie, ou sur de
nombreux sites miroirs dans le monde ;</li>
<li>Perl du CPAM : The Comprehensive Perl Archive Network. Sur le
CD-ROM WalnutCreek, ISBN 1-57176-077-6, mai 1997 ;</li>
<li>L'exemple de programme CGI de Michael Schilli, dans le magazine
informatique iX d'août 1997, pages 150-152, disponible par
<a href="ftp://ftp.uni-paderborn.de/doc/magazin/iX/">ftp</a>.</li>
</ul>
<h2><a name="ss3.3">3.3 Installation de l'OS</a></h2>
<p>Linux est installé à partir de la distribution Red
Hat Linux 4.2. Pour réussir à l'installer, la machine
doit avoir un lecteur de CD-ROM accessible à partir de
MSDOS, un lecteur de CD-ROM bootable, ou bien encore une disquette
de boot préparée selon les instructions du CD
Linux.</p>
<p>Pendant l'installation, l'utilisateur peut sélectionner
et configurer de nombreux paquetages logiciels. Il convient de
sélectionner les suivants :</p>
<ul>
<li>support du protocole TCP/IP</li>
<li>le serveur http Apache</li>
<li>le langage Perl</li>
<li>le système XWindow</li>
<li>les navigateurs Arena (graphique) et Lynx (mode texte).</li>
</ul>
<p>Tous ces paquetages sont fournis avec la distribution Linux. Si
vous ne les installez pas maintenant, vous pourrez le faire plus
tard en utilisant <code>glint</code>, le gestionnaire graphique de
paquetages logiciels. Assurez-vous d'être connecté
comme utilisateur <code>root</code> lorsque vous les
installerez.</p>
<p>Il n'est pas du ressort de cet article de décrire
l'installation réseau, ni la procédure
d'initialisation. Pour cela, consultez la documentation en ligne
(pages de manuel, HTML, texinfo) et imprimée (Bible Linux,
etc.).</p>
<p>La procédure d'installation de Red Hat est très au
point et nécessite peu d'interaction de la part de
l'utilisateur, en dehors des choix courants (les noms de machines,
par exemple). Une fois l'installation terminée, le
système est prêt à tourner.</p>
<p>L'installation de XWindow n'est pas obligatoire pour le serveur,
mais cela rend les accès locaux et les tests plus faciles.
La procédure d'installation de XWindow peut être
conduite par différents programmes ; XF86Setup offre le plus
de facilité d'auto-test, et demande peu de connaissance des
menus détails (la programmation de l'horloge vidéo,
etc.). La seule contrainte est que le logiciel puisse
détecter l'adaptateur vidéo. Des cartes graphiques
accélératrices bon marché (comme les cartes
basées sur le chip Trio S64, avant le S64UV+) fonctionnent
sans aucun problème.</p>
<p>A partir de maintenant, nous supposons que le système
tourne, et que Apache, Perl et XWindow ont été
installés avec succès. Nous supposons de même
que les fichiers et structure de répertoires sont tels que
définis dans l'installation. Enfin, nous laissons le nom de
la machine tel quel, et pour le moment, supposons que c'est
<code>localhost</code>. Nous utiliserons ce nom pour tous les tests
d'installation ; dès que le système fonctionnera, le
véritable nom pourra être ajouté. Notez que
l'installation réseau suppose d'éditer le fichier
<code>/etc/hosts</code>, entre autres. Cela peut être pris en
charge par les outils d'administration fournis à
l'utilisateur root.</p>
<h2><a name="ss3.4">3.4 Le serveur HTTP</a></h2>
<p>Le serveur HTTP fourni avec Linux est Apache, <code>httpd</code>
pour le système. La page de manuel (<code>man httpd</code>)
explique comment installer et démarrer le démon http
(donc http<em>d</em>) mais, comme il a été
indiqué plus haut, si l'installation s'est bien
passée, le serveur HTTP doit tourner. Vérifiez
l'arborescence des répertoires : le répertoire
<code>/home/httpd</code> doit exister, avec trois
sous-répertoires : <code>../cgi-bin/</code>,
<code>../html/</code> and <code>../icons/</code>. Dans
<code>../html/</code>, vous devez trouver un fichier
<code>index.html</code>. Plus tard, nous modifierons ou
remplacerons ce fichier par notre propre <code>index.html</code>.
Toute la configuration se fait dans le fichier
<code>/etc/httpd/conf/</code>. Le système est correctement
préconfiguré et ne doit pas être
modifié, si l'installation s'est faite sans
problème.</p>
<h2><a name="ss3.5">3.5 Les navigateurs</a></h2>
<p>Il existe trois types de navigateurs disponibles sous Linux :
les logiciels purement textuels, comme Lynx, des logiciels simples
et expérimentaux comme Arena (gratuit) et des logiciels
commerciaux, comme Netscape (partagiciel !) avec support de Java
intégré. Alors que Lynx et Arena sont fournis avec
Linux, Netscape doit être récupéré par
d'autres sources. Netscape est disponible sous forme de fichier
binaire précompilé pour Linux sur architecture ix86
et tourne "tel quel" une fois l'archive
décompressée.</p>
<h3>Configuration de Lynx</h3>
<p>Une fois Lynx démarré, il cherche une 'URL par
défaut' qui n'existe pas toujours si le système n'a
pas d'accès Internet permanent. Pour changer cette URL par
défaut (ainsi que d'autres détails de configuration),
l'administrateur doit éditer le fichier
<code>/usr/lib/lynx.cfg</code>. Ce fichier est gros, environ 57000
octets, et contient des informations quelquefois contradictoires.
Il établit son propre répertoire dans
<code>/usr/local/lib</code>. Au début du fichier figure une
ligne commençant par <code>STARTFILE</code>. Remplacez cette
ligne par la suivante : <code>STARTFILE:http://localhost</code>, en
vous assurant qu'il n'y a pas d'espace en trop :</p>
<hr>
<pre>
# STARTFILE:http://www.nyu.edu/pages/wsn/subir/lynx.html
STARTFILE:http://localhost
</pre>
<hr>
<p>Après avoir enregistré le fichier, Lynx doit
maintenant ouvrir notre <code>index.html</code> s'il est
lancé sans argument.</p>
<h3>Configuration d'Arena</h3>
<p>S'il est lancé sans argument, Arena recherche son URL par
défaut. Cette URL est codée en dur dans
l'exécutable, mais peut être redéfinie en
utilisant la variable d'environnement <code>WWW_HOME</code>.
L'administrateur système peut placer la ligne suivante dans
le fichier <code>/etc/profile</code> :
<code>WWW_HOME="http://localhost"</code>. Cette variable doit
être exportée, soit par l'ajout de la ligne
adéquate (<code>export WWW_HOME</code>), soit en ajoutant
<code>WWW_HOME</code> à la ligne d'export courante :</p>
<hr>
<pre>
WWW_HOME="http://localhost"
export WWW_HOME
</pre>
<hr>
<p>A la prochaine connexion, la nouvelle URL par défaut
d'Arena sera connue du système.</p>
<h3>Installation et Configuration de Netscape</h3>
<p>Netscape était un produit commercial, et n'est donc pas
inclus dans les anciennes distributions Linux. Néanmoins, il
est téléchargeable par Internet, ou accessible
à partir de certaines compilations de logiciels sur CD-ROM.
Netscape est fourni sous la forme de fichiers binaires
précompilés pour les plates-formes les plus
courantes. Avant de l'installer, il est utile de créer le
répertoire <code>/usr/local/Netscape</code>, dans lequel
l'archive sera décompactée. Tous les fichiers doivent
rester à cette place (sauf la bibliothèque Java :
suivez les instructions du fichier <code>README</code> fourni avec
les binaires de Netscape), et il suffira de créer un lien
symbolique avec <code>/usr/local/bin</code> par la commande :</p>
<pre>
# ln -s /usr/local/Netscape/netscape .
</pre>
<p>depuis le répertoire <code>/usr/local/bin/.</code></p>
<p>Netscape est maintenant pret à être utilisé,
et peut être configuré par le menu "Options". Dans
"General Preferences", il y a un onglet intitulé
"Appearance", avec un champ de saisie "Home Page Location". Tapez
<code>http://localhost</code>, et n'oubliez pas de sauvegarder les
options (par le menu "Options" -- "Save Options") avant de quitter
Netscape. Au prochain démarrage, Netscape présentera
la page d'accueil d'Apache.</p>
<h2><a name="ss3.6">3.6 Les navigateurs avec Apache</a></h2>
<p>Faites maintenant le premier test d'Apache avec un navigateur :
lancez simplement l'un des navigateurs disponibles, et il affichera
la page d'accueil <code>Apache : Red Hat Linux Web Server</code>.
Cette page indique la localisation des fichiers et d'autres
informations concernant l'installation du serveur http. Si cette
page ne s'affiche pas, vérifiez que les fichiers
cités plus haut sont bien en place et que la configuration
du navigateur est correcte. Fermez les fichiers de configuration
avant de démarrer de nouveau le navigateur. Si tous les
fichiers sont installés et que le navigateur semble
correctement configuré, examinez la configuration du
réseau. Ou bien le nom de votre machine est différent
de celui spécifié lors de la configuration, ou bien
la configuration réseau n'est pas correcte. Il est
particulièrement important que <code>/etc/hosts</code>
contienne au moins la ligne suivante :</p>
<hr>
<pre>
127.0.0.1 localhost localhost.localdomain
</pre>
<hr>
<p>qui suppose que vous pouvez vous connecter localement. Vous
pouvez le vérifier en lançant une commande
réseau qui réclame un nom de machine comme argument,
comme <code>telnet localhost</code> (en supposant que
<code>telnet</code> soit installé). Si cela ne fonctionne
pas, la configuration réseau doit être
controlée avant de continuer l'intallation.</p>
<h2><a name="ss3.7">3.7 La Base de données et son
installation</a></h2>
<p>L'installation de la base de données demande à
peine plus de préparation que les étapes
précédentes. Il y a quelques moteurs de base de
données SQL disponibles, avec des contraintes
d'administration et d'exécution différentes ; l'un
des plus simples est msql, dit aussi "Mini-SQL", écrit par
David Hughes. Msql est un "partagiciel". En fonction de la version
utilisée, les sites commerciaux sont redevables de 250 US$,
voire plus, les utilisateurs privés d'au moins 65 US$, et
seules les institutions scolaires et les entreprises à but
non lucratif peuvent utiliser ce logiciel librement. Les termes
exacts des droits figurent dans la documentation de la base de
données. Les éléments données ici ne
sont qu'indicatifs.</p>
<p>Tout d'abord, voici en quelques mots pourquoi l'auteur a choisi
msql. Il y a tout d'abord une expérience personnelle. Alors
qu'il cherchait une base de données, l'auteur a
trouvé que msql était la plus facile à
installer et à maintenir, et qu'elle couvrait un ensemble
suffisamment large du langage SQL pour convenir à une
utilisation classique. C'est seulement en écrivant ces
lignes que l'auteur a découvert cette éloge dans la
DBI FAQ d'Alligator Descartes (la FAQ interface perl aux bases de
données) :</p>
<blockquote><code>Du point de vue de l'auteur, si le volume de
données est relativement faible, les tables contenant moins
d'1 million de lignes, avec moins de 1000 tables dans une base
donnée, alors msql constitue une solution parfaitement
acceptable. Cette base de données est très bon
marché, extraordinairement solide, et offre un excellent
support, ...</code></blockquote>
<p>Mqsl est disponible en deux versions, msql-1.0.16 et msql-2.0.1,
qui diffèrent par leurs performances (cela n'est sensible
que sur des petits projets) et les logiciels les accompagnant (la
version la plus récente dispose de plus d'outils, de son
propre langage de script, etc.). Nous décrirons les deux
versions de msql, car leurs installations se distinguent par
quelques aspects.</p>
<h3>Installation de msql-1.0.16</h3>
<p>Msql est disponible sous forme de sources et de binaires
précompilés au format ELF. L'utilisation des binaires
ELF rend l'installation plus simple, car l'archive
<code>msql-1.0.16.ELF.tgz</code> contient une copie de
l'arborescence d'installation, pour que les répertoires
soient générés correctement lors du
décompactage dans le répertoire <code>/</code>.</p>
<p>Si vous décidez de compiler msql-1.0.16 vous-même,
et que vous voulez utiliser le paquetage MsqlPerl plutot que
l'interface DBI (voir plus loin une présentation
détaillée des différence entre les deux
stratégies), alors attendez-vous à ce que MsqlPerl
rapporte, lors des tests d'installation, des erreurs dans msql.
Dans ce cas, une correction sera nécessaire,
expliquée dans la documentation MsqlPerl (fichier
<code>patch.lost.tables</code>). En l'occurrence, il faut inclure
les trois lignes suivantes dans <code>msqldb.c</code>, après
la ligne 1400, contenant <code>entry->def = NULL;</code> :</p>
<blockquote>
<pre>
<code>*(entry->DB) = 0;
*entry->table) = 0;
entry->age = 0;
</code>
</pre></blockquote>
<p>Cette partie de code doit maintenant être la suivante
:</p>
<hr>
<pre>
freeTableDef(entry->def);
safeFree(entry->rowBuf);
safeFree(entry->keyBuf);
entry->def = NULL;
*(entry->DB) = 0;
*entry->table) = 0;
entry->age = 0;
</pre>
<hr>
<p>La compilation de msql comprend plusieurs étapes.
Après avoir décompacté l'archive contenant les
sources, il faut créer un répertoire destination.
Cela se fait avec la commande suivante :</p>
<pre>
# make target
</pre>
<p>Si tout se passe bien, le système répond avec</p>
<blockquote>
<pre>
<code>Build of target directory for Linux-2.0.30-i486 complete
</code>
</pre></blockquote>
<p>Vous pouvez maintenant aller dans le répertoire que vous
venez de créer, et taper d'abord la commande</p>
<pre>
# ./setup
</pre>
<p>La séquence <code>./</code> est nécessaire pour
s'assurer que la commande <code>setup</code> exécutée
est bien celle du répertoire courant, et non une autre qui
aurait le même nom. On va maintenant vous poser quelques
questions concernant le répertoire source, et la
localisation du répertoire d'installation. Une fois que ces
questions ont eu leur réponse, le système lance
quelques tests pour vérifier que les logiciels
nécessaires (compilateurs, utilitaires divers, etc.) sont
présents, puis finalement répond</p>
<blockquote><code>Ready to build mSQL.</code>
<p><code>You may wish to check "common/site.h" although the
defaults should be fine. When you're ready, type "make all" to
build the software</code></p>
</blockquote>
<p>Il faut alors taper</p>
<pre>
# make all
</pre>
<p>Si tout fonctionne comme prévu, nous devons alors lire
:</p>
<blockquote><code>make[2] : leaving directory
'/usr/local/Minerva/src/msql' <-- [msql] done</code>
<p><code>Make of mSQL complete. You should now install mSQL using
make install</code></p>
<p><code>NOTE : mSQL cannot be used free of charge at commercial
sites. Please read the doc/License file to see what you have to
do.</code></p>
<p><code>make[1] : Leaving directory
'/usr/local/Minerva/src'</code></p>
</blockquote>
<p>Tous les binaires doivent être accessibles, par exemple en
créant des liens symboliques dans
<code>/usr/local/bin/</code>. Déplacez-vous dans ce
répertoire et tapez la commande</p>
<blockquote><code># ln -s /usr/local/Minerva/bin/*
.</code></blockquote>
<p>après quoi les liens sont correctement construits.</p>
<h3>Test de msql-1</h3>
<p>Après l'installation, il est maintenant possible de
tester le fonctionnement de la base de données. Avant toutes
choses, le serveur doit être démarré.
L'administrateur système, grâce aux privilèges
du compte utilisateur <code>root</code>, lance la commande</p>
<pre>
# msqld &
</pre>
<p>(n'oubliez pas d'ajouter le <code>&</code>, sinon msql ne
tournerait pas en tâche de fond.), après quoi le
message suivant doit apparaître :</p>
<blockquote>
<pre>
<code>mSql Server 1.0.16 starting ...
Warning : Couldn't open ACL file : No such file or directory
Without an ACL file global access is Read/Write
</code>
</pre></blockquote>
<p>Ce message indique que tout fonctionne correctement, à
part la configuration des droits d'accès. Pour le moment, il
suffit de démarrer le serveur msql à partir d'un
shell, mais vous pourrez par la suite vouloir le démarrer
automatiquement au lancement du système. Cette commande doit
alors être ajoutée dans un des scripts du
répertoire <code>rc.d</code>. Seul l'administrateur
système peut lancer la première commande typique
d'une base de données (création de la première
table) :</p>
<pre>
# msqladmimn create inventur
</pre>
msql répond alors <code>Database "inventur" created</code>.
Comme preuve supplémentaire, vous pouvez constater que le
répertoire <code>/usr/local/Minerva/msqldb/</code> contient
maintenant le répertoire <code>../inventur</code>, vide pour
l'intant. Vous pouvez manipuler la nouvelle base avec les outils
d'administration, qui sont décrits en détail dans la
documentation msql.
<h3>Installation de msql-2.0.1</h3>
<p>Une nouvelle version, plus puissante, du serveur mSQL d'Hugues
est maintenant disponible. Son installation est un peu
différente. Installer msql-2 de zéro nécessite
les étapes suivantes. Copiez l'archive à l'endroit
où vous souhaitez l'installer, par exemple
<code>/usr/local/msql-2/</code>, puis décompressez-la :</p>
<pre>
# tar xfvz msql-2.0.1.tar.gz
</pre>
<p>Positionnez vous à la racine de l'arborescence
d'installation et tapez</p>
<pre>
# make target
</pre>
<p>Placez vous dans le répertoire <code>targets</code> et
vérifiez le type de votre machine. Il devrait y avoir un
nouveau sous-répertoire <code>Linux-<em>(votre
version)-votre cpu)</em></code>. Allez dans ce répertoire et
lancez l'utilitaire de configuration qui s'y trouve :</p>
<pre>
# ./setup
</pre>
<p>Il y a aussi un fichier <code>site.mm</code> qui peut être
édité. Peut-être avez-vous déjà
utilisé le répertoire
<code>/usr/local/Minerva/</code> et souhaitez-vous le conserver
intact ? Dans ce cas, changez la ligne <code>INST_DIR=...</code>
pour indiquer le répertoire destination qui vous convient.
Sinon, ne changez rien.</p>
<p>Maintenant, vous pouvez contruire la base de données
:</p>
<pre>
# make
# make install
</pre>
<p>Si tout marche bien, vous verrez ce message :</p>
<blockquote>
<pre>
<code>[...]
Installation of mSQL-2 complete.
*********
** This is the commercial, production release of mSQL-2.0
** Please see the README file in the top directory of the
** distribution for license information.
*********
</code>
</pre></blockquote>
<p>Une fois que tout est installé correctement, vous devez
vous préoccuper de certains détails d'administration.
C'est ici que les différences avec msql-1 commencent.
D'abord, un utilisateur <code>msql</code> est créé,
et est responsable de l'administration de la base de
données.</p>
<pre>
# adduser msql
</pre>
<p>Maintenant, vous devez changer les propriétaire et groupe
de tous les fichiers dans le répertoire de mSQL en tapant
:</p>
<pre>
# cd /usr/local/Minerva
# chown -R msql:msql *
</pre>
<p>Enfin, vous pouvez créer les liens symboliques pour tous
les éxecutables de la base de données dans
<code>/usr/local/bin/</code> en lançant la commande :</p>
<pre>
# ln -s /usr/local/Minerva/bin/* .
</pre>
<h3>Test de msql-2</h3>
<p>Démarrez maintenant le serveur de la base en tapant la
commande <code>msql2d &</code>, vous devriez obtenir cette
réponse :</p>
<blockquote>
<pre>
<code>Mini SQL Version 2.0.1
Copyright (c) 1993-4 David J. Hugues
Copyright (c) 1995-7 Hughes Technologies Pty. Ltd.
All rights reserved.
Loading configuration from '/usr/local/Minerva/msql.conf'.
Server process reconfigured to accept 214 connections.
Server running as user 'msql'.
Server mode is Read/Write.
Warning : no ACL file. Using global read/write access.
</code>
</pre></blockquote>
<p>Tout est parfait. La base est compilée et
installée, et nous pouvons maintenant continuer avec les
modules perl puisqu'ils demandent la présence d'un serveur
de base de données opérationnel pour les tests.</p>
<p>Au fait, ce moment est bien choisi pour imprimer la
documentation complète livrée avec msql-2.0.1 :</p>
<pre>
# gzip -d manual.ps
# lpr manual.ps
</pre>
<p>Nous pouvons maintenant poursuivre la mise en place des
interfaces, mais il est judicieux de laisser le nouveau serveur SQL
tourner: cela ne fera que faciliter les tests des
bibliothèques d'interface.</p>
<h2><a name="ss3.8">3.8 Les différentes Interfaces :
DBI/mSQL, MsqlPerl, et Lite</a></h2>
<p>Une phrase fréquemment citée dans le Camel Book
(la documentation de référence de perl) affirme qu'il
y a toujours plusieurs manières d'obtenir un résultat
avec perl. Hélas, cela est vrai aussi avec notre
application. Il y a trois méthodes pour accéder
à une base de données msql par l'intermédiaire
de CGI. Tout d'abord, la question est de savoir s'il faut ou non
utiliser perl. Dans le premier cas (supposé dans ce
document), il y a encore le choix entre deux types
complètement différents d'interface. Si nous
n'employons pas perl, il reste la solution d'employer le langage de
script propre à msql, appelé Lite, qui est
relativement proche du langage C, en plus simple.</p>
<h3>DBI et DBD-mSQL</h3>
<p>Au moment de la rédaction de ce document, c'est
l'utilisation de l'interface générique de base de
données appelée DBI qui est
préférée. DBI a quelques avantages. Elle
fournit un contrôle d'accès standard à de
nombreuses base de données commerciales, et ce avec le
même ensemble de commandes. La base de données en
fonctionnement sur un système donné est alors
interrogée par une interface qui masque efficacement les
caractéristiques spécifiques de cette base au
programmeur. Ainsi, DBI fournit une passerelle pratique pour
travailler avec différentes bases de différents
auteurs. Avec un seul script, il est possible de communiquer avec
plusieurs bases de données différentes. Le lecteur
interessé peut consulter la DBI-FAQ pour plus de
détails. Il y a cependant un inconvénient :
l'interface DBI est en cours de développement et aligne les
versions à une allure galopante (quelques fois avec
plusieurs mises à jour par mois). De même, les pilotes
de bases de données sont fréquemment mis à
jour, et peuvent être basés sur des versions
spécifiques de l'interface de base de données. Les
utilisateurs faisant une première installation doivent se
limiter aux numéros de version donnés dans ce
document, car d'autres versions peuvent poser des problèmes
de compilation et de test, dont la résolution n'est pas une
affaire de néophyte.</p>
<h3>MsqlPerl</h3>
<p>MsqlPerl est une bibliothèque permettant l'accès
direct à msql à partir de programmes écrits en
perl. Elle n'utilise pas l'interface DBI et est très
compacte. Bien qu'elle fonctionne très bien avec les deux
versions de msql, son usage n'est pas conseillé par rapport
à l'interface DBI, qui tend à se
généraliser. Néanmoins, suivant le
système, c'est une alternative intéressante, car la
bibliothèque est petite et facile à installer.
Notamment, il y a moins de dépendance par rapport aux
numéros de version que celles constatées entre DBI et
les pilotes de base de données.</p>
<h3>Le langage de commande propre de msql : Lite</h3>
<p>Enfin, msql-2 fournit son propre langage de commande : Lite. Ce
langage est proche du C, assaini et complété avec
quelques fonctionnalités du type 'shell' (d'une certaine
manière, c'est une version spécialisée de
perl). Lite est un langage simple et bien documenté dans le
manuel msql-2. Le paquetage msql-2 livre aussi en exemple un
application utilisant Lite.</p>
<p>Nous ne décrirons pas ici Lite, car il est trop
spécifique de msql-2 (et déjà documenté
!), et parce que le lecteur est censé avoir un certain
intérêt pour perl, et en avoir de bonnes notions.
Néanmoins, il est recommandé d'y jeter un coup d'oeil
: il peut s'avérer la solution idéale dans un
environnement ne mettant en oeuvre que msql-2 (en supposant donc
qu'aucune autre base n'est utilisée), grâce à
sa simplicité.</p>
<h2><a name="ss3.9">3.9 La solution standard : DBI et
DBD-msql</a></h2>
<p>Nous supposons que perl a été installé
pendant la configuration du système, ou en utilisant le
gestionnaire de paquetage mentionné plus haut. Aucun
détail supplémentaire ne sera donné ici.
Néanmoins, nous allons d'abord tester si notre version de
perl est récente :</p>
<pre>
# perl -v
</pre>
<p>perl doit répondre avec le message suivant :</p>
<blockquote>
<pre>
<code>This is perl, version 5.003 with EMBED
Locally applied patches:
SUIDBUF - Buffer overflow fixes for suidperl security
built under linux at Apr 22 1997 10:04:46
+ two suidperl security patches
Copyright 1987-1996, Larry Wall
[...]
</code>
</pre></blockquote>
<p>Jusque là, tout va bien. L'étape suivante consiste
à installer les bibliothèques générales
perl pour les bases de données (DBI), le pilote msql
(DBD-mSQL) et CGI. Le pilote CGI est nécessaire dans tous
les cas. Les archives suivantes sont utilisées :</p>
<ol>
<li>DBI-0.8.1.tar.gz</li>
<li>DBD-mSQL-0.65.tar.gz</li>
<li>CGI.pm-2.31.tar.gz (ou plus récent></li>
</ol>
<p>Une précision est nécessaire ici pour les
débutants : le test décrit ici fonctionne très
bien à condition d'utiliser <em>exactement</em> les versions
recommandées de logiciels ; des combinaisons d'autres
versions peuvent échouer à un moment ou à un
autre. Le déboguage de combinaisons de versions
incompatibles est une affaire de spécialistes des interfaces
d'appel. Quelquefois, seule une méthode change de nom alors
qu'elle fait la même chose, mais d'autres fois, les
structures internes changent de manière significative. Donc,
encore une fois, tenez-vous en aux numéros indiqués
de versions si vous ne voulez pas de problème, et ce
même si vous constatez que les versions ont encore
changé dans l'intervalle. Il est normal de voir les versions
évoluer rapidement, et vous devez vous attendre à des
problèmes en installant d'autres versions que celles
conseillées ici.</p>
<p>Il est très important que le pilote de base pour mSQL
(DBD-mSQL) soit installé <em>après</em> l'interface
générique DBI.</p>
<p>Nous commençons par créer le répertoire
<em>/usr/local/PerlModules</em> car il est important de conserver
l'arborescence initiale de perl intacte. Nous pourrions aussi
choisir un autre nom de répertoire ; cela n'a strictement
aucune importance, malheureusement aucune recommandation n'est
faite dans les fichiers README des différents modules perl.
Une fois recopiées les archives précédemment
citées dans <code>/usr/local/PerlModules</code>, nous les
décompactons en tapant</p>
<blockquote>
<pre>
<code># tar zxvf [archive-file]
</code>
</pre></blockquote>
<p>pour chacune des trois archives. N'oubliez pas d'indiquer le
vrai nom de l'archive à la commande <code>tar</code>. Le
processus d'installation de ces trois archives est très
standard ; seuls les messages de sortie concernant les
étapes les plus importantes sont reproduits ici.</p>
<h3>Installation de l'interface perl de base de données
DBI</h3>
<p>L'interface de la base de données doit avoir
été installée avant le pilote
spécifique à la base. Le décompactage de
l'archive DBI crée le répertoire
<code>/usr/local/PerlModules/DBI-0.81/</code>. Placez-vous dans ce
répertoire. Il y a un fichier <code>README</code> (que vous
devriez lire) et un makefile spécifique pour perl.
Maintenant, tapez la commande</p>
<pre>
# perl Makefile.PL
</pre>
<p>Le système doit répondre avec un long message dont
la partie la plus importante figure ci-dessous :</p>
<blockquote>
<pre>
<code>[...]
MakeMake (v5.34)
Checking if your kit is complete ...
Looks good
NAME => q[DBI]
PREREQ_PM => { }
VERSION_FROM => q[DBI.pm]
clean => { FILES=>q[$(DISTVNAME) /] }
dist => { DIST_DEFAULT=>q[clean distneck disttest [...]
Using PERL=/usr/bin/perl
WARNING! By default new modules are installed into your 'site_lib' directories. Since site_lib directories
come after the normal library directories you MUST delete old DBI files and directories from your 'privlib'
and 'archlib' directories and their subdirectories.
Writing Makefile for DBI
</code>
</pre></blockquote>
<p>Comme le programme l'indique, tout va bien, et nous pouvons
poursuivre avec l'étape suivante :</p>
<pre>
# make
</pre>
<p>Si aucun message d'erreur n'apparaît (les traces
détaillées affichées sur l'écran
<em>ne</em> sont <em>pas</em> un message d'erreur), nous pouvons
tester la librairie nouvellement installée avec la
commande</p>
<pre>
# make test
</pre>
<p>Sur l'affichage, guettez les lignes suivantes (vous pouvez
toujours revenir en arrière avec la touche
<code>[Shift]-[PgUp]</code>) :</p>
<blockquote>
<pre>
<code>[...]
t/basics............ok
t/dbidrv............ok
t/examp.............ok
All tests successful.
[...]
DBI test application $Revision: 1.20 $
Switch: DBI-0.81 Switch by Tim Bunce, 0.81
Available Drivers: ExampleP, NullP, Sponge
ExampleP: testing 2 sets of 5 connections:
Connecting... 1 2 3 4 5
Disconnecting...
Connecting... 1 2 3 4 5
Disconnecting...
Made 10 connections in 0 seconds ( 0.00 usr 0.00 sys = 0.00 cpu)
test.pl done
</code>
</pre></blockquote>
<p>La dernière étape est l'installation de tous les
fichiers dans leurs répertoires respectifs. La commande
suivante s'en occupe :</p>
<pre>
# make install
</pre>
<p>Il n'y a plus rien à faire. Si pour quelque raison que se
soit, l'installation échoue et que vous vouliez la
recommencer, n'oubliez pas de taper d'abord la commande</p>
<pre>
# make realclean
</pre>
<p>Cela supprimera toutes les traces laissées par la
précédente installation. Vous pouvez aussi supprimer
les fichiers installés en copiant le contenu de
l'écran (montré ici abrégé)</p>
<blockquote>
<pre>
<code>Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBIXS.h
Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.so
Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.bs
[...]
Writing /usr/lib/perl5/site_perl/i386-linux/auto/DBI/.packlist
Appending installation info to /usr/lib/perl5/i386-linux/5.003/perllocal.po
</code>
</pre></blockquote>
<p>dans un fichier, en remplaçant <code>Installing</code>
par <code>rm</code>. Si vous avez appellé ce fichier
<code>uninstall</code> vous pouvez alors taper</p>
<pre>
# . uninstall
</pre>
<p>ce qui effacera les derniers fichiers installés.</p>
<h3>Le pilote msql de perl : DBD-mSQL</h3>
<p>Le pilote msql pourra être installé seulement
<em>après</em>l'installation réussie de l'interface
perl générique de base de données.</p>
<p>Les étapes de l'installation sont pratiquement les
mêmes que les précédentes, donc commencez par
taper</p>
<pre>
# perl Makefile.PL
</pre>
<p>Là, le système doit répondre avec un
avertissement vous demandant de lire la documentation accompagnant
le logiciel. Ensuite, il va détecter où se trouve
msql, et vous demande quelle version vous utilisez :</p>
<blockquote>
<pre>
<code>$MSQL_HOME not defined. Searching for mSQL...
Using mSQL in /usr/local/Hughes
-> Which version of mSQL are you using [1/2]?
</code>
</pre></blockquote>
<p>Entrez la version correcte. Quelques lignes de texte suivent.
Guettez les suivantes :</p>
<blockquote>
<pre>
<code>Splendid! Your mSQL daemon is running. We can auto-detect your configuration.
I've auto-detected your configuration to be running on port: 1114
</code>
</pre></blockquote>
<p>Vous pouvez maintenant tester le pilote en tapant</p>
<pre>
# make test
</pre>
<p>Encore une fois, plusieurs lignes sont affichées. Si
elles se terminent par</p>
<blockquote>
<pre>
<code>Testing: $cursor->func( '_ListSelectedFields' )/ This will fail.
ok: not a SELECT in msqlListSelectedFields!
Re-testing: $dbh->do( 'DROP TABLE testaa' )
ok
*** Testing of DBD::mSQL complete! You appear to be normal! ***
</code>
</pre></blockquote>
<p>tout va bien, et vous pouvez lancer l'installation du pilote en
tapant</p>
<pre>
# make install
</pre>
<p>Vous êtes prêt à continuer et pouvez sauter
le paragraphe suivant.</p>
<h2><a name="ss3.10">3.10 L'interface MsqlPerl</a></h2>
<p>Si vous décidez d'utiliser l'interface globale MsqlPerl,
aucun pilote particulier n'est nécessaire ; seule l'archive
<code>MsqlPerl-1.15.tar.gz</code> est utilisée, puisque,
comme cela a déjà été dit, MsqlPerl
fournit une interface directe entre perl et le serveur de base de
données, sans utiliser l'interface DBI. L'installation et le
test sont très faciles.</p>
<p>Après avoir tapé <code>perl Makefile.PL</code>,
l'utilitaire make peut être activé. Vous devez d'abord
indiquer où se trouve mSQL. S'il est dans
<code>/usr/local/Minerva/</code>, la réponse par
défaut peut être validée.</p>
<p>Ensuite, tapez <code>make test</code>. Avant cela, vous devez
vous assurer qu'il y a bien une base nommée
<code>test</code> et que vous avez les droits d'écriture et
lecture dessus. Cela peut être fait avec</p>
<pre>
# msqladmin create test
</pre>
<h2><a name="ss3.11">3.11 Bibliothèque CGI de perl</a></h2>
<p>L'installation de l'interface CGI de perl est la plus simple des
trois étapes. Lancez les commandes dans l'ordre
donné, et voilà :</p>
<pre>
# perl Makefile.PL
# make
# make install
</pre>
<p>Contrairement aux autres pilotes, cette interface n'a pas
d'option de test (<code># make test</code>), alors que les autres
modules <em>doivent</em> être testés dans tous les
cas.</p>
<p>Un sous-répertoire avec les exemples CGI est
créé. Vous pouvez en copier le contenu vers
<code>/home/httpd/cgi-bin/</code> et utiliser un navigateur pour
jouer avec les scripts.</p>
<h2><a name="ss3.12">3.12 Check-list de l'installation</a></h2>
<p>Nous avons effectué les étapes suivantes, dans cet
ordre:</p>
<ol>
<li>Installation de Linux avec support réseau</li>
<li>Installation d'un serveur http, par exemple Apache</li>
<li>Installation d'un navigateur, par exemple Arena, Lynx ou
Netscape</li>
<li>Installation d'un serveur SQL, par exemple msql</li>
<li>Installation d'une interface perl SQL convenable</li>
<li>Installation des fichiers CGI</li>
</ol>
<p>A la fin, vous devez faire un peu de ménage. Toutes les
arborescences des sources msql et les modules perl peuvent
être détruites sans inconvénient (cependant,
vous ne devriez pas détruire les fichiers archives !)
puisque les binaires et la documentation sont maintenant dans des
répertoires différents.</p>
<h2><a name="s4">4. Un exemple de Base de Données</a></h2>
<p>Après avoir terminé la procédure
d'installation, nous pouvons maintenant lancer l'application
donnée en exemple. En fonction de la version de msql
installée et de l'interface perl utilisée, nous
devrons modifier un peu ce programme.</p>
<p>Tout d'abord, le fichier <code>index.html</code>, dans le
répertoire <code>/home/httpd/html/</code> doit être
modifié pour appeler l'application exemple. Nous pouvons
mettre notre base (que nous pouvons appeler
<code>database.cgi</code> ou <code>inventur.cgi</code>) dans
<code>/home/httpd/html/test</code>.</p>
<p>Nous ajoutons une ligne parmi les suivantes dans
<code>index.html</code> (à choisir, bien sûr, en
fonction des choix d'installation) :</p>
<hr>
<pre>
<LI>Test the <A HREF="test/database.cgi">Database, DBI:DBD-mSQL style!</A>
<LI>Test the <A HREF="test/inventur.cgi">Database, MsqlPerl style!</A>
</pre>
<hr>
<p>Vous ne devez en principe choisir qu'une seule des deux lignes
précédentes, mais vous pouvez, si vous avez
installé les deux types d'interface, laisser les deux lignes
telles quelles. Vous pourrez alors comparer les performances.</p>
<h2><a name="ss4.1">4.1 Adaptation de l'exemple de script pour
MsqlPerl</a></h2>
<p>Il est nécessaire d'indiquer, dans notre exemple de
script, qu'il faut utiliser l'interface MsqlPerl. La modification
doit être faite à plusieurs endroits. D'abord, au
début du fichier, il faut changer la clause <code>use</code>
:</p>
<blockquote>
<pre>
<code>
# use DBI; # Generisches Datebank-Interface
use Msql;
</code>
</pre></blockquote>
<p>Ensuite, à la ligne 27, MsqlPerl n'exige pas la mention
d'un pilote particulier :</p>
<blockquote>
<pre>
<code>
# $dbh = DBI->connect($host, $database, '', $driver) ||
$dbh = Msql->connect($host, $database) ||
</code>
</pre></blockquote>
<p>A partir de la ligne 33 et pour tout le script, changez toutes
les occurrences de <code>do</code> par <code>query</code> :</p>
<blockquote>
<pre>
<code>
# $dbh->do("SELECT * FROM hw") || db_init($dbh);
$dbh->query("SELECT * FROM hw") || db_init($dbh);
</code>
</pre></blockquote>
<p>Enfin, dans le laius MsqlPerl, la ligne 207 peut être mise
en commentaire :</p>
<blockquote>
<pre>
<code>
# $sth->execute || msg("SQL Error: $sth->errstr);
</code>
</pre></blockquote>
<p>De plus, il peut être nécessaire de remplacer tout
les appels <code>errstr</code> tels que celui de la ligne
précédente par <code>errmsg</code>. Cela
dépend de la version utilisée.</p>
<p>Après ces modifications, le script doit tourner
correctement.</p>
<h2><a name="ss4.2">4.2 Adaptation de l'exemple pour
msql-2</a></h2>
<p>La syntaxe SQL a subi des changements durant le
développement de msql-2. Le script original
n'exécutera pas les instructions d'initialisation de la
table, aux lignes 45 -- 48. Le modificateur <code>primary
key</code> n'est plus compris par msql-2, et doit être
supprimé :</p>
<blockquote>
<pre>
<code> $dbh->do(<<EOT) || die $dbh->errstr; # Neue Personen-Tabelle
create table person (
# We do not need the 'primary key' modifier anymore in msql-2!
# pn int primary key, # Personalnummer
pn int, # Personalnummer
name char(80), # Nachname, Vorname
raum int # Raumnummer
)
EOT
$dbh->do(<<EOT) || die $dbh->errstr; # Neue Hardware-Tabelle
create table hw (
# We do not need the 'primary key' modifier anymore in msql-2!
# asset int primary key, # Inventurnummer
asset int, # Inventurnummer
name char(80), # Bezeichnung
person int # Besitzer
)
EOT
</code>
</pre></blockquote>
<p>Malheureusement, ce script particulier acceptera maintenant les
enregistrements avec des numéros personnels identiques ; le
modificateur msql-1 <code>primary key</code> était justement
là pour éviter cela. La documentation msql2 indique
comment utiliser la clause <code>CREATE INDEX</code> pour
créer des entrées uniques.</p>
<h2><a name="s5">5. Conclusion</a></h2>
<p>Si vous avez installé msql-2 sur votre système,
vous pouvez regarder les exemples de programmes écrits avec
Lite, le langage de script de msql-2.</p>
<p>Chaque version de msql est livrée avec un minimum
d'outils d'administration, qui permettent à l'utilisateur de
créer et détruire des tables (<code>msqladmin</code>)
et d'examiner la structure de la base de données
(<code>relshow</code>).</p>
<p>Msql deuxième génération
(c'est-à-dire msql-2) possède quelques utilitaires de
plus : <code>msqlimport</code> et <code>msqlexport</code>. Ils
permettent d'insérer et d'extraire des données de la
base SQL, à partir de et vers des fichiers. Ces utilitaires
peuvent être utilisés pour, <em>en une seule
passe</em>, charger ou extraire de grandes quantités de
données, et cela sans que l'utilisateur ait à se
soucier d'écrire <em>une seule</em> ligne de perl, de SQL,
ni même de n'importe quoi.</p>
<p>Si vous voulez écrire votre propre script perl de gestion
de base de données, vous trouverez suffisamment d'aide dans
les fichiers d'exemples, et dans la volumineuse documentation en
ligne qui est livrée avec le module DBI.</p>
<p>Dans tous les cas, vous êtes maintenant prêts
à publier vos données sur votre réseau, et
même sur le Web.</p>
</body>
</html>
|