Installer un serveur LEMP (Linux EngineX MySQL PHP)
Sommaire
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 :
Notre serveur MySQL est maintenant opérationnel. Nous pouvons le vérifier avec la commande suivante :
service mysql status
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 :
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" :
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 :
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/
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