J’ai récemment migré le blog sur un nouveau VPS de chez Scaleway et j’ai donc eu l’occasion de remonter un serveur web complet pour accueillir le blog.
J’ai choisi d’utiliser NGinx depuis plusieurs mois déjà de part sa grande flexibilité et ses performances bien meilleures qu’Apache.
J’ai décidé de partager avec vous l’installation d’un serveur LEMP en utilisant la dernière version NGinx, MariaDB (le fork open source de MySQL) et PHP 7 sorti l’été dernier.
L’ensemble de la procédure se fera sous Debian 8, la dernière version de Debian, mais elle peut être facilement adaptée à de nombreuses autres distributions.
Pré requis
– Un serveur sous Debian 8
– Un accès SSH à ce serveur
Installation des paquets LEMP
La dernière version d’NGinx n’est pas disponible sur les repos officiels de Debian, nous ajouterons donc les repos d’NGinx.org ; de même PHP 7 n’est disponible que sur les repos dotdeb.org pour le moment. Il faut donc ajouter ces sources à notre fichier /etc/apt/sources.list
1 2 3 4 5 6 7 8 9 10 | echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list echo "deb-src http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list echo "deb http://packages.dotdeb.org jessie all" >> /etc/apt/sources.list echo "deb-src http://packages.dotdeb.org jessie all" >> /etc/apt/sources.list cd /tmp wget http://nginx.org/keys/nginx_signing.key wget https://www.dotdeb.org/dotdeb.gpg apt-key add nginx_signing.key apt-key add dotdeb.gpg apt-get update |
Nous allons maintenant installer NGinx et PHP 7.
1 | apt-get install nginx php7.0-mysql php7.0-fpm php7.0-curl |
Et pour terminer nous allons installer MariaDB. Lors de l’installation il faudra choisir le mot de passe de l’utilisateur root.
1 | apt-get install mariadb-server mariadb-client |
Pour finaliser l’installation de MariaDB nous allons lancer la commande suivante en laissant toutes les options par défaut.
1 | mysql_secure_installation |
Nous en avons donc terminé pour l’installation des paquets préliminaires. Nous allons passer à la configuration.
Configuration du serveur
Dans un premier temps nous allons éditer le fichier /etc/php/7.0/fpm/php.ini et modifier la ligne cgi.fix_pathinfo en enlever le point virgule et en passant sa valeur à 0 de telle manière :
1 | cgi.fix_pathinfo=0 |
Puis nous allons configurer NGinx pour qu’il s’exécute avec l’utilisateur www-data. Pour cela nous allons éditer le fichier /etc/nginx/nginx.conf et modifier la ligne user. Il est également possible de modifier la variable worker-process avec le nombre de coeurs disponibles sur votre serveur.
1 2 | user www-data; worker_processes 2; |
Désormais nous allons créer notre vhost NGinx pour utiliser PHP. Nous faisons une sauvegarde du fichier de configuration par défaut
1 | mv /etc/nginx/conf.d/default.conf /etc/nginx/default.conf.bak |
Et nous éditons /etc/nginx/conf.d/default.conf avec les valeurs suivantes :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | server { listen 80; server_name localhost; root /var/www/html; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
Pour terminer nous n’avons plus qu’à redémarrer nos services :
1 | systemctl restart nginx.service && systemctl restart php7.0-fpm.service |
Nous allons créer un fichier php pour vérifier que tout fonctionne correctement :
1 2 3 | mkdir -p /var/www/html echo '<?php phpinfo(); ?>' > /var/www/html/index.php chown -R www-data:www-data /var/www/ |
En chargeant l’url de notre serveur http://ip_serveur on obtient nos différentes info PHP.
Nous avons donc un serveur Web prêt à l’emploi qui peut être utilisé pour de nombreuses applications.
Je vous propose de nous retrouver dans un prochain article pour découvrir comment installer WordPress en HTTPS sur notre serveur LEMP.