Comment installer Nginx, Mariadb 10, PHP 7 (pile LEMP) en 16.10/16.04

Comment installer Nginx, Mariadb 10, PHP 7 (pile LEMP) en 16.10/16.04

Le Lemp Stack est un acronyme qui représente un groupe de packages (Linux OS, Nginx Web Server, MySQL \ Mariadb Database et PHP Server Side Dynamic Language) qui sont utilisés pour déployer des applications Web dynamiques et des pages Web.

Ce tutoriel vous guidera sur la façon d'installer une pile LEMP avec Mariadb 10, Php 7 et Http 2.0 Soutien Nginx sur Ubuntu 16.dix et Ubuntu 16.04 Éditions de serveur / de bureau.

Exigences

  1. Installation d'Ubuntu 16.04 Server Edition [Les instructions fonctionnent également sur Ubuntu 16.dix]]

Étape 1: Installez le serveur Web Nginx

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

$ sudo apt-get install nginx 
Installez nginx sur Ubuntu 16.04

2. Ensuite, émettez les commandes NetStat et SystemCTL afin de confirmer si Nginx est démarré et se lie au port 80.

$ netstat -tlpn 
Vérifier la connexion du port réseau Nginx
$ sudo systemctl status nginx.service 
Vérifier l'état du service NGINX

Une fois que vous avez confirmé 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 
Vérifier la page Web de Nginx

Étape 2: activer Nginx http / 2.0 Protocole

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

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

$ cd / etc / nginx / sites-disponible / $ sudo mv défaut par défaut.sauvegarde 
Fichier de configuration de la sauvegarde des sites Nginx

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

Server écouter 443 ssl http2 default_server; écouter [::]: 443 ssl http2 default_server; root / var / www / html; Index index.index html.index HTM.PHP; server_name 192.168.1.13 Emplacement / try_files $ uri $ uri / = 404;  ssl_certificate / etc / nginx / ssl / nginx.CRT; ssl_certificate_key / etc / nginx / ssl / nginx.clé; SSL_PROTOCOLS TLSV1 TLSV1.1 TLSV1.2; ssl_prefer_server_ciphers sur; 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 partagée: SSL: 20m; SSL_SESSION_TRETHEOUT 180M; Resolver 8.8.8.8 8.8.4.4; add_header strict-transport-security "max-age = 31536000; #includsubdomains" toujours; Emplacement ~ \.php $ inclure des extraits / fastcgi-php.conf; fastcgi_pass Unix: / run / php / php7.0-FPM.chaussette;  emplacement ~ / \.ht nier tout;  serveur écouter 80; Écoutez [::]: 80; server_name 192.168.1.13 retour 301 https: // $ server_name $ request_uri;  
Activer le protocole Nginx HTTP 2

L'extrait de configuration ci-dessus permet d'utiliser Http / 2.0 en ajoutant le http2 Paramètre à toutes les directives d'écoute SSL.

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

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

Remplissez le certificat avec vos propres paramètres personnalisés et faites attention à Nom commun Réglage pour correspondre à 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.clé -out / etc / nginx / ssl / nginx.crt $ ls / etc / nginx / ssl / 
Générer un certificat SSL et une clé pour Nginx

6. Créez également un fort DH CYPHER, qui a été modifié sur le fichier de configuration ci-dessus ssl_dhparam ligne d'instructions, en émettant la commande ci-dessous:

$ sudo openssl dhparam -out / etc / nginx / ssl / dhparam.PEM 2048 
Créer une clé Diffie-Hellman

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

$ sudo nginx -t $ sudo systemctl redémarrer nginx.service 
Vérifier la configuration de Nginx

8. Afin de tester si Nginx utilise Http / 2.0 Protocole émettre la commande ci-dessous. La présence de h2 Le protocole annoncé confirme que Nginx a été configuré avec succès pour utiliser HTTP / 2.0 Protocole. Tous les navigateurs à jour modernes devraient prendre en charge ce protocole par défaut.

$ openssl s_client -Connect localhost: 443 -NextProtOneg "
Tester nginx http 2.0 Protocole

Étape 3: Installez l'interprète PHP 7

Nginx peut être utilisé avec un interprète de langage de traitement dynamique PHP pour générer du contenu Web dynamique à l'aide de FastCGI Process Manager obtenue en installant le php-fpm Package binaire des référentiels officiels d'Ubuntu.

9. Afin de saisir Php7.0 et les packages supplémentaires qui permettra à PHP de communiquer avec le serveur Web Nginx émettent la commande ci-dessous sur la console de votre serveur:

$ sudo apt installer php7.0 PHP7.0-FPM 
Installez PHP 7 et PHP-FPM pour NGIN

dix. Une fois la Php7.0 L'interprète a été installé avec succès sur votre machine, démarrez et vérifiez php7.0-FPM démon en émettant la commande ci-dessous:

$ sudo systemctl start php7.0-fpm $ sudo systemctl status php7.0-FPM 
Démarrer et vérifier le service PHP-FPM

11. Le fichier de configuration actuel de Nginx est déjà configuré pour utiliser Php fastcgi Process Manager afin de servir le contenu dynamique.

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

Emplacement ~ \.php $ inclure des extraits / fastcgi-php.conf; fastcgi_pass Unix: / run / php / php7.0-FPM.chaussette;  

Vous trouverez ci-dessous une capture d'écran de quelles instructions vous avez besoin pour décommenter et modifier est le cas d'un fichier de configuration par défaut de Nginx d'origine.

Activer PHP FastCGI pour Nginx

12. Pour tester la relation de serveur Web Nginx avec le gestionnaire de processus PHP FastCGI Créez un PHP Info.php Test de fichier de configuration en émettant la commande ci-dessous et vérifiez les paramètres en visitant ce fichier de configuration à l'aide de l'adresse ci-dessous: http: // ip_or domain / info.php.

$ sudo su -c 'echo "" | tee / var / www / html / info.php ' 
Créer un fichier d'informations PHP Vérifiez les informations PHP FastCGI

Vérifiez également si Http / 2.0 Le protocole est annoncé par le serveur en localisant la ligne $ _Server ['server_protocol'] sur les variables PHP bloquez comme illustré sur la capture d'écran ci-dessous.

Vérifiez http 2.0 Informations sur le protocole

13. Afin d'installer plus Php7.0 les modules utilisent le Recherche APT PHP7.0 commande pour trouver un module PHP et l'installer.

Essayez également d'installer les modules PHP suivants qui peuvent être utiles au cas où vous prévoyez d'installer WordPress ou d'autres CMS.

$ sudo apt installer php7.0-mcrypt php7.0 mbstring 
Installez les modules PHP 7

14. Pour enregistrer les modules PHP supplémentaires, il suffit de redémarrer Php-fpm démon en émettant la commande ci-dessous.

$ sudo systemctl redémarrer php7.0-FPM.service 

Étape 4: Installez la base de données MARIADB

15. Enfin, afin de terminer notre Lemp pile Nous avons besoin du composant de la base de données MARIADB pour stocker et gérer les données du site Web.

Installer Mariadb Système de gestion de la base de données en exécutant la commande ci-dessous et redémarrez Php-fpm Service afin d'utiliser le module MySQL pour accéder à la base de données.

$ sudo apt installer MariaDB-Server MariaDB-Client Php7.0-Mysql $ sudo systemctl redémarrer php7.0-FPM.service 
Installez MariaDB pour Nginx

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 demanderont de définir un mot de passe racine, de supprimer les utilisateurs anonymes, de désactiver la connexion racine à distance et de supprimer la base de données de test.

Exécutez le script en émettant la commande ci-dessous et répondez à toutes les questions avec Oui. Utilisez la capture d'écran ci-dessous comme guide.

$ sudo mysql_secure_installation 
Sécuriser l'installation de MariaDB pour nginx

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

$ sudo mysql mariaDB> Utiliser mysql; MARIADB> Mettre à jour le jeu d'utilisateurs plugin = "où user =" root "; MariaDB> Privilèges Flush; MariaDB> 
Autorisations utilisateur de MariaDB

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

$ mysql -u root -p -e 'afficher des bases de données' 
Vérifiez les bases de données MARIADB

C'est tout! Maintenant tu as un Lemp Stack configuré sur Ubuntu 16.dix et Ubuntu 16.04 serveur qui vous permet de déployer des applications Web dynamiques complexes qui peuvent interagir avec les bases de données.