Recherche de site Web

Comment installer Nginx, MariaDB 10, PHP 7 (pile LEMP) dans 16.10/16.04


La pile LEMP est un acronyme qui représente un groupe de packages (OS Linux, serveur Web Nginx, base de données MySQL\MariaDB et langage de programmation dynamique côté serveur PHP) qui sont utilisés pour déployer des applications Web dynamiques et les pages Web.

Ce tutoriel vous guidera sur la façon d'installer une pile LEMP avec MariaDB 10, PHP 7 et HTTP 2.0 Prise en charge de Nginx sur les éditions Ubuntu 16.10 et Ubuntu 16.04 serveur/ordinateur de bureau.

Exigences

  1. Installation d'Ubuntu 16.04 Server Edition [les instructions fonctionnent également sur Ubuntu 16.10]

Étape 1 : Installer le serveur Web Nginx

1. Nginx est un serveur Web moderne et économe en ressources utilisé pour afficher des pages Web aux visiteurs sur Internet. Nous commencerons par installer le serveur Web Nginx à partir des référentiels officiels Ubuntu en utilisant la ligne de commande apt.

sudo apt-get install nginx

2. Ensuite, exécutez les commandes netstat et systemctl afin de confirmer si Nginx est démarré et se lie sur le port 80.

netstat -tlpn

sudo systemctl status nginx.service

Une fois que vous avez la confirmation que le serveur est démarré, vous pouvez ouvrir un navigateur et accéder à l'adresse IP de votre serveur ou à l'enregistrement DNS à l'aide du protocole HTTP afin de visiter la page Web par défaut de Nginx.

http://IP-Address

Étape 2 : Activer le protocole Nginx HTTP/2.0

3. Le protocole HTTP/2.0 qui est construit par défaut dans la dernière version des binaires Nginx sur Ubuntu 16.04 fonctionne uniquement en conjonction avec SSL et promet une énorme amélioration de la vitesse de chargement des pages Web SSL.

Pour activer le protocole dans Nginx sur Ubuntu 16.04, accédez d'abord aux fichiers de configuration des sites disponibles Nginx et sauvegardez le fichier de configuration par défaut en exécutant la commande ci-dessous.

cd /etc/nginx/sites-available/
sudo mv default default.backup

4. Ensuite, à l'aide d'un éditeur de texte, créez une nouvelle page par défaut avec les instructions ci-dessous :

server {
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;

        root /var/www/html;

        index index.html index.htm index.php;

        server_name 192.168.1.13;

        location / {
                try_files $uri $uri/ =404;
        }

        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_dhparam  /etc/nginx/ssl/dhparam.pem;
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 180m;
        resolver 8.8.8.8 8.8.4.4;
        add_header Strict-Transport-Security "max-age=31536000;
        #includeSubDomains" always;


        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }

}

server {
       listen         80;
       listen    [::]:80;
       server_name    192.168.1.13;
       return         301 https://$server_name$request_uri;
}

L'extrait de configuration ci-dessus permet l'utilisation de HTTP/2.0 en ajoutant le paramètre http2 à toutes les directives d'écoute SSL.

De plus, la dernière partie de l'extrait inclus dans la directive du serveur est utilisée pour rediriger tout le trafic non SSL vers l'hôte par défaut SSL/TLS. Remplacez également la directive server_name pour qu'elle corresponde à votre propre adresse IP ou enregistrement DNS (FQDN de préférence).

5. Une fois que vous avez terminé de modifier le fichier de configuration par défaut de Nginx avec les paramètres ci-dessus, générez et répertoriez le fichier et la clé du certificat SSL en exécutant les commandes ci-dessous.

Remplissez le certificat avec vos propres paramètres personnalisés et faites attention au paramètre Nom commun pour qu'il corresponde à votre enregistrement DNS FQDN ou à l'adresse IP de votre serveur qui sera utilisée pour accéder à la page Web.

sudo mkdir /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
ls /etc/nginx/ssl/

6. Créez également un chiffrement DH fort, qui a été modifié dans le fichier de configuration ci-dessus sur la ligne d'instruction ssl_dhparam, en exécutant la commande ci-dessous :

sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

7. Une fois la clé Diffie-Hellman créée, vérifiez si le fichier de configuration Nginx est correctement écrit et peut être appliqué par le serveur Web Nginx et redémarrez le démon pour refléter les modifications en exécutant les commandes ci-dessous.

sudo nginx -t
sudo systemctl restart nginx.service

8. Afin de tester si Nginx utilise le protocole HTTP/2.0, exécutez la commande ci-dessous. La présence du protocole annoncé h2 confirme que Nginx a été configuré avec succès pour utiliser le protocole HTTP/2.0. Tous les navigateurs modernes et récents devraient prendre en charge ce protocole par défaut.

openssl s_client -connect localhost:443 -nextprotoneg ''

Étape 3 : Installer l'interpréteur PHP 7

Nginx peut être utilisé avec l'interpréteur de langage de traitement dynamique PHP pour générer du contenu Web dynamique à l'aide du gestionnaire de processus FastCGI obtenu en installant le package binaire php-fpm à partir des référentiels officiels Ubuntu.

9. Afin de récupérer PHP7.0 et les packages supplémentaires qui permettront à PHP de communiquer avec le serveur Web Nginx, exécutez la commande ci-dessous sur la console de votre serveur :

sudo apt install php7.0 php7.0-fpm 

10. Une fois l'interpréteur PHP7.0 installé avec succès sur votre machine, démarrez et vérifiez le démon php7.0-fpm en émettant le code ci-dessous commande:

sudo systemctl start php7.0-fpm
sudo systemctl status php7.0-fpm

11. Le fichier de configuration actuel de Nginx est déjà configuré pour utiliser le gestionnaire de processus PHP FastCGI afin de serveur de contenu dynamique.

Le bloc serveur qui permet à Nginx d'utiliser l'interpréteur PHP est présenté dans l'extrait ci-dessous, donc aucune autre modification du fichier de configuration par défaut de Nginx n'est requise.

location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

Vous trouverez ci-dessous une capture d'écran des instructions que vous devez décommenter et modifier dans le cas d'un fichier de configuration par défaut Nginx original.

12. Pour tester la relation du serveur Web Nginx avec le gestionnaire de processus PHP FastCGI, créez un fichier de configuration de test PHP info.php en exécutant la commande ci-dessous et vérifiez les paramètres en visitant ce fichier de configuration. en utilisant l'adresse ci-dessous : http://IP_or domain/info.php.

sudo su -c 'echo "<?php phpinfo(); ?>" |tee /var/www/html/info.php'

Vérifiez également si le protocole HTTP/2.0 est annoncé par le serveur en localisant la ligne $_SERVER['SERVER_PROTOCOL'] sur le bloc de variables PHP, comme illustré dans la capture d'écran ci-dessous.

13. Afin d'installer des modules PHP7.0 supplémentaires, utilisez la commande apt search php7.0 pour trouver un module PHP et l'installer.

Essayez également d'installer les modules PHP suivants qui peuvent s'avérer utiles si vous envisagez d'installer WordPress ou un autre CMS.

sudo apt install php7.0-mcrypt php7.0-mbstring

14. Pour enregistrer les modules PHP supplémentaires, redémarrez simplement le démon PHP-FPM en exécutant la commande ci-dessous.

sudo systemctl restart php7.0-fpm.service

Étape 4 : Installer la base de données MariaDB

15. Enfin, afin de compléter notre pile LEMP, nous avons besoin du composant de base de données MariaDB pour stocker et gérer les données du site Web.

Installez le système de gestion de base de données MariaDB en exécutant la commande ci-dessous et redémarrez le service PHP-FPM afin d'utiliser le module MySQL pour accéder à la base de données.

sudo apt install mariadb-server mariadb-client php7.0-mysql
sudo systemctl restart php7.0-fpm.service

16. Pour sécuriser l'installation de MariaDB, exécutez le script de sécurité fourni par le package binaire à partir des référentiels Ubuntu qui vous demandera de définir un mot de passe root, de supprimer les utilisateurs anonymes, de désactiver la connexion root à distance et de supprimer la base de données de test.

Exécutez le script en exécutant la commande ci-dessous et répondez à toutes les questions par oui. Utilisez la capture d'écran ci-dessous comme guide.

sudo mysql_secure_installation

17. Pour configurer MariaDB afin que les utilisateurs ordinaires puissent accéder à la base de données sans les privilèges système sudo, accédez à l'interface de ligne de commande MySQL avec les privilèges root et exécutez les commandes ci-dessous sur l'interpréteur MySQL :

sudo mysql 
MariaDB> use mysql;
MariaDB> update user set plugin=’‘ where User=’root’;
MariaDB> flush privileges;
MariaDB> exit

Enfin, connectez-vous à la base de données MariaDB et exécutez une commande arbitraire sans privilèges root en exécutant la commande ci-dessous :

mysql -u root -p -e 'show databases'

C'est tout ! Vous disposez désormais d'une pile LEMP configurée sur les serveurs Ubuntu 16.10 et Ubuntu 16.04 qui vous permet de déployer des applications Web dynamiques complexes pouvant interagir avec des bases de données.