Les langages de programmation du Web

Précédent Sommaire 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Suivant

21. LAMP et WAMP

LAMP est l'acronyme de Linux Apache MySQL PHP.

WAMP est l'acronyme de Windows Apache MySQL PHP.

Comme nous l'avons vu, WampServer ou XAMPP permettent d'installer facilement un serveur Web (avec les 3 éléments Apache, MySQL et PHP).
Cependant, ces environnements ne sont pas destinés à un usage en production : ce sont normalement des outils de test et développement, en local.

Pour bénéficier de toute la puissance des technologies Apache - MySQL - PHP, il faut installer et configurer chacune de ces composantes de manière classique : le serveur Web Apache qui sert de base, le système de base de données MySQL, l'environnement de programmation PHP, etc.
Pour les gros sites Web, des compétences deviennent indispensables pour tirer pleinement parti des nombreuses fonctionnalités offertes.

Ce qui suit a été testé avec Linux (Ubuntu) et la carte Raspberry Pi modèle B (Raspbian wheezy) avec les versions :

Toutes les installations se feront en lignes de commande !

1. Installation d'un serveur Web Apache

pi@raspberrypi ~ $ sudo apt-get install apache2
...
The following extra packages will be installed:
  apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap ssl-cert
Suggested packages:
  apache2-doc apache2-suexec apache2-suexec-custom openssl-blacklist
The following NEW packages will be installed:
  apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common
  libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap ssl-cert
...

Test de fonctionnement du serveur

Dans un navigateur :
http://localhost/index.html doit afficher la page :

LAMP

Racine du site (Document root)

/var/www

http://localhost/index.html correspond donc au fichier /var/www/index.html

Commandes utiles

Démarrage du serveur

$ sudo service apache2 start

Arrêt du serveur

$ sudo service apache2 stop

Redémarrage du serveur

$ sudo service apache2 restart

2. Installation de PHP

pi@raspberrypi ~ $ sudo apt-get install libapache2-mod-php5
...
The following extra packages will be installed:
  apache2-mpm-prefork libonig2 libqdbm14 php5-cli php5-common
Suggested packages:
  php-pear
The following packages will be REMOVED:
  apache2-mpm-worker
The following NEW packages will be installed:
  apache2-mpm-prefork libapache2-mod-php5 libonig2 libqdbm14 php5-cli
  php5-common
...

Test de fonctionnement

Nous allons créer le fichier /var/www/test.php qui contient le code suivant :

<?php
print "Bonjour";
phpinfo();
?>

On peut utiliser l'éditeur de texte nano :

$ sudo nano

Saisir le code, puis :
^O WriteOut
File Name to Write : /var/www/test.php
^X Exit

Dans un navigateur :
http://localhost/test.php doit afficher la page :

LAMP

3. Installation d'un serveur MySQL

pi@raspberrypi ~ $ sudo apt-get install mysql-server-5.5
...
The following extra packages will be installed:
  heirloom-mailx libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl
  libmysqlclient16 libnet-daemon-perl libplrpc-perl mysql-client-5.5
  mysql-common mysql-server-core-5.5
Suggested packages:
  exim4 mail-transport-agent libipc-sharedcache-perl libterm-readkey-perl
  tinyca
Recommended packages:
  mailx
The following NEW packages will be installed:
  heirloom-mailx libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl
  libmysqlclient16 libnet-daemon-perl libplrpc-perl mysql-client-5.5
  mysql-common mysql-server-5.5 mysql-server-core-5.5
...

Une fenêtre apparaît :

Configuring mysql-server-5.5
New password for the MySQL "root" user: algoud (par exemple)

Ce mot de passe du superutilisateur de MySQL est à conserver précieusement !

Test de fonctionnement

pi@raspberrypi ~ $ mysql -u root -p -e "SHOW DATABASES"
Enter password: ******
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

Commandes utiles

Démarrage du serveur

$ sudo service mysql start

Arrêt du serveur

$ sudo service mysql stop

Redémarrage du serveur

$ sudo service mysql restart

4. Installation du module mysql de PHP

pi@raspberrypi ~ $ sudo apt-get install php5-mysql
...
The following extra packages will be installed:
  libmysqlclient18
The following NEW packages will be installed:
  libmysqlclient18 php5-mysql
...

Test de fonctionnement

Nous allons créer le fichier /var/www/test_mysql.php qui contient le code suivant :

<?php
$connexion = mysql_connect("localhost","root","algoud") or die ("Connexion au serveur impossible ".mysql_error());
$resultat = mysql_query("SHOW DATABASES");
while($ligne = mysql_fetch_array($resultat,MYSQL_ASSOC))
{
   print $ligne['Database']."<br/>";
}
?>

On peut utiliser l'éditeur de texte nano :

$ sudo nano

Saisir le code, puis :
^O WriteOut
File Name to Write : /var/www/test_mysql.php
^X Exit

Dans un navigateur :
http://localhost/test_mysql.php doit afficher la page :

LAMP

5. Installation de l'interface phpMyAdmin

pi@raspberrypi ~ $ sudo apt-get install phpmyadmin
...
The following extra packages will be installed:
  dbconfig-common libmcrypt4 php5-gd php5-mcrypt
Suggested packages:
  libmcrypt-dev mcrypt mysql-server
The following NEW packages will be installed:
  dbconfig-common libmcrypt4 php5-gd php5-mcrypt phpmyadmin
...

Une fenêtre apparaît :

Web server to reconfigure automatically: [*] apache2

Configuring phpmyadmin
Configure database for phpmyadmin with dbconfig-common? Yes

Password of the database's administrative user: algoud (c'est le mot de passe défini lors de l'installation du serveur MySQL)
MySQL application password for phpmyadmin: (laisser le champ vide)

Test de fonctionnement

Dans un navigateur :
http://localhost/phpmyadmin doit afficher la page :

LAMP

En cas de problème, la commande suivante devrait le résoudre :

$ sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

6. Les fichiers .htaccess

Pour rendre actif les fichiers .htaccess il faut modifier le fichier de configuration du serveur Apache : /etc/apache2/sites-available/default

$ sudo nano /etc/apache2/sites-available/default
Remplacer la directive AllowOverride None par AllowOverride All pour le dossier /var/www :
<Directory /var/www/> 
	Options Indexes FollowSymLinks MultiViews 
	AllowOverride All
	Order allow,deny 
	allow from all 
</Directory> 

puis redémarrer le serveur Apache :

$ sudo service apache2 restart

Cryptage des mots de passe

Pour des raisons de sécurité, les mots de passe sont chiffrés.

Par exemple, on veut définir l'utilisateur admin avec le mot de passe Fe45hJ dans le fichier .password

$ htpasswd -c .password admin 
New password: Fe45hJ
Re-type new password: Fe45hJ
Adding password for user admin 

Le fichier .password contient le mot de passe crypté :

$ cat .password
admin:$apr1$C0HfQNxE$ecy12tkKkAXL8FbN6ZiwQ.

7. Les scripts CGI (Common Gateway Interface)

Le fichier de configuration du serveur Apache /etc/apache2/sites-available/default donne l'emplacement du répertoire par défaut des scripts CGI :

/usr/lib/cgi-bin

Test de fonctionnement

Nous allons créer le script CGI en langage Python (version 2.7) /usr/lib/cgi-bin/testcgi.py :

#! /usr/bin/python 
# -*- coding: utf-8 -*- 
print "Content-Type: text/plain ; charset=utf-8\n" 
print "Une page de texte brut en CGI-Python" 

On peut utiliser l'éditeur de texte nano :

$ sudo nano

Saisir le code, puis :
^O WriteOut
File Name to Write : /usr/lib/cgi-bin/testcgi.py
^X Exit

Il faut maintenant donner des droits en exécution sur ce fichier :

$ sudo chmod +x /usr/lib/cgi-bin/testcgi.py 

Dans un navigateur :
http://localhost/cgi-bin/testcgi.py doit afficher la page :

LAMP