LEMP : Installer et configurer Nginx, PHP7, MariaDB en 4 étapes

Héberger soi même son serveur web est une bonne pratique pour ceux qui souhaitent un control et une optimisation complète de leur système. LEMP (Linux, Engine-X / Nginx, MariaDB or Mysql, PHP) est la stack web la plus populaire pour faire fonctionner votre site avec les meilleures performances.

Afin de le faire fonctionner, vous allons tout d’abord voir comment installer Nginx, puis PHP7-FPM, comment créer une base de données avec MariaDB, et finalement configurer un site web.

Ce tutoriel est écrit pour un système d’exploitation sous Debian, mais il peut être également utilisé avec Ubuntu et Mint, en ajoutant sudo avant chaque ligne de commande.

Pourquoi choisir une stack LEMP de nos jours ? Hier encore, tout le monde utilisait Apache et Mysql. mais le monde de l’hébergement web a connu de grands évolutions ces dernières années avec l’apparition des serveurs web légers et une attention plus accrue aux modèles de licences.

Nginx, comme Lighttpd avant lui, est un serveur web léger, offrant de meilleures performances, consommant moins de ressources, et implémentant les standards du web rapidement (comme HTTP2). C’est pourquoi, beaucoup d’hébergeurs et d’administrateur systèmes préfèrent maintenant utiliser Nginx sur Apache.

MariaDB, quand à lui, est un fork de Mysql réalisé en 2009, lorsque qu’Oracle a acheté celui ci. La commanuté craignant qu’Oracle change le type de licence, et propulsé par Michael Widenius (le cofondateur de Mysql), MariaDB a été crée sous licence GNU General Public 2. Celui ci est entirement compatible avec Mysql, et géré par la communauté.

Voici quelques chiffres intéressants sur l’état du marché, l’utilisation et la progression de la stack LEMP :

  • • Nginx est maintenant utilisé en production par 35% des serveurs.
  • • Apache est utilisé par moins de 50% du marché web.
  • • Durant les 5 dernière années, la part d’utilisation en production de Nginx a augmenté de 20%, tandis que celle d’Apache a baissé de 20%.
  • • PHP fait tourner 83% de tous les sites web mondiaux, évoluant de 6% depuis 5 ans.
  • • PHP7 a été lancé en décembre 2015 et est maintenant utilisé par 10% des sites utilisant PHP.

Source : Nginx market share evolutionusage of PHP as backend languageusage of PHP7 vs PHP5.

Avant de commencer votre installtion, pensez à mettre à jour votre serveur :

apt update && apt dist-upgrade

Installation de Nginx

Nous utiliserons la version de Nginx disponible depuis les dépots officiels Debian, et configurerons quelques valeurs :

apt install nginx
vi /etc/nginx/nginx.conf

client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 4 16k;
fastcgi_buffers 16 16k; 
fastcgi_buffer_size 32k;

Nous pouvons maintenant redémarrer Nginx pour appliquer nos changements :
service nginx restart

Installation de PHP7

PHP7.0 est la version disponible par défaut dans les dépots debian. Si vous souhaitez une version plus à jour (PHP7.2 à l’heure ou j’écris cet article), vous pouvez utiliser le dépot fournit par Ondrej Sury, avec la dernière version de PHP pour debian et ubuntu.

apt install php7.0-fpm php7.0-mysql php7.0-common php7.0-gd php7.0-json php7.0-cli php7.0-curl php7.0-xml php7.0-zip php7.0-mbstring

Une fois installé, vous devez configurer ces valeurs :

vi /etc/php/7.0/fpm/pool.d/www.conf

pm.max_children = 10
pm.max_requests = 200

vi /etc/php/7.0/fpm/php.ini

;date.timezone = America/Cayenne
upload_max_filesize = 8M
max_execution_time = 60
;max_input_vars = 5000

Vous pouvez maintenant redémarrer le service pour appliquer les changements :
service php7-fpm restart

Installation de MariaDB

Vous pouvez maintenant installer et configurer MariaDB. Je préfère personnellement utiliser celui ci, mais Mysql fonctionne de la même manière. Si vous souhaitez utiliser Mysql, vous devez juste remplacer « mariadb » par « mysql-server » dans la commande d’installation.

Par défaut, MariaDB n’est pas sécurisé et contient des données de tests. Nous allons changer cela pour l’assainir avec le script mysql_secure_installation, qui est fournit lors de l’installation :

apt install mariadb
mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): Type enter
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password: Your password (at least 12 caracteres with letters and special caracteres)
Re-enter new password: Your password (at least 12 caracteres with letters and special caracteres)
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

Vous pouvez ajouter ces valeurs à la configuration par défaut, pour augmenter le cache et la taille d’InnoDB :

vi /etc/mysql/mariadb.conf.d/50-server.cnf

query_cache_limit       = 2M
query_cache_size        = 32M
[mysqld]
innodb_buffer_pool_instances = 1
innodb_buffer_pool_size = 79M
[mariadb]
aria_pagecache_buffer_size = 2M

Et maintenant, comme après chaque modification, redémarrez le service :
service mariadb restart

Configurer un site web pour votre serveur LEMP

Si vous souhaitez utiliser un CMS, je vous invite à regarder cet article pour facilement installer WordPress en 3 étapes.

Autrement, voici une configuration basique pour afficher une page avec vos informations techniques.

Pour commencer, vous devez désactiver le site par défaut de Nginx, puis créer la page que vous voulez afficher et lui attribuer la propriété à l’utilisateur système www-data :

 

unlink /etc/nginx/sites-enabled/default
vi /var/www/index.php

<?php phpinfo(); ?>

chown www-data -R /var/www/index.php

Ensuite, nous pouvons créer un nouveau vhost dans Nginx :

vi /etc/nginx/sites-availables/website

server {
server_name www.website.com;
listen 80;
port_in_redirect off;
access_log /var/log/nginx/website/access.log;
error_log /var/log/nginx/website/error.log error;

root /var/www/;
index index.php;

location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

Enfin, il ne vous reste plus qu’à créer un dossier de logs en lui attribuant la propriété à www-data :

mkdir /var/log/nginx/website/
chown -R www-data /var/log/nginx/website/

Vous avez maintenant un serveur web sous LEMP fonctionnel avec Nginx, PHP7 et MariaDB. Visitez votre page http://localhost/ pour voir le résultat et tous les détails de votre configuration.

Sources

Laisser un commentaire