TP3 Serveur LAMP

Objectif : Installer et configurer un LAMP

 

Les besoins :

Installation Apache 2

Pour installer apache2 nous allons utiliser la commande apt-get install

apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

Puis nous devons ensuite configurer apache via le fichier /etc/apache2/site-available/000-default.conf

Nous avons donc quelque chose qui devrait ressembler à cela :

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Nous devons modifier le dossier qui contiendra les sites que nous voulons ici : /var/www

Il suffit de changer

DocumentRoot /var/www/html

par

DocumentRoot /var/www/

Nous devons ensuite relancer le service apache2 pour que cela prenne effet.

service apache2 restart

Pour tester la configuration, nous allons créer un fichier index.html

<DOCTYPE html>
<html lang="fr">
    <head>
        <title>test</title>
    </head>
    <body>
        <h1>Works!</h1>
    </body>
</html>

Cela devrait vous afficher Works ! sur votre navigateur.

Installation PHP5

Tout d’abord nous devons installer PHP5 et tous ses utilitaires :

apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Il faut ensuite activer PHP5 dans les modules d’apache2 via la commande sudo a2enmod userdir

a2enmod php5

Il faut ensuite redémarrer apache2 pour créer les fichiers de configuration php5 de apache.

service apache2 restart

Pour tester PHP, nous allons créer un fichier xilim.php dans /var/www

<DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <title>test</title>
    </head>
    <body>
        <h4>XILIM, c'est 5 années d'experience a votre service !</h4>
        <ul>
            <?php
                for($annee = 2010 ; $annee <= 2016 ; $annee++){
                    echo "<li>$annee</li>" ;
                }
            ?>
        </ul>
    </body>
</html>

Il suffit ensuite de se rendre a l’adresse : http://ADDRESSE_IP/xilim.php

Nous devons obtenir ceci :

XILIM, c'est 5 années d'experience a votre service !

    .2010
    .2011
    .2012
    .2013
    .2014
    .2015
    .2016

Cela prouve que PHP est bien installé !

Configuration répertoire WEB utilisateur

Nous voulons que chaque utilisateur de la machine puisse créer des page dans sont dossier personnelle comme ceci /home/$USER/public_html

Sur notre navigateur nous voulons par exemple taper :

http://ADDRESSE_IP/~UTILISATEUR

 

Pour cela nous devons activer le module UserDir d’apache2

a2enmod userdir

il faut ensuite modifier le fichier /etc/apache2/mods-available/php5.conf  comme ceci (ajouter les 5 dernières lignes en temps que commentaires) :

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+\.phps$">
    SetHandler application/x-httpd-php-source
    # Deny access to raw php sources by default
    # To re-enable it's recommended to enable access to the files
    # only in specific virtual host or directory
    Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(p[345]?|t|tml|ps)$">
    Require all denied
</FilesMatch>

# Running PHP scripts in user directories is disabled by default
#
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

Puis redémarrer pour que cela prennent effet :

service apache2 restart

Il faut ensuite créer le dossier public_html dans votre répertoire personnel.

Pour tester la configuration, nous allons copier le fichier xilim.php dans notre nouveau dossier personnel :

cp /var/www/xilim.php /home/user/public_html/

Il suffit ensuite de taper l’url :

http://ADDRESSE_IP/~user/xilim.php

 

Installation MYSQL

Pour MySQL nous allons utiliser apt pour installer les dépendance php5 et apache pour la compatibilité entre celles-ci :

apt-get install mysql-server php5-mysql

Il suffit ensuite de taper le mot de passe root ici nous allons utiliser « azerty »

Création de table MySQL

Nous allons tous d’abord créer une arborescence comme ceci /home/devSiteXILIM/sql

cd /home
mkdir devSiteXILIM/ && mkdir devSiteXILIM/sql

Puis nous allons créer un fichier .sql que nous allons exécuter plus tard dans mysql :

gedit xilim.sql

 

drop database if exists xilim ;
create database xilim ;
use xilim;

create table Employe (
	idEmploye int not null auto_increment ,
	nomEmploye varchar(20) not null ,
	prenomEmploye varchar(20) not null ,
	primary key(idEmploye)
) ;

insert into Employe(nomEmploye,prenomEmploye) values('GENPRI','Louis') ;
insert into Employe(nomEmploye,prenomEmploye) values('KEHRE','Armelle') ;
insert into Employe(nomEmploye,prenomEmploye) values('MASTO','Yvan') ;
insert into Employe(nomEmploye,prenomEmploye) values('TINCAP','Pierre') ;
insert into Employe(nomEmploye,prenomEmploye) values('CAPLIEZ','Mathier') ;

il faut ensuite exécuter le script sql avec la commande mysql :

mysql -h localhost -u root -p < /home/devSiteXILIM/sql/xilim.sql

Pour vérifier que notre base de données a bien été créée ainsi que sa table et ses attributs, il faut se connecter à la base via la commande :

mysql -h localhost -u root -p

Vous voici maintenant sur le cli de mysql pour voir vos table il suffit d’executer la requete SQL :

show databases ;

Cela devrait vous retourner ceci :

mysql> show databases ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| xilim              |
+--------------------+
4 rows in set (0.00 sec)

Nous pouvons aussi afficher le contenue de la table Employe

mysql> use xilim ;

Database changed

mysql> select * from Employe ;
+-----------+------------+---------------+
| idEmploye | nomEmploye | prenomEmploye |
+-----------+------------+---------------+
|         1 | GENPRI     | Louis         |
|         2 | KEHRE      | Armelle       |
|         3 | MASTO      | Yvan          |
|         4 | TINCAP     | Pierre        |
|         5 | CAPLIEZ    | Mathier       |
+-----------+------------+---------------+
5 rows in set (0.00 sec)

 

Utilisation d’une base de données avec PHP

Tout d’abord, pour exploiter les données mysql avec PHP assurez vous d’avoir installer le paquet php5-mysql.

apt-get install php5-mysql

Ensuite, nous allons créer le fichier php qui exécutera nos requête SQL :

gedit /var/www/collaborateurs.php

 

<DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <title>test</title>
    </head>
    <body>

	<table style="width:40%">
  	<tr>
    		<th><center>Nom</center></th>
    		<th><center>Prenom</center></th>
	</tr>
            <?php

                $dsn = "mysql:host=localhost;dbname=xilim" ;
		$connexion = new PDO($dsn,"root","azerty") ;
		$select = $connexion->query("select * from Employe") ;
		
		while($enregistrement = $select->fetch(PDO::FETCH_OBJ)){

			echo "<tr>" ;
			echo "<td><center>" , $enregistrement->nomEmploye , "</center></td>" ;
			echo "<td><center>" , $enregistrement->prenomEmploye , "</center></td>" ;
			echo "</tr>" ;

		}

            ?>
	</table>

    </body>
</html>

Cela devrait vous retourner un tableau dans lequel vous retrouverez toute les données de la table Employe

Encodage UTF8

Pour éviter les caractere érroné de la lanque francaise tel que le « é » ou le « ç » ect … il faut convertir notre base en UTF-8 et configurer mysql pour qu’il le prennent en charge

pour cela il faut modifier le fichier /etc/mysql/my.cnf

Attention il faut ajouter chaque ligne a sa catégorie !
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

Il faut ensuite re créer la table grace au script sql xilim.sql les données seront maintenant en UTF-8

mysql -h localhost -u root -p < /home/devSiteXILIM/sql/xilim.sql

Commande SQL pour verifier le jeu de caractere :

mysql> use xilim ;
mysql> show variables like 'char%';

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

 

Il faut ensuite modifier le script PHP pour que PHP sache que cela est bien de l’UTF-8

il faut modifier le script de connection, voici ce que nous avions avant :

<?php
        $dsn = "mysql:host=localhost;dbname=xilim" ;
		$connexion = new PDO($dsn,"root","azerty") ;
		$select = $connexion->query("select * from Employe") ;
?>

nous allons devoir insérer notre « instruction » pour set le jeux de caractere en UTF-8

<?php

                $dsn = "mysql:host=localhost;dbname=xilim" ;
		$connexion = new PDO($dsn,"root","azerty") ;
		$connexion->exec("SET CHARACTER SET utf8");
		$select = $connexion->query("select * from Employe") ;

?>

Il faut ensuite vérifier que les caractere spéciaux sont bien prises en compte.