Vous êtes sur la page 1sur 66

Prénom:AWA

Nom:SALL
Classe:DSTI2A

HTTP-MYSQL

1- Connectons comme root et installons apache2


par la commande :
apt install apache2

2- Testons le démarrage de apache2

3- Allons dans le répertoire /etc/apache2 et listons


son contenu
Donnons le rôle des sous répertoires de
/etc/apache2

apache2.conf:c’est le fichier principal de


configuration d'Apache2. Il contient des
paramètres globaux d'Apache2.

conf-available :: ce répertoire contient les


fichiers de configuration disponibles. Tous les
fichiers qui étaient auparavant dans
/etc/apache2/conf.d peuvent être déplacés
dans /etc/apache2/conf-available.

conf-enabled :onserve les liens symboliques


dans /etc/apache2/conf-available. Quand un
fichier de configuration est pointé, il sera
activé au prochain démarrage de apache2.

envvars :c’est le fichier où les variables


d'environnement d'Apache2 sont définies.

magic :instructions pour déterminer le type


MIME à partir des premiers octets d'un
fichier.

mods-available :ce répertoire contient les


fichiers de configuration qui permettent de
charger les modules et de les paramétrer.
Certains modules peuvent ne pas avoir de
fichier de configuration.

mods enabled :contient les liens symboliques


(symlinks) vers les fichiers de
/etc/apache2/mods-available. Lorsqu'un lien
symbolique vers un module de configuration
est créé, il sera activé au prochain
redémarrage d'Apache2.
ports.conf :héberge les directives déterminant
les ports TCP sur lesquels Apache2 est en
écoute.

sites-available :ce dossier contient des fichiers


de configuration pour les serveurs virtuels
d'Apache2. Les serveurs virtuels permettent
de configurer Apache2 pour plusieurs sites
ayant différentes configurations.

sites-enables :comme mods-enabled, sites-


enabled contient des liens symboliques vers le
dossier /etc/apache2/sites-available. De la
même manière que lorsqu'un lien symbolique
vers un fichier de configuration de sites-
available est créé, le site ainsi configuré sera
activé au prochain redémarrage d'Apache2.

4- Allons dans le répertoire par défaut


d’hébergement de sites web d’apache2 qui est
:/var/www/html et créons le sous dossier tp1
puis s’y mettre
5- Dans le répertoire /var/www/html créons
notre premier site web dans le fichier
index.html

Lançons le navigateur et saisissons


localhost/tp1/index.html
On remarque que les accents sont remplacés
par des caractères bizarres.

Éditons le fichier /etc/apache2/conf-


available/charset.conf
et décommentons la ligne AddDefaultCharset
UTF-8
Sauvegardons le fichier et redémarrons le
serveur apache2 par la commande :
service apache2 restart

Dans le navigateur actualisons la page

Que constatez-vous ?

-->On constate que les caractères bizarres


sont remplacés par les accents.
Comment faire en sorte que son serveur web
apache2 prenne en compte les caractères
accentués ?

.Pour faire en sorte que le serveur web


apache2 prenne en compte les caractères
accentués :
D’une part on édite le fichier
/etc/apache2/conf-available/charset.conf
et on décommente la ligne
AddDefaultCharset UTF-8 et d’autre part on
sauvegarde le fichier et on redémarre le
serveur apache2 par la commande :service
apache2 restart

6- prise en compte de code php par apache2

Toujours dans le dossier /var/www/html/tp


Éditons le fichier test.php
Sauvegardons le fichier et dans un navigateur
saisissons localhost/tp1/test.php

Pourquoi le code php n’est pas exécuté ?

le code PHP ne s’exécute pas car pour pouvoir


exécuter ce dernier dans apache2 sous Ubuntu 20
il faut avoir libapache2-mod-php
Installons la librairie libapache2-mod-php comme
suit
:
Interprétons les informations dans la figure ci-
dessus

Lorsqu'on a installé le module libapache2-mod-


php on y voit un fichier du nom
de /etc/php/7.4/apache2/php.ini.
Dans /etc/php/7.4/apache2/php.ini on y trouve
plusieurs paramétres que sont :
D’abord :

-->SMTP:c’est un paramétre qui permet de dire


quelle est le serveur de messagerie ll pemet
aussi de préciser l’adresse ip de serveur de
messagerie .Par exemple si on devellope un
programme en php et qu’on veut envoyer ce
dernier par mails c’est le paramétre SMTP qui
nous dit quel est le serveur de messagerie à qui
envoyer les mails pour que ces derniers puissent
arriver.
Ensuite :
-->file uploads=c’est le telecharchement d’un
fichier du client vers le serveur
file uploads=ON, il permet au serveur de
recevoir des fichiers qui proviennent des
clients .

file uploads=OFF, il permet au serveur de ne


pas recevoir des fichiers qui proviennent des
clients.

uploads_max_filesize:c’est un paramètre qui


permet de fixer la taille maximale des fichiers
à uploader .Par exemple si un client veut
attacher un fichier inferieur à 2 mégas et que
le serveur ne pemet pas pour le faire ,nous
allons aller dans le fichier
uploads_max_filesize et changer sa valeur
puis on rédémarre le serveur
Actualisons la page
Que constatez vous ?

→ Après avoir actualiser la page on constate


que le navigateur a pris en compte le code
php .

Comment faire en sorte que apache prenne en


compte le code php ?

--> Pour faire en sorte que apache prenne en


compte le code php il faut installer
libapache2-mod-php

Que fait la ligne du code echo "<br>" ?

→la ligne du code echo "<br>" permet d’aller


à la ligne.
7- intérêt du fichier journal d’apache2
/var/log/apache2/error.log

Éditons notre code php et faisons une erreur


en enlevant ; de la ligne echo "<br>"

Relançons notre code test.php dans le


navigateur
:
On constate que dans le log, on nous indique
que ; a été oublié à la ligne 3

Allons à la ligne et ajoutons ; puis testons


dans le navigateur :
Que fait la commande : nano +3 test.php ?

--> la commande nano +3 test.php nous


raméne directement à la ligne d’erreur .

8) - Gestion de bases de données avec mysql-


server

8.1 Installons mysql-server par la


commande :apt install mysql-server
8.2 vérifions si le port par défaut du serveur
mysql qui est 3306 est ouvert.

root@awa-sall:/var/www/html/tp1# netstat -
anp | grep -w 3306
Connectons sur le serveur mysql en ligne de
commande en tant que root
root@awa-sall:/var/www/html/tp1# mysql -
u root -p

Avez vous remarqué que n’importe mot de


passe est accepté par le serveur pour root ?
→OUI on a remarqué que n’importe quel
mot de passe est accepté par le serveur pour
root . Ce pendant on peut le régler dans le
terminal en faisant :
→D’abord on fait mysql_secure_installation
→Ensuite on tape sur y
→De plus on choisit le nombre de caractère
que peut contenir le mot de pass (soit 0, 1 ou
2)
→Enfin on met le mot de pass que nous
voulons
8.3 Montrer toutes les bases sur le serveur mysql

mysql> show databases;


8. 4 Quelles sont les tables de la base mysql ?

→Pour afficher Les tables de la base mysql on


fait:show databases ;

8.5 création de la base sgbs :


mysql> create database sgbs;

8.6 Connectons à la base sgbs


mysql> use sgbs;

8.8 creons la table


client(id,prenom,nom,code,numcompte,solde)

mysql> create table client(id int primary key


auto_increment, prenom varchar(20),
nomvarchar(20), code varchar(5), numcompte
varchar(20), montant varchar(20));
8.9 décrivons la table client en vue de voir les
différents champs
8.10 insérons des comptes dans la table client

mysql> insert into


client(prenom,nom,code,numcompte,montant
)
values("Macky","Sall","1111","1001","58000
00");

Pourquoi on n’a pas précisé l’ id de Macky ?

→On a pas précisé l’ id de Macky parce’que


c’est auto-incrémenté

8.11 )Affichons toutes les infos de la table


client

mysql> select * from client;


8.12 Modification du solde du président Diouf à
12 7000 000

mysql> update client set montant=127000000


where id=3;
Ajoutons Idrissa Seck dans la table client

mysql> insert into


client(prenom,nom,code,numcompte,montant)
values("Idrissa","Seck","4444","1004","1580000
0");
8.13 : Suppression d’un enregistrement

mysql> delete from client where id=4;

8.13 : fichier de configuration de mysql et ses


principaux paramètres

En utilisant la commande :

root@awa-sall:/var/www/html/tp1# netstat -anp |


grep -w 3306
Peut -on utiliser notre serveur mysql en réseau et
pourquoi?

→oui on peut utiliser notre serveur mysql


mais ce pendant on doit d’abord editer le
fichier /etc/mysql/mysql.cond.d/mysqld.cnf puis
on régle les paramètres bind-address et mysqlx-
bind-address à (0.0.0.0) de plus on rédémarre le
serveur par la commande : service mysql restart

root@awa-sall:/var/www/html/tp1#

nano /etc/mysql/mysql.conf.d/mysqld.cnf
Changeons la valeurs de parametres de mysql
Rédemarrons le serveur mysql pour que les
nouveaux parametres soient pris en compte
root@awa-sall:/var/www/html/tp1# service
mysql restart

Faisons de nouveau :
root@awa-sall:/var/www/html/tp1# netstat -anp |
grep -w 3306

Interprétez le résultat ?
→tcp:la 1er colonne nous donne le port tcp. En
effet ,ce dernier gère les états de connexion.

→La 2éme collonne (0.0.0.0.0:3306) montre que


le port 3306 est en état LISTEN. En effet avec ce
dernier,l’application est en écoute et en attente de
requête de la part de clients sur internet

8.14 : création de compte sur le serveur mysql et


affectation des droits sur une base

root@awa-sall:/var/www/html/tp1# mysql -u root


-p
Enter password:
Welcome to the MySQL monitor. Commands end
with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.31-0ubuntu0.20.04.1
(Ubuntu)
mysql> create user bouki identified by 'passer';

mysql> grant all privileges on sgbs.* to bouki;

mysql> flush privileges;

Donnons la signification des 3 dernières


commandes :
→ La première commande create avec comme
argument (create user bouki identified by
'passer';) nous permet de créer un utilisateur
« bouki » avec comme mot de pass (identified)
« passer »

→ La deuxième commande (grant all privileges


on sgbs.* to bouki;) permet de donner tous les
privilèges de toutes les tables à bouki dans la
table de sgbs

→ La troisième commande (flush


privileges;) :permet d’appliquer les priviléges

9- Récuperation des paramètres dans un


programme php avec les variables superglobales
$_GET, $_POST et $_REQUEST et format des
messages HTTP

9.1 Méthode de réception POST

Éditons le fichier :
root@awa-sall:/var/www/html/tp1# nano
recu.php

9.2 : formulaire html avec la méthode POST


On rappelle qu’un formulaire sert à recueillir les
données pour les transmettre à un programme
pour
traitement

Éditons le fichier html


form1.html suivant :
<html>
<head>
</head>
<body>
<form method="POST" action="recu.php">
Prenom: <input type="text"
name="prenom"><br>
Nom: <input type="text" name="nom"><br>
<input type="submit" value="Valider">
</form>
</body>
</html>

Dans un navigateur utilisons l’url :


localhost/tp1/form1.html
et remplissez comme suit :
Après validation, on obtient :

9.3 Nécessité d’utilisation d’une même méthode


aussi bien à l’envoi qu’à la réception :
Éditons le fichier du formulaire (form1.html)et
remplaçons la méthode POST par GET tout en
gardant POST
dans recu.php

Testons dans un navigateur comme suit :


Expliquons pourquoi ces 2 paramètres sont vides

→ Ces 2 paramètres sont vides car par l’envoi de


la méthode GET la réception ne peut pas être par
la méthode POST.

Remplaçons dans le fichier recu.php par GET et


reéssayons
Testons :

Donnons notre conclusion et expliquons ce


qui s’est passé en utilisant le format des
messages HTTP :
Conclusion:L’envoi avec la méthode GET est
reçu par la méthode Get mais ce pendant
l’envoi de la méthode GET ne peut pas être
reçu par la méthode POST

Expliquons ce qui s’est passé :En effet avec la


méthode GET les données sont sur la ligne de
la requête alors qu’avec la méthode POST les
données sont insérés par le corps du message.

10- module de prise en charge de mysql dans


php

10.1) se faire aider par le fichier journal de


son serveur web

Éditons le code php sensé afficher de manière


brute tous les clients de notre banque sgbs

root@awa-sall:/var/www/html/tp1# nano
read.php
<?php
// connexion à la base sgbs
$conn=mysqli_connect("localhost","bouki","
passer","sgbs");
// preparation de la requete
$sql="select * from client";
// execution de la requte
$result=mysqli_query($conn,$sql);
// recuperation de tous les resultats dans un
tableau
$tab=mysqli_fetch_all($result);
// affichage brut des resultats
print_r($tab);
?>
Exécutons le programme read.php dans un
navigateur
Utilisons la commande tail -f pour consulter le
logs d’apache2
Installons le paquet php-mysql

root@awa-sall:/var/www/html/tp1# apt install


php-mysql

Redémarrons le serveur
root@boris-VirtualBox:/var/www/html/tp1#
service apache2 restart

On reteste

10.2 Écriture des create.php ; update.php,


delete.php

on copie read.php en create.php


root@awa-sall:/var/www/html/tp1# cp read.php
create.php

Éditons le dernier fichier

<?php
$prenom=$_REQUEST['prenom'];
$nom=$_REQUEST['nom'];
$code=$_REQUEST['code'];
$numcompte=$_REQUEST['numcompte'];
$montant=$_REQUEST['montant'];
// connexion à la base sgbs
$conn=mysqli_connect("localhost","bouki","pass
er","sgbs");
// preparation de la requete
$sql="insert into
client(prenom,nom,code,numcompte,montant)
values('$prenom','$nom','$code','$numcompte','$
montant')";
// execution de la requte
$result=mysqli_query($conn,$sql);
// affichage indo pour informer l'utilisateur
echo "Insertion reussie";
Installons le client HTTP avancé curl par la
commande :
root@awa-sall:/var/www/html/tp1# apt install
curl

On utilise curl pour tester le programme create


avec la méthode GET
root@awa-sall:/var/www/html/tp1# curl -X GET
"http://localhost/tp1/create.php?
prenom=Ousmane&nom=Sonko&code=5555&nu
mcompte=1005&montant=2500000"

Testons l’ajout de Khalifa Sall par la methode


POST
root@awa-sall:/var/www/html/tp1# curl -X
POST "http://localhost/tp1/create.php" -d
"prenom=Khalifa&nom=Sall&code=6666&numc
ompte=1006&montant=3500000"

Reaffichons le resultat de read.php dans le


navigateur
Copions le programme create.php en update.php
qui prend le prenom et le nom et le nouveau
montant fait la mise à jour du montant.

root@awa-sall:/var/www/html/tp1# cp create.php
update.php

Modifions comme suit :


<?php
$prenom=$_REQUEST['prenom'];
$nom=$_REQUEST['nom'];
$montant=$_REQUEST['montant'];
// connexion à la base sgbs
$conn=mysqli_connect("localhost","bouki","pass
er","sgbs");
// preparation de la requete
$sql="iupdate client set montant='$montant'
where prenom='$prenom' and nom='$nom'";
// execution de la requte
$result=mysqli_query($conn,$sql);
// affichage indo pour informer l'utilisateur
echo "Mise a reussie";
?>
Exécutons le programme update.php en inserant
les données dans la ligne de requete avec la
methode PUT

On regarde le resultat avec read.php dans le


navigateur

copions le programme update.php en delete.php


root@awa-sall:/var/www/html/tp1# cp
update.php delete.php

Modifions le comme suit:


<?php
$prenom=$_REQUEST['prenom'];
$nom=$_REQUEST['nom'];
// connexion à la base sgbs
$conn=mysqli_connect("localhost","bouki","pass
er","sgbs");
// preparation de la requete
$sql="delete from client where
prenom='$prenom' and nom='$nom'";
// execution de la requte
$result=mysqli_query($conn,$sql);
// affichage indo pour informer l'utilisateur
echo "Suppression reussie";
?>
Executons le programme delete.php en ligne de
requete avec la methode DELETE en inserant les
données dans la ligne de requete
root@awa-sall:/var/www/html/tp1# curl -X
DELETE "http://localhost/tp1/delete.php?
prenom=Khalifa&nom=Sall"
Consultons read.php

on voit que Khalifa Sall a eté supprimé

11- Installation et utilisation du client HTTP


avancé graphique postman
on utilise le gestionnaire de paquet snap pour
installer postman
root@awa-sall:/var/www/html/tp1# snap install
postman
11.1 lancement de postman en tant que simple
utilisateur en tache de fond
boris@boris-VirtualBox:~$ postman &
interface obtenue apres creation de workspace
Methode GET sans données
Modifions le montant de president Wade

Observons le resultat dans read.php


Ajotons le president Toumani Touré par la
methode POST avec create.php
Passons à la methode DELETE

Toumani Toure est bien supprimé

Vous aimerez peut-être aussi