0% ont trouvé ce document utile (0 vote)
6 vues29 pages

Applications de bases de données LAPP

Transféré par

francis lumingu
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues29 pages

Applications de bases de données LAPP

Transféré par

francis lumingu
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

[Link]-community.

org/bdd
Application de
bases de données,
principes et
exemples avec
LAPP

[Link]

STÉPHANE CROZAT

Paternité - Partage des Conditions Initiales à l'Identique : 11 avril 2017


[Link]
Table des matières

I - Cours 3

A. Applications et bases de données........................................................................3


1. Architecture générale d'une application de base de données........................................................3
2. Méthode générale d'accès à une BD en écriture par un langage de programmation.........................6
3. Méthode générale d'accès à une BD en lecture par un langage de programmation..........................7

B. Architecture Web.............................................................................................10
1. Notions d'architecture client-serveur.......................................................................................10
2. Notions d'architecture 3-tier..................................................................................................11
3. Notions de serveur et de client web........................................................................................13
4. Notion d'architecture web......................................................................................................14
5. Architecture LAPP.................................................................................................................14

II - Exercice 15

A. Tester un environnement LAPP sur son ordinateur personnel................................15

III - Devoir 19

A. Déployez un site web sur Internet avec Filezilla..................................................19

B. Déployez un site web sur un serveur de l'UTC.....................................................20

Questions de synthèse 21

Glossaire 22

Signification des abréviations 23

Contenus annexes 24

Stéphane Crozat
2
I - Cours I

A. Applications et bases de données

1. Architecture générale d'une application de base de données

Définition
Une application de base de données comporte :
1. Une base de données : Elle pose le modèle de données, stocke les données, définit des
vues sur les données (préparation des modalités de lecture)
2. Une application : Elle définit les interfaces homme-machine pour écrire et lire les
données et contient le programme informatique de traitement des données avant
insertion dans la base ou présentation à l'utilisateur.

Fondamental

Base de données

Modèle Vue
Application
Stockage et contrôle Lecture et manipulation
des données des données

Tables Vues
Entrées Triggers Méthodes (RO) Sorties
IHM Types (RO) Fonctions stockées
IHM
SQL, PL/SQL, PL/pgSQL SQL, PL/SQL, PL/pgSQL, VBA
Interface de saisie Affichage graphique
des données des données
Formulaires États

HTML <form>, HTTP POST, PHP


Contrôle PHP, HTML <table>
État Access
Formulaire Access
Programmation
d'actions et de traitements

Procédures et fonctions applicatives


Procédures et fonctions stockées
PHP, PL/SQL, PL/pqSQL, VBA, Macros Access

Graphique 1 Architecture générale d'une application de base de données

Méthode : Procédure générale de développement


1. Développement de la BD : Conception en UML ou EA, puis traduction en R ou
RO, puis implémentation SQL
- Déclarer les types (en RO)

Stéphane Crozat
3
Cours

- Ajouter les vues utiles, pour simplifier l'accès aux données en lecture
- Ajouter des triggers, pour implémenter les contraintes complexes non exprimables
en SQL (lorsque le SGBD le permet, comme Oracle ou PostgreSQL)
- Implémenter les méthodes d'accès aux données (en RO), ou à défaut les
fonctions stockées (en R) permettant de renvoyer les valeurs calculées prévues
par le modèle conceptuel
2. Développement de l'application : traitements, formulaires et états
- Les traitements proches des données sont réalisés dans le langage associé à la BD
s'il existe (PL/SQL, PL/pgSQL, VBA)
- Les traitements proches de l'application sont réalisés dans le langage applicatif
choisi (PHP, Java, VBA & Macros sous Access)

Exemple : Exemple de technologies


 BD :
- SQL pour les tables, les types et les vues
- PL/SQL (Oracle), PL/pgSQL (PostgreSQL) pour les triggers
- PL/SQL, PL/pgSQL, VBA (Access) pour les fonctions stockées
 Application
- HTML avec la balise <form> et le protocole HTTP/POST (Web), formulaires Access
- PHP (echo) et présentation HTML (<table> par exemple), état Access
- PL/SQL, PL/pgSQL, VBA (Access) pour les procédures et fonctions stockées
(traitements proches de la base de données)
- PHP (Web), Macros & VBA (Access)

Stéphane Crozat
4
Exemple

Stéphane Crozat
Base de données

Application Modèle Vue


IHM CREATE TABLE t1 ( CREATE VIEW v (a, b, c)
a INTEGER PRIMARY KEY, AS
b INTEGER) SELECT a, b, c IHM
<html> FROM t1 INNER JOIN t2
Entrées <body> CREATE TABLE t2 ( ON t2.c=t1.a Sorties
<form method='POST' c INTEGER <html>
action='[Link]'> REFERENCES t1(a)) <body>
<input type='text' <table>
name='a'/> <?php
<input type='submit'/> $vC = connectMyDb();
: Exemple PHP/PosgreSQL

</form> $vS = "SELECT a, b, c


</body> FROM v";
</html> $vP=pg_query($vC,$vS);
while($vR=
<?php pg_fetch_array($vP){
$vC = connectMyDb(); echo "<tr>";
$vS = "INSERT INTO t1(a) Contrôle echo "<td>$vR[1]</td>";
VALUES ('$a')"; echo "<td>$vR[2]</td>";
$vR=pg_query($vC,$vS); <?php echo "<td>$vR[3]</td>";
if (!$vR) then { function connectMyDb() { echo "<tr>";
echo "Échec" ;} $vHost = "[Link]" ; }
else { $vPort = "5432" ; pg_close($vC);
echo "$a inséré" ;} $vData = "myDatabase" ; ?>
pg_close($vC); $vUser = "me" ; </table>
?> $vPass = "secret" ; </body>
$vConn = pg_connect("host=$vHost </html>
port=$vPort dbname=$vDbname
user=$vUser password=$vPassword");

Graphique 2 Exemple d'application de base de données


return $vConn;
}
?>

5
Cours
Cours

2. Méthode générale d'accès à une BD en écriture par un


langage de programmation
Méthode
1. Connexion à la base de données et récupération d'un identifiant de connexion
2. Écriture de la requête d'insertion ou de mise à jour de données
3. Exécution de la requête sur la connexion ouverte et récupération d'un résultat
d'exécution (ici TRUE ou FALSE selon que la requête s'est exécuté ou non avec succès)
4. Test du résultat et dialogue avec l'utilisateur ou remontée d'erreur en cas de résultat
FALSE
5. Clôture de la connexion

Méthode : Pseudo-code

1 // Connexion à la base de données


2 $vHost = "[Link]"
3 $vPort = "6666"
4 $vData = "myDatabase"
5 $vUser = "me"
6 $vPass = "secret"
7 $vConn = CONNECT ($vHost, $vPort, $vDb, $vUser, $vPass)

1 // Écriture de la requête
2 $vSql = "insert into t (a) values (1) ;"

1 // Exécution de la requête
2 $vResult = QUERY($vConn, $vSql)

1 // Test du résultat
2 IF (NOT $vResult) THEN MESSAGE("Échec de l'exécution")

1 // Clôture de la connexion
2 CLOSE ($vConn)

Remarque
La connexion est bien entendu inutile dans le cas de procédure stockées, qui se trouvent par
définition déjà associées à une BD en particulier.

Exemple : Fonction PHP

1 <?php
2 function fInsert ($pValue) {
3 // Connexion à la base de données
4 $vHost = "[Link]" ;
5 $vPort = "5432" ;
6 $vData = "myDatabase" ;
7 $vUser = "me" ;
8 $vPass = "secret" ;
9 $vConn = new PDO('pgsql:host=$vHost;port=$vPort;dbname=$vData', '$vUser',
'$vPass');
10 // Écriture, exécution et test de la requête
11 $vSql = "INSERT INTO t (a) VALUES ($pValue)" ;
12 $vResult=$vConn->query($vSql);
13 if (! $vResult) then {
14 echo "Échec de l'insertion" ;
15 return 0 ;
16 }
17 else {
18 return 1 ;
19 }

Stéphane Crozat
6
Cours

20 // Clôture de la connexion
21 $vConn = null ;
22 }
23 ?>

Exemple : Procédure VBA

1 Sub fInsert(pValue As String)


2 vSql = "INSERT INTO t (a) VALUES ('" & pValue & "')"
3 [Link]("", vSql).Execute
4 End Sub
5

Exemple : Programme Java

1 class fInsert {
2 public static void main(String[] args) {
3 try {
4 // Connexion
5 [Link] (new OracleDriver());
6 Connection vCon =
[Link]("jdbc:oracle:thin:nf17/nf17@localhost:1521:test");
7 // Exécution de la requête
8 Statement vSt = [Link]();
9 [Link]("INSERT INTO t (a) VALUES ('" + args[0] + "')");
10 }
11 catch (Exception e) {
12 [Link]();
13 }
14 }
15 }

3. Méthode générale d'accès à une BD en lecture par un


langage de programmation

Définition : Pointeur sur un résultat de requête


Lorsqu'un programme exécute une requête dans une BD, il récupère un pointeur sur un
résultat de requête permettant de parcourir le tableau résultant de l'exécution de la requête
ligne par ligne.
En effet :
 Une requête SQL retourne toujours un tableau (même si parfois il n'a qu'une ligne et
une colonne), c'est le fondement du modèle relationnel
 En général il n'est pas souhaitable que ce tableau soit transmis directement sous la
forme d'une structure en mémoire (array), car le résultat d'une requête peut être aussi
volumineux que la BD complète stockée en mémoire secondaire
 La solution générale est donc que la BD fournisse le résultat ligne par ligne
Le pointeur permet de :
 Retourner la ligne pointée sous la forme d'un vecteur (tableau à une seule ligne)
 Passer à la ligne suivante
 Savoir si l'on a atteint la fin du tableau (ligne N)

Stéphane Crozat
7
Cours

SELECT A, B, C, D FROM T
A A B C D
Pointeur
ligne 1
ligne 2
...
...
...
...
...
...
ligne N
Graphique 3 Pointeur sur un résultat de requête

Méthode
1. Connexion à la base de données et récupération d'un identifiant de connexion
2. Écriture de la requête de sélection
3. Exécution de la requête sur la connexion ouverte et récupération d'un pointeur sur un
résultat de requête
4. Parcours du pointeur dans une boucle permettant rapporter (fetch) et traiter (afficher
par exemple) le tableau ligne par ligne
5. Clôture de la connexion

Méthode : Pseudo-code

1 // Connexion à la base de données


2 $vHost = "[Link]"
3 $vPort = "6666"
4 $vData = "myDatabase"
5 $vUser = "me"
6 $vPass = "secret"
7 $vConn = CONNECT ($vHost, $vPort, $vDb, $vUser, $vPass)

1 // Écriture de la requête
2 $vSql = "select a, b from t;"

1 // Exécution de la requête
2 $vPointeur = QUERY ($vConn, $vSql)

1 // Traitement du résultat
2 IF (NOT $vPointeur) THEN MESSAGE("Échec de l'exécution")
3 ELSE
4 WHILE ($vPointeur)
5 FETCH $vPointeur IN $vResult[]
6 PRINT $vResult[1]
7 PRINT $vResult[2]
8 NEXT $vPointeur
9 END WHILE
10 END IF

1 // Clôture de la connexion
2 CLOSE ($vConn)

Stéphane Crozat
8
Cours

Exemple : Fonction PHP

1 <?php
2 function fSelect () {
3 // Connexion à la base de données
4 $vHost = "[Link]" ;
5 $vPort = "5432" ;
6 $vData = "myDatabase" ;
7 $vUser = "me" ;
8 $vPass = "secret" ;
9 $vConn = new PDO('pgsql:host=$vHost;port=$vPort;dbname=$vData', '$vUser',
'$vPass');
10 // Écriture, préparation et exécution de la requête
11 $vSql = "SELECT a, b FROM t;"
12 $vResultSet = $connexion->prepare($vSql);
13 $vResultSet->execute();
14 // Traitement du résultat
15 while ($vRow = $vResultSet->fetch(PDO::FETCH_ASSOC)) {
16 echo $row['a'];
17 echo " ";
18 echo $row['b'];
19 }
20 // Clôture de la connexion
21 pg_close($vConn)
22 }
23 ?>

Exemple : Procédure VBA

1 Sub fSelect()
2 vSql = "select a, b from t"
3 Set vRs = [Link]("", vSql).OpenRecordset
4 Do While Not [Link]
5 [Link] [Link](0)
6 [Link] [Link](1)
7 [Link]
8 Loop
9 End Sub

Exemple : Programme Java

1 class fInsert {
2 public static void main(String[] args) {
3 try {
4 // Connexion
5 [Link] (new OracleDriver());
6 Connection vCon =
[Link]("jdbc:oracle:thin:nf17/nf17@localhost:1521:test");
7 // Exécution de la requête
8 Statement vSt = [Link]();
9 ResultSet vRs = [Link]("SELECT a, b FROM t");
10 // Affichage du résultat
11 while([Link]()){
12 String vA = [Link](1);
13 String vB = [Link](2);
14 [Link](vA + " - " + vB));
15 }
16 }
17 catch (Exception e) {
18 [Link]();
19 }
20 }
21 }

Stéphane Crozat
9
Cours

B. Architecture Web

Objectifs
Comprendre les principes des architectures d'application de bases
de données (en particulier 3-tier et web)

Cette section a été réalisée à partir de contenus de [Link].net1, © 2003


Jean-François Pillou (document soumis à la licence GNU FDL).

1. Notions d'architecture client-serveur

Présentation de l'architecture d'un système client/serveur


De nombreuses applications fonctionnent selon un environnement clients/serveur, cela
signifie que des machines clientes (des machines faisant partie du réseau) contactent un
serveur, une machine généralement très puissante en terme de capacités d'entrée-sortie, qui
leur fournit des services. Ces services sont des programmes fournissant des données telles que
l'heure, des fichiers, une connexion...
Les services sont exploités par des programmes, appelés programmes clients, s'exécutant sur
les machines clientes. On parle ainsi de client FTP, client de messagerie...
Dans un environnement purement client/serveur, les ordinateurs du réseau (les clients) ne
peuvent voir que le serveur, c'est un des principaux atouts de ce modèle.

Avantages de l'architecture client/serveur


Le modèle client/serveur est particulièrement recommandé pour des réseaux nécessitant un
grand niveau de fiabilité, ses principaux atouts sont :
 des ressources centralisées
étant donné que le serveur est au centre du réseau, il peut gérer des ressources
communes à tous les utilisateurs, comme par exemple une base de données
centralisée, afin d'éviter les problèmes de redondance et de contradiction
 une meilleure sécurité
car le nombre de points d'entrée permettant l'accès aux données est moins important
 une administration au niveau serveur
les clients ayant peu d'importance dans ce modèle, ils ont moins besoin d'être
administrés
 un réseau évolutif
grâce à cette architecture ont peu supprimer ou rajouter des clients sans perturber le
fonctionnement du réseau et sans modifications majeures

Inconvénients du modèle client/serveur


L'architecture client/serveur a tout de même quelques lacunes parmi lesquelles :
 un coût élevé
dû à la technicité du serveur
 un maillon faible

1 - [Link]

Stéphane Crozat
10
Cours

le serveur est le seul maillon faible du réseau client/serveur, étant donné que tout le
réseau est architecturé autour de lui! Heureusement, le serveur a une grande tolérance
aux pannes (notamment grâce au système RAID)

Fonctionnement d'un système client/serveur

Image 1 Schéma de fonctionnement d'un système client/serveur ([Link] - ©


2003 Pillou - GNU FDL)
Un système client/serveur fonctionne selon le schéma suivant:
 Le client émet une requête vers le serveur grâce à son adresse et à son port, qui
désigne un service particulier du serveur
 Le serveur reçoit la demande et répond à l'aide de l'adresse de la machine client (et de
son port)

2. Notions d'architecture 3-tier

Présentation de l'architecture à deux niveaux


L'architecture à deux niveaux (aussi appelée architecture 2-tier,tier signifiant étage en anglais)
caractérise les systèmes clients/serveurs dans lesquels le client demande une ressource et le
serveur la lui fournit directement. Cela signifie que le serveur ne fait pas appel à une autre
application afin de fournir le service.

Image 2 Architecture 2-tier ([Link] - © 2003 Pillou - GNU FDL)

Présentation de l'architecture à trois niveaux


Dans l'architecture à 3 niveaux (appelée architecture 3-tier), il existe un niveau intermédiaire,
c'est-à-dire que l'on a généralement une architecture partagée entre:
1. Le client
le demandeur de ressources
2. Le serveur d'application
(appelé aussi middleware) le serveur chargé de fournir la ressource mais faisant appel à
un autre serveur
3. Le serveur secondaire
(généralement un serveur de base de données), fournissant un service au premier
serveur

Stéphane Crozat
11
Cours

Image 3 Architecture 3-tier ([Link] - © 2003 Pillou - GNU FDL)

Remarque
Étant donné l'emploi massif du terme d'architecture à 3 niveaux, celui-ci peut parfois désigner
aussi les architectures suivantes :
 Partage d'application entre client, serveur intermédiaire, et serveur d'entreprise
 Partage d'application entre client, base de données intermédiaire, et base de données
d'entreprise

Comparaison des deux types d'architecture


L'architecture à deux niveaux est donc une architecture client/serveur dans laquelle le serveur
est polyvalent, c'est-à-dire qu'il est capable de fournir directement l'ensemble des ressources
demandées par le client.
Dans l'architecture à trois niveaux par contre, les applications au niveau serveur sont
délocalisées, c'est-à-dire que chaque serveur est spécialisé dans une tâche (serveur web et
serveur de base de données par exemple). Ainsi, l'architecture à trois niveaux permet :
 une plus grande flexibilité/souplesse
 une plus grande sécurité (la sécurité peut être définie pour chaque service)
 de meilleures performances (les tâches sont partagées)

Complément : L'architecture multi-niveaux


Dans l'architecture à 3 niveaux, chaque serveur (niveaux 1 et 2) effectue une tâche (un
service) spécialisée. Ainsi, un serveur peut utiliser les services d'un ou plusieurs autres
serveurs afin de fournir son propre service. Par conséquence, l'architecture à trois niveaux est
potentiellement une architecture à N niveaux.

Stéphane Crozat
12
Cours

Image 4 Architecture N-tier ([Link] - © 2003 Pillou - GNU FDL)

3. Notions de serveur et de client web

Fondamental
Un serveur web sert à rendre accessibles des pages web sur internet via le protocole
HTTP.

Définition : Serveur web


Un serveur web est un logiciel capable de répondre à des requêtes HTTP, c'est à dire de
renvoyer des données (par exemple une page HTML), en réponse à des demandes écrites en
HTTP (par exemple une requête GET).
Synonyme : serveur HTTP

Définition : Client web


Un client web est un logiciel capable d'envoyer des requêtes HTTP à un serveur web et
d'afficher les résultats. Les navigateurs web sont les clients web les plus répandus.

Remarque
Un serveur web répond par défaut sur le port 80.

Exemple
 Apache : logiciel libre fondation Apache, la moitié des sites web au monde
 Nginx : logiciel libre BSD, en croissance
 IIS : logiciel propriétaire Microsoft

Stéphane Crozat
13
Cours

4. Notion d'architecture web


Fait à partir de [Link].net2. Copyright 2003 Jean-François Pillou. Document
soumis à la licence GNU FDL.

Image 5 Exemples d'architecture Web ([Link] - © 2003 Pillou - GNU FDL)

5. Architecture LAPP

Définition : Définition
On appelle une architecture LAPP une architecture qui s'appuie sur :
 Linux pour le système d'exploitation
 Apache pour le serveur Web
 PostgreSQL pour la base de données
 PHP pour le langage applicatif

Complément : LAMP, WAMP, WAPP


 LAMP : Linux, Apache, MySQL, PHP
 WAMP : Windows, Apache, MySQL, PHP
 ...

2 - [Link]

Stéphane Crozat
14
II - Exercice II

A. Tester un environnement LAPP sur son ordinateur


personnel

Pré-requis
La réalisation de cet exercice nécessite un ordinateur sous Linux avec un accès root et un
serveur PostgreSQL installé. Les commandes sont spécifiées pour une distribution Debian ou
Ubuntu.

Rappels Linux
 Utiliser Linux - p.24
 Commandes de bases sous Linux : cd, ls, mkdir, rm, find, cat, nano... - p.24

Rappels Postgres
 Présentation de PostgreSQL - p.26
 Installation de PostgreSQL - p.27
 Le client textuel "psql" - p.28
 PostgreSQL sous Linux - p.29

Serveur web
L'objectif de cette partie est d'avoir un serveur web capable de distribuer des page HTML.
Installez le serveur web Apache.

1 sudo apt-get install apache2

Tester l'accès au serveur Web en entrant l'adresse web dans un navigateur : [Link]

Question 1
L'installation par défaut du serveur web permet de servir les fichiers situés dans le dossier
/var/www/html.
Déposez un fichier HTML de votre choix dans ce dossier et accédez-y via votre navigateur Web.
Indices :
Un exemple de fichier XHTML - p.29
Si votre fichier s'appelle [Link] et qu'il se trouve à la racine du serveur web
/var/www/html vous y accéderez par l'adresse [Link]

3 - [Link]
4 - [Link]

Stéphane Crozat
15
Exercice

PHP
L'objectif de cette partie est d'avoir un interpréteur PHP en mode développement, c'est à dire
qui affiche les erreurs quand il y en a.
Installez l'interpréteur PHP pour Apache.

1 sudo apt-get install php

Question 2
Créez le fichier [Link] ci-après et déposez-le sur votre serveur web. Faites un test
d'accès.

1 <?php
2 echo "Hello world";
3 ?>

Question 3
Créez et testez le fichier [Link] ci-après. Ce fichier permet de visualiser la configuration
PHP du serveur.

1 <?php
2 phpinfo();
3 ?>

Question 4
Par défaut l'installation d'un interpréteur PHP est en mode production et il n'affiche pas les
erreurs. Il faut donc changer la configuration pour passer en mode développement.
1. À l'aide du fichier [Link] précédent trouvez l'endroit où est stocké sur votre
ordinateur le fichier de configuration [Link].
Par exemple : /etc/php/7.0/apache2/[Link]
2. Éditez ce fichier en tant que root: sudo nano [Link]
3. Remplacez le paramètre display_errors = Off par display_errors = On
4. Relancez le serveur web : sudo service apache2 reload

Question 5
Il est également nécessaire d'installer un complément à PHP pour qu'il se connecte à
PostgreSQL.

1 sudo apt-get install php-pgsql


2 sudo apache2ctl restart

PostgreSQL
L'objectif de cette partie est d'avoir une base PostgreSQL prête à être utilisée par un
programme PHP.

Question 6
Créez un utilisateur test et une base test. Connectez-vous à la base.

1 psql -c "CREATE USER test WITH ENCRYPTED PASSWORD 'test'";


2 psql -c "CREATE DATABASE test WITH OWNER test";
3 psql --host=localhost --dbname=test --username=test

Créez une table medicament et instanciez-la.

1 CREATE TABLE medicament (


2 nom varchar,
3 description varchar,

Stéphane Crozat
16
Exercice

4 conditionnement integer,
5 PRIMARY KEY (nom)
6 );
7
8 INSERT INTO medicament (nom,description,conditionnement)
9 VALUES ('Chourix','Médicament contre la chute des choux',13);
10
11 INSERT INTO medicament (nom,description,conditionnement)
12 VALUES ('Tropas','Médicament contre les dysfonctionnements intellectuels',42);

L'objectif de cette partie est d'exécuter un programme PHP capable de lire le contenu de la
table medicament de notre base de données test.

Question 7
Créez le fichier [Link] suivant (avec l'éditeur gedit par exemple) et déposez-le sur votre
serveur web. Accédez-y avec un client web pour exécuter le programme.

1 <?php
2
3 /** Connexion **/
4 $connexion = new PDO('pgsql:host=localhost;port=5432;dbname=test', 'test',
'test');
5
6 /** Préparation et exécution de la requête **/
7 $sql = "SELECT nom FROM medicament;";
8 $resultset = $connexion->prepare($sql);
9 $resultset->execute();
10
11 /** Traitement du résultat **/
12 while ($row = $resultset->fetch(PDO::FETCH_ASSOC)) {
13 echo $row['nom'];
14 echo " ";
15 }
16
17 /** Déconnexion **/
18 $connexion=null;
19
20 ?>
21
22

L'objectif de cette partie est d'exécuter un programme PHP capable de modifier le contenu de
la table medicament de notre base de données test.

Question 8
Créez le fichier [Link] et testez-le (exécutez-le au moins deux fois).

1 <?php
2
3 /** Connexion **/
4 $connexion = new PDO('pgsql:host=localhost;port=5432;dbname=test', 'test',
'test');
5
6 /** Préparation et exécution de la requête **/
7 $sql = "INSERT INTO medicament (nom) VALUES ('Nouveau')";
8 $result = $connexion->query($sql);
9
10 /** Traitement du résultat **/
11 if ($result) {
12 echo "'Nouveau' inséré";
13 }
14 else {
15 echo "Erreur lors de l'insertion";
16 }
17
18

Stéphane Crozat
17
Exercice

19 /** Déconnexion **/


20 $connexion=null;
21
22 ?>

Question 9
Vérifiez que l'insertion a fonctionné en appelant [Link].

Stéphane Crozat
18
III - Devoir III

A. Déployez un site web sur Internet avec Filezilla

Préambule
Ce devoir propose d'utiliser un site web gratuit chez [Link], n'importe quel autre
hébergeur peut être librement utilisé pour l'exercice.
Remarque : ce cours ne traite pas de sécurité informatique, mais notez que si, comme dans
cet exercice, vous utilisez le protocole FTP pour transmettre des informations, tout passe en
clair sur le réseau, y compris le mots de passe d'accès. Il est donc impératif de choisir un mot
de passe unique pour ce compte.

Se connecter à un serveur Web


1. Créez un compte chez un hébergeur de site gratuit, par exemple : 000webhost.com5
2. Installez le client FTP Filezilla ([Link] : sudo apt-get install
filezilla
3. Ouvrez Filezilla et exécuter via le menu : File > Site manager (CTRL+S)
4. Cliquez sur le bouton : New site
5. Nommez votre site.
6. Renseignez les informations de connexion, par exemple :
- Host : [Link]
- Port :
- Protocol : FTP
- Encryption : Use plain FTP
- Logon type : Normal
- User : votre compte
- Password : votre mot de passe
- Account :
7. Cliquez sur : Connect

Publier des fichiers


Filezilla permet de naviguer à gauche dans les fichiers locaux situés sur l'ordinateur (Local site)
et sur les fichiers distants situés sur le serveur (Remote site).
Pour mettre des fichiers sur le serveur Web, il suffit de les glisser-déposer depuis la fenêtre de
gauche vers la fenêtre de droite.
1. Créez un dossier test dans le dossier public_html sur le serveur (clic droit Create
directory).
2. Créez une ou plusieurs pages web HTML localement sur votre ordinateur.
3. Copiez l'adresse de ces fichiers dans le champ Local site de Filezilla pour vous
déplacer directement à cette adresse locale.

5 - [Link]
6 - [Link]

Stéphane Crozat
19
Devoir

4. Sélectionnez tous les fichiers et glissez-déposez-les dans votre répertoire distant test.
5. Attendez que tous les fichiers soient transférés.
6. Consultez votre site avec un navigateur web à l'adresse de votre site plus /test, par
exemple : [Link]

Publication de fichiers sur le Web avec Filezilla

B. Déployez un site web sur un serveur de l'UTC


Les étudiants de l'UTC disposent d'un compte personnel sur le serveur Linux [Link] de
l'UTC.
Utilisez ce compte pour déployer un site de test.

Stéphane Crozat
20
Questions de
synthèse

Quelle sont les atouts d'une architecture 3-tier par rapport à une architecture client-serveur
classique ?

Qu'est ce qu'une architecture Web ?

Stéphane Crozat
21
Glossaire

Client
Un client est un programme informatique qui a pour fonction d'envoyer des requêtes à un
autre programme informatique, appelé serveur, d'attendre le résultat de cette requête et de
traiter le résultat de la requête. Notons qu'un programme peut-être client vis à vis d'un
programme et serveur vis à vis d'un autre. On ne prend pas ici le terme client dans son
acception matérielle, qui signifie alors un ordinateur qui a pour fonction d'héberger des
programmes clients.

RAID
La technologie RAID permet de repartir de l'information à stocker sur plusieurs "petits"
disques, au lieu de la concentrer sur un seul "gros" disque. Cette technologie permet donc
d'améliorer les performances (les accès disques pouvant être parallélisés) et d'améliorer la
sûreté (en repartissant les risques de crash et en jouant sur une redondance des données). Il
existe plusieurs types d'architecture RAID, privilégiant ou combinant la parallélisation et la
redondance.

Serveur
Un serveur est un programme informatique qui a pour fonction de recevoir des requêtes d'un
autre programme, appelé client, de traiter ces requêtes et de renvoyer en retour une réponse.
Notons qu'un programme peut-être serveur vis à vis d'un programme et client vis à vis d'un
autre. On ne prend pas ici le terme serveur dans son acception matérielle, qui signifie alors un
ordinateur qui a pour fonction d'héberger des programmes serveurs.

Stéphane Crozat
22
Signification des
abréviations

- BD Base de Données
- E-A Entité-Association
- R Relationnel
- RO Relationnel-Objet
- SQL Structured Query Language
- UML Unified Modeling Language

Stéphane Crozat
23
Contenus annexes

- Utiliser Linux
Pour utiliser Linux, il y a plusieurs possibilité :
 Avoir accès à un PC sur lequel Linux est déjà installé (il suffit de disposer d'un compte
utilisateur sur cet ordinateur).
 Installer Linux sur son ordinateur :
- En téléchargeant en installant une distribution (il faut savoir préalablement graver
un DVD ou créer une clé USB bootable) ;
- En commandant un DVD ou une clé USB (coût de quelques euros) ;
- En participant à une install party (organisées par des associations, elles permettent
de se faire aider dans le processus d'installation et la prise en main initiale de
l'environnement).
 Installer Linux sur son ordinateur en double-boot (à coté de son OS initial, on choisit au
démarrage quel système on utilise).
 Installer Linux sur son ordinateur dans une machine virtuelle (par exemple : on peut
utiliser Linux dans un fenêtre Windows).
 Installer Linux sur une clé en version live USB persistant.

Exemple : Installer Xubuntu sur son PC


[Link]

Exemple : Installer Ubuntu dans une machine virtuelle sous VirtualBox


sous Windows
[Link]
dans-une-machine-virtuelle8

- Commandes de bases sous Linux : cd, ls, mkdir, rm, find, cat, nano...

Le manuel !
La commande man permet d'afficher le manuel d'une autre commande.
Par exemple man ls permet d'afficher les option de la commande ls, et man man est l'affichage
du manuel du manuel.

Organisation des fichiers


Les fichiers sont organisés sous Linux dans des dossiers (ou répertoires) arborescents (il n'y a
pas de notion de disques).
Le premier de ces dossiers, appelé racine, est /.

7 - [Link]
8 - [Link]
virtuelle

Stéphane Crozat
24
Contenus annexes

Des fils courants de racines sont :


 /bin qui contient des programmes du systèmes ;
 /home qui contient les données des utilisateurs ;
 /tmp qui contient des données volatiles accessibles à tous.

Gestion de fichiers
 pwd savoir où je me situe dans l'arborescence
 cd aller quelque part dans l'arborescence
- cd /home aller dans /home (déplacement absolu)
- cd me aller dans le répertoire me fils de mon répertoire courant (déplacement
relatif)
- cd .. remonter dans l'arborescence (déplacement vers son père)
- cd ~ permet de retourner dans son dossier initial (retour au domicile)
 ls voir les fichiers et dossiers dans mon dossier actuel (sauf les fichiers cachés
commençant par un .)
 ls -al voir tous les fichiers et dossiers dans mon dossier actuel avec leurs informations
associées (vue détaillée)
 touch file créer un fichier file
 rm file supprimer le fichier file dans mon dossier actuel
 mkdir dir créer un nouveau dossier dir dans mon dossier actuel
 rm * supprimer tous les fichiers de mon dossier actuel
 rm -R dir supprimer le dossier dir dans mon dossier actuel
 cat file afficher le contenu du fichier file
 more afficher le contenu du fichier file en mode paginé
 less afficher le contenu du fichier file en mode défilement

Édition de fichiers
 nano file
- Éditeur dans le terminal (simple d'utilisation)
- Les commandes sont indiqués en bas de l'éditeur
 gedit file &
- Éditeur graphique
- Utiliser une extension de fichier standard ou le menu Affichage > Mode de
coloration pour obtenir une visualisation adapté au type de fichier édité (par
exemple .sql pour un fichier SQL)

Rechercher un fichier
 find / -name '*test*' permet de rechercher un fichier contenant la chaîne test sur
tout le disque
 find ~ -name '*test*' permet de rechercher un fichier contenant la chaîne test dans
son espace personnel

Complément
Agir en tant que root (su / sudo) - p.25
Installer des applications sous Linux - p.26

- Agir en tant que root (su / sudo)


Un système Linux est généralement utilisé par plusieurs utilisateurs (ou user) identifiés par un
compte.

Stéphane Crozat
25
Contenus annexes

Tous les système ont en commun le premier de ces utilisateurs : root, l'administrateur du
système qui possède tous les droits.

Syntaxe : su
Pour se connecter en tant qu'utilisateur root (et pouvoir faire les opérations qui lui sont
réservées) : su root.
 Le mot de passe de utilisateur root est demandé par le système.

Syntaxe : sudo
Pour exécuter une commande en tant que root sans changer d'user : sudo commande.
 Le mot de passe de utilisateur lançant sudo est demandé par le système.
 Seuls certains utilisateurs appelés sudoers ont le droit d'exécuter la commande sudo.
 Pour ajouter un utilisateur dans la liste des sudoers, excéuté en tant que root (ou via un
autre utilisateur sudoers) :
- adduser user sudo (en tant que root)
- sudo adduser user sudo (avec un utilisateur déjà membre des sudoers)

Attention : Debian (sudo)


Sous Debian la commande sudo n'est pas installée par défaut.

Attention : Ubuntu (su)


Sous Ubuntu l'utilisateur root n'est pas actif et il n'est donc pas possible d'exécuter
la commande su root. On peut en revanche utiliser sudo, l'utilisateur créé à
l'installation est membre des sudoers.
Pour activer le compte root, il faut lui attribuer un mot de passe avec la commande :
sudo passwd root.

Complément : Agir en tant qu'un autre utilisateur


Pour agir en tant qu'utilisateur user, exécuter :
su user, ou su - user pour adopter l'environnement de user.

- Installation d'applications sous Debian et Ubuntu (apt-get)


Pour installer une application exécuter la commande suivante en tant que root ou via sudo :
sudo apt-get install applications

Exemple : Installer virtualbox, lftp, cups-pdf, pdftk, dia, gimp et git

1 sudo apt-get install virtualbox lftp cups-pdf pdftk dia gimp git

Complément : Maintenir le système à jour


Pour mettre le système à jour, exécuter les deux commandes suivantes en tant que root ou via
sudo :
1. sudo apt-get update
2. sudo apt-get upgrade

- Présentation de PostgreSQL
PostgreSQL est :
 un SGBDR
 libre (licence BSD)
 multi-plate-formes (Unix, Linux, Windows, MacOS, ...)
 puissant

Stéphane Crozat
26
Contenus annexes

 très respectueux du standard


 très bien documenté

Fondamental : Documentation de PostgreSQL


[Link]
(en français : [Link]

Fonctionnement général
PostgreSQL comme la grande majorité des SGBD est un logiciel client-serveur. Il faut donc
pour l'utiliser un serveur (programme postgresql sous Linux) et un client.
Il existe plusieurs clients, les deux plus utilisés sont le client textuel psql et le client graphique
PgAdmin III.

Complément
 [Link]
 [Link]

- Installation de PostgreSQL

Attention
Nous présentons ici une installation a minima de PostgreSQL uniquement à des fins
de test et d'apprentissage, et pour un usage local. Pour mettre en production une
base de données PostgreSQL sur le réseau, il faut suivre des directives
supplémentaires, notamment pour assurer la sécurité du système, sa sauvegarde...
Ces thèmes ne sont pas abordés dans le cadre de ce cours.
PostgreSQL est à l'origine une base de données conçue pour Unix, son installation et son
fonctionnement sont possibles aujourd'hui sur les trois OS, mais Linux reste son
environnement de prédilection. C'est l'architecture PostgreSQL sur Linux qui est étudiée ici.
[Link] 13

Exemple : Installer PostgreSQL sur Ubuntu


Une installation sur Ubuntu est très facile :
1. Installer les paquets : sudo apt-get install postgresql
2. Activer l'utilisateur postgres : sudo passwd postgres
3. Se connecter en tant que postgres : su postgres
4. Lancer le client psql : psql -h localhost -d postgres -U postgres

Complément
[Link]

Complément : Base de données par défaut


L'installation crée une base de données par défaut qui s'appelle postgres et un utilisateur
postgres qui possède cette base (OWNER).

Complément : Informations réseau


 Le port standard de communication de PosgreSQL est 5432.

9 - [Link]
10 - [Link]
11 - [Link]
12 - [Link]
13 - [Link]
14 - [Link]

Stéphane Crozat
27
Contenus annexes

 Si le client et le serveur sont sur la même machine, le client peut bien entendu se
connecter au serveur localhost sur le port 5432.

Complément : Installer PostgreSQL sous Windows


1. Télécharger un installer depuis [Link]
training/pgdownload#windows15
2. Exécuter l'installation en validant les propositions par défaut (et sans installer les
éventuels programmes complémentaires proposés à l'issue de l'installation)
3. Exécuter le client psql (également appelé Shell SQL)

Complément : SHOW ALL


La commande SHOW ALL permet de voir tous les paramètres du serveur PostgreSQL.
Par exemple data_directory permet de connaître le répertoire de stockage utilisé sur le
disque dur.

- Le client textuel "psql"

Définition : psql
psql est le client textuel de PostgreSQL.

Syntaxe : Connexion à un serveur PostgreSQL avec le client psql

1 psql -h serveraddress -d database -U user

Rappel : Connexion à la base "postgres" avec l'utilisateur "postgres" sur


l'ordinateur local

1 psql -h localhost -d postgres -U postgres

Complément
La commande psql utilisée sans paramètre se connecte au serveur localhost avec pour nom de
database et pour nom de user le nom de l'utilisateur du système qui invoque la commande
(utilisateur Linux typiquement).
me@mypc:~$ psql équivaut à : me@mypc:~$ psql -h localhost -d me -U me

Syntaxe : Écrire une instruction SQL

1 dbnf17p015=> SELECT * FROM maTable ;

Syntaxe : Écrire une instruction SQL sur plusieurs lignes


Une instruction SQL peut s'écrire sur une ou plusieurs lignes, le retour chariot n'a pas
d'incidence sur la requête, c'est le ; qui marque la fin de l'instruction SQL et provoque son
exécution.

1 dbnf17p015=> SELECT *
2 dbnf17p015-> FROM maTable
3 dbnf17p015-> ;

On notera dans psql la différence entre les caractères => et -> selon que l'on a ou pas effectué
un retour chariot.

Fondamental : Commandes de base : aide


\? : Liste des commandes psql

15 - [Link]

Stéphane Crozat
28
Contenus annexes

\h : Liste des instructions SQL


\h CREATE TABLE : Description de l'instruction SQL CREATE TABLE

Fondamental : Commandes de base : catalogue


\d : Liste des relations (catalogue de données)
\d maTable : Description de la relation maTable

Fondamental : Commandes de base : quitter


\q : Quitter psql

Complément
[Link] 16

- PostgreSQL sous Linux

Syntaxe : Exécuter une instruction PostgreSQL depuis Linux

1 psql -c "instruction psql"

Exemple : Exécuter un script PostgreSQL depuis Linux

1 #!/bin/sh
2 psql -c "DROP DATABASE mydb"
3 psql -c "CREATE DATABASE mydb"
4 psql -c "GRANT ALL PRIVILEGES ON DATABASE mydb TO user1"

Complément : psql : exécuter une commande Linux


 \! : permet d'exécuter certaines commandes du shell Linux depuis le client psql.

- Un exemple de fichier XHTML

Exemple : Corps

1 <html xmlns="[Link]
2 <head>
3 <title>Exemple de fichier XHTML</title>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5 </head>
6 <body>
7 <p>Hello world !</p>
8 </body>
9 </html>

16 - [Link]

Stéphane Crozat
29

Vous aimerez peut-être aussi