TP install Apache+MySQL+PHP

Transcription

TP install Apache+MySQL+PHP
Université Louis Pasteur
UFR de Mathématiques et Informatique
Licence Informatique (L2)
Année 2007/2008
Pratique et administration des systèmes
TP10 : Technologie LAMP
1 But du TP
Le but de ce TP est de présenter l’architecture Linux, Apache, MySQL and PHP (LAMP). Vous installerez et
configurerez de façon minimal ces différents services afin d’obtenir un serveur web de contenu dynamique.
2 Introduction
LAMP est un ensemble de logiciels Open Source permettant de créer un serveur web de contenu dynamique. Cet
ensemble est composé de :
– Linux en tant que système d’exploitation.
– Apache en tant que serveur web.
– MySQL en tant que serveur de base de données.
– PHP en tant que langage de scripts.
Cette architecture est déployée à grande échelle dans les entreprises. Son succès est dû au bas coûts d’acquisition ainsi
qu’à l’intéropérabilité et à l’ubiquité des différents composants.
3 Linux
Cette partie ne sera pas approfondie dans ce TP, étant donné que nous avons déjà travaillé sur l’installation et
l’utilisation des systèmes Linux. Pour toute informations sur ce sujet, référez-vous aux TP précédents.
4 Apache
Apache server (vient de : "A patchy server") est un serveur web très performant multi-threadé et multi-platformes.
Les sources de ce projet peuvent être téléchargées depuis http ://httpd.apache.org/ ou installées depuis le package
correspondant de votre distribution Linux. Dans ce TP, nous allons utiliser la seconde méthode et installer le serveur
au moyen de la commande suivante :
prompt> apt-get update
prompt> apt-get install apache2
Une fois l’installation terminée, vous pouvez constater que le service web fonctionne sur votre machine. Pour le
vérifier commencez par lister les processus : pstree -p. Vous verrez alors les multiples threads nommés apache2 en
cours d’exécution.
La deuxième vérification est d’ouvrir un navigateur avec l’adresse de votre machine locale : lynx http ://localhost.
Vous verrez alors le message suivant :
Not Found
The requested URL / was not found on this server.
-----------------------------------------------------------
1
Apache/2.2.8 (Debian) Server at localhost Port 80
Ce message signifie que le service fonctionne correctement, mais que vous n’avez pas encore défini de page d’accueil
par défaut (index.html) dans /var/www. Créez donc ce fichier et éditer le pour avoir le contenu suivant :
<html>
<head>
<title>Mon serveur Apache fonctionne</title>
</head>
<body>
<h1>Mon serveur Apache fonctionne correctement.</h1>
</body>
</html>
5 MySQL
MySQL est un système de gestion de base de données (SGBD) (ou database management system (DBMS)) qui est
multi-threadé et multi-utilisateurs. Les sources de ce projet peuvent être téléchargées depuis http ://www.sun.com/mysql
ou installées depuis le package correspondant de votre distribution Linux. Dans ce TP, nous allons utiliser la seconde
méthode est installer le serveur au moyen de la commande suivante :
prompt> apt-get install mysql-server
Une fois l’installation du package terminé, vous pouvez constater que le service de gestion de base de données fonctionne sur votre machine. Pour le vérifier commencez par lister les processus : pstree -p. Vous verrez alors les multiples
threads nommés mysqld en cours d’exécution.
Pour avoir un service réellement fonctionnel vous devez :
– Créez un mot de passe pour le root (si cela n’a pas été fait lors de l’installation.)
prompt> mysqladmin -u root password ’new-password’
– Vous connectez au serveur en temps qu’utilisateur root (option –user) et en activant la vérification du mot de
passe (option -p).
prompt> mysql --user=root -p
Une fois connectez votre prompt change en "mysql>", ce qui signifie que vous êtes dans l’interpréteur de commandes de MySQL.
– Il vous faut ensuite créer la base de données qui vous servira à contenir vos différentes tables.
mysql> create database pas;
Pour vérifier que votre base de données a bien été créée, utilisez la commande suivante :
mysql> show databases;
Si votre base de données a été créée avec succès, vous pouvez désormais la sélectionner comme base à utiliser :
mysql> use pas;
– Une fois dans la base de données "pas", vous allez devoir créer au moins une table :
mysql> create table bulletin (uid int(50) not null auto_increment primary key,
nom varchar(35), prenom varchar(35), note int(20));
Vérifiez que votre table a bien été créée avec la commande :
mysql> show tables;
– Une fois que votre table existe, vous pouvez renseigner des enregistrements. Comme par exemple
mysql> insert into bulletin values (1, "Lucas", "Vincent", 0);
mysql> insert into bulletin values (2, "Pelov", "Alexander", 20);
Pour vérifier l’existence de ces nouvelles données dans votre table, vous pouvez effectuer la requête :
mysql> select * from bulletin;
– Une fois vos bases de données complétées, vous pouvez quittez l’interpréteur de commande MySQL avec la
commande :
2
mysql> exit
MySQL est un système basé sur le langage SQL (Structured Query Language) créé pour l’interrogation et l’administration de bases de données. Ainsi les requêtes précédentes sont identiques pour tous les SGBD (MySQL, PostgreSQL,
Oracle, SQL server, etc.).
6 PHP
PHP (Personnal Home Page) est un langage de scripts conçu pour créez simplement des pages web dynamiques.
Ces scripts sont exécutés côté serveur, contrairement aux scripts comme le java-script qui sont exécutés côté client.
Par conséquent, le client ne peut avoir accès au code source ayant servi à générer les différentes pages web.
Pour le moment les services Apache et MySQL fonctionne de façon indépendante. PHP va nous permettre de faire le
lien entre ces 2 services. Pour cela, PHP sera installé sous forme d’un module pour Apache qui interprétera le code
PHP. Ce code contiendra les requêtes SQL (identiques à celles utilisées dans l’interpréteur de commandes de MySQL)
utilisées pour interroger la base de donnée MySQL.
Les sources de ce projet peuvent être téléchargées depuis http ://www.php.net ou installées depuis le package correspondant de votre distribution Linux. Dans ce TP, nous allons utiliser la seconde méthode est installer le package au
moyen de la commande suivante :
prompt> apt-get install php5
prompt> apt-get install php5-mysql
Une fois installé, il faut redémarrez le service Apache pour qu’il active le module PHP nouvellement installé.
prompt> /etc/init.d/apache2 restart
Pour tester le bon fonctionnement du module PHP, nous allons renommer et modifier le fichier "/var/www/index.html"
pour générer une balise HTML au moyen d’un script PHP. Pour que le fichier soit reconnu comme contenu un script
PHP nous allons commencer par renommer le fichier "/var/www/index.html" en "/var/www/index.php" :
prompt> mv /var/www/index.html /var/ww/index.php
Ensuite, nous allons éditer ce même fichier qu’il contienne le code source suivant (vous remarquerez que le code PHP
est contenu dans les balises commençant par "< ?php" et se terminant par " ?>") :
<html>
<head>
<title>Mon serveur Apache fonctionne</title>
</head>
<body>
<h1>Mon serveur Apache fonctionne correctement.</h1>
<?php
echo ’<p>... et PHP aussi</p>’;
?>
</body>
</html>
Ouvrez de nouveau un navigateur sur la page de votre serveur web avec lynx http ://localhost. Affichez le code source
de la page que vous êtes en train de visualiser avec la touche "\". Vous pouvez constater que le code PHP n’est pas
affiché et qu’il a été remplacé par les balises HTML générées.
Pour avoir une vraie page web dynamique, nous allons modifiez le fichier "index.php" pour que ce dernier :
– Se connecte à la base de données.
– Interroge la base de données avec une requête SQL, pour y récupérer des données.
– Génère des balises HTML présentant les données récupérées.
– Se déconnecte de la base de données.
3
Au final, le fichier doit être éditer pour contenir le code suivant (les commentaires sont précédés de "//") :
<?php
// 1) Phase de connexion à la base de données.
// Nom de la machine hébergeant le serveur MySQL.
$dbhost = ’localhost’;
// Nom de l’utilisateur utilisé pour se connecter à la base de données.
$dbuser = ’root’;
// Mot de passe de l’utilisateur utilisé pour se connecter à la base de
// données. Ce mot de passe n’apparaîtra pas sur les navigateur des clients
// car le script PHP est interprété côté serveur.
$dbpass = ’toto’;
// Connexion à la base de données.
$conn = mysql_connect($dbhost, $dbuser, $dbpass)
or die (’Error connecting to mysql’);
// Choix de la table à utiliser.
$dbname = ’pas’;
mysql_select_db($dbname);
?>
<html>
<head>
<title>[PAS] Bulletin de notes</title>
</head>
<body>
<h1>[PAS] Bulletin de notes</h1>
<table border="1">
<tr>
<td> Nom </td>
<td> Pr&eacute;nom </td>
<td> <strong> Note </strong> </td>
</tr>
<?php
// 2) Création de la requête SQL et interrogation de la base de
// données.
$query = "SELECT * from bulletin";
$result = mysql_query($query);
?>
<?php
// 3) Génération des balises HTML en fonction des données
// récupérées.
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo "<tr>" .
"<td> {$row[’nom’]} </td>" .
"<td> {$row[’prenom’]} </td>" .
"<td> <strong> {$row[’note’]} </strong> </td>" .
"</tr>";
}
4
?>
</table>
</body>
</html>
<?php
// 4) Déconnection de la base de données.
mysql_close($conn);
?>
Ouvrez une dernière fois un navigateur sur la page de votre serveur web avec lynx http ://localhost. Affichez le code
source de la page que vous êtes en train de visualiser avec la touche "\". Vous pouvez constater que le code PHP n’est
pas affiché et qu’il a été remplacé par les balises HTML générées.
Après cela, rajoutez un ou plusieurs enregistrements en passant par l’invite de commande MySQL. Rafraîchissez la
page web, cette dernière doit alors affiche de façon dynamique tous les enregistrements (y compris les nouveaux).
7 Conclusion
Ce TP vous a permis de découvrir comment mettre en place un serveur LAMP avec une configuration minimale
(pas de prise en compte de la sécurité, etc.). Vous pouvez désormais indiquer quelle machine et quel service interprète
le code PHP ainsi que les requêtes SQL.
5