Installer un serveur LEMP (Linux EngineX MySQL PHP)

I. Présentation

Un serveur LEMP (Linux EngineX MySQL PHP) est un serveur web comportant 4 composants qui sont :

  •  Un système d'exploitation Linux (wheezy dans notre cas)
  •   NginX pour gérer la communication entre le serveur et les clients.
  •   MySQL pour toute la partie base de données.
  •   PHP pour rendre le tout dynamique.

Grâce à un serveur LEMP vous pouvez créer un site web dynamique grâce au PHP et à la base de données MySQL, étant donné qu'il contient tout les éléments nécessaires à la mise en place d'un site web dynamique. Un serveur LEMP regroupe plusieurs éléments qui en font un service complet et stable. Il faut savoir qu'un serveur LEMP est différent d'un serveur LAMP seulement car il utilise NginX en serveur web plutôt qu'Apache. NginX est un serveur web de plus en plus utilisé notamment pour ses performances par rapport à Apache 2.

II. Mise à jours des paquets

On va commencer par mettre à jour notre liste de paquets afin d'avoir les dernières versions de ceux-ci. On saisi pour cela la commande suivante :

apt-get update

III. Installation MySQL

Nous allons ensuite installer le serveur MySQL qui aura pour fonction le traitement et la gestion des bases de données :

apt-get install mysql-server

Nous voyons déjà une information sur la version qui sera installée ce qui peut être une information intéressante, il s'agit de la version 5.5. Nous devrons aussi entrer le mot de passe "super-utilisateur" (ou "root") du serveur MySQL :

LEMP02

Notre serveur MySQL est maintenant opérationnel. Nous pouvons le vérifier avec la commande suivante :

service mysql status
Installation LEMP NGINX
Version MySQL par défaut sous Devian 7 : 5.5

Nous voyons donc bien ici la version du serveur, du protocole qu'il utilise et surtout l'Uptime qui indique le temps depuis lequel le serveur est actif.

IV. Installation Nginx

Nous allons ensuite installer le serveur web lui-même. On prend soin auparavant d'éteindre notre service Apache2 si il existe sur notre serveur :

service apache2 stop

On l'installe ensuite depuis les dépôts :

apt-get install nginx

On va ensuite le démarrer grâce à son initscript présent dans "/etc/init.d/" :

service nginx start

Nous pourrons alors effectuer un premier test de connexion au niveau HTTP en nous rendant sur l'IP de notre serveur depuis un navigateur (http://<ip_serveur>). Nous aurons alors  la page suivante :

Installation LEMP NGINX
Page web d’accueil après l'installation d'NGINX

 

Notre serveur Nginx est maintenant opérationnel. Pour information, nous pouvons tester la configuration de notre serveur Nginx avant de le redémarrer avec la commande "nginx -t" :

Nginx05

Si ce message apparait, c'est que votre configuration est correcte et que vous pouvez redémarrer votre Nginx en étant certain qu'il démarre sans soucis. Pour information, le site par défaut se trouve dans "/usr/share/nginx/www".

V. Installation PHP

On doit, pour télécharger le paquet "php5-fpm", ajouter le dépôt "DotDeb" dans notre fichier "sources.list" :

nano /etc/apt/sources.list

On doit donc ajouter ces deux lignes à la fin du fichier et puis enregistrer :

deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all

On doit ensuit télécharger la signature du dépôt afin de permettre à notre système de vérifier leur authenticité et leur intégrité. On saisit pour cela les commandes suivantes :

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -

On met à nouveau à jour notre liste de paquets pour que les paquets du dépôt "DotDeb" soient présents :

apt-get update

On peut ensuite installer l'ensemble des paquets PHP nécessaire à notre serveur LEMP :

apt-get install php5-cli php5-fpm php5-mysql

Il faut savoir que le paquet "php5-fpm” est un module essentiel pour que PHP fonctionne sur l'environnement Nginx.

VI. Mise en relation Nginx-PHP

Pour mettre en relation Nginx et PHP, il faut modifier le fichier "/etc/nginx/sites-available/default" qui est le site par défaut d'Nginx et ajouter "index.php" dans le champ "index". Il faut également écrire ce paragraphe qui permettra à NginX de gérer le PHP à la fin du même fichier (juste avant le dernier "}") :

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

On redémarre ensuite le service Nginx pour que les modifications de configuration soient prises en compte :

service nginx restart

Nous allons enfin tester l'opérabilité du PHP dans Nginx en créant un fichier "phpinfo" qui nous affichera des informations sur le PHP installé. On créer donc un fichier "/var/www/phpinfo.php" dans lequel nous mettons le texte suivant :

<?php
  phpinfo();
?>

Nous pourrons enfin aller tester si le PHP est opérationnel sur notre serveur LEMP en nous rendant sur la page précédemment créée : http://IPserver/phpinfo.php

VII. Option supplémentaire: phpmyadmin

Afin de tester complètement notre serveur LEMP et ajouter une fonctionnalité supplémentaire qui sera la gestion de notre service MySQL par une interface web, nous allons installer PhpMyAdmin. Ce service nous permettra en effet de tester notre serveur Nginx qui affichera les pages web, notre service PHP-FPM qui s'occupera du traitement PHP et ensuite notre service MySQL avec lequel PhpMyAdmin va interagir. On installe donc PhpMyAdmin ainsi qu'un ensemble de modules et paquets php5 qu'il pourrait utiliser :

apt-get install phpmyadmin php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Lorsque l'on nous demande quel serveur web utiliser, nous devons en cocher aucun et continuer :

LEMP04

On redémarre ensuite le service "php5-fpm" :

service php5-fpm restart

Nous devons ensuite ajouter dans "/etc/nginx/sites-available/default" le texte suivant :

location /phpmyadmin {
root /var/www/;
index index.php;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /var/www/;
index index.php;
fastcgi_index index.php;
}

location /phpMyAdmin {
rewrite ^/* /phpmyadmin last
}

On fait ensuite un lien symbolique pour que le dossier web de PhpMyAdmin soit retrouvé dans "/var/www" et on donne les droits à l'utilisateur "www-data" :

ln -s /usr/share/phpmyadmin /var/www
chown www-data /usr/share/phpmyadmin -Rf

On redémarre à nouveau notre service Nginx pour qu'il prenne en compte les modifications de configuration :

service nginx restart

Pour tester l'opérabilité de notre serveur et de PhpMyAdmin, nous nous rendrons sur l'URL suivante : http://IPServeur/phpmyadmin/

LEMP5

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.

Nombre de posts de cet auteur : 526.Voir tous les posts

One thought on “Installer un serveur LEMP (Linux EngineX MySQL PHP)

  • Voilà un pas à pas remarquablement bien ficelé.
    Je vais l’utiliser pour passer un site scolaire d’Apache vers Nginx et qui me cause quelques soucis de performance dès lors que plus de 15 utilisateurs sont connectés et font appel à des pages contenant 4 misérables requêtes MySql…
    Merci d’avoir partagé ce savoir !
    xxx
    Omer

    Répondre

Répondre à Omer Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.